1 Jive功能需求
Jive功能需求分析类似于一个新系统的需求分析。只有了解Jive系统实现了哪些论坛功能,才能进一步研究和学习它是怎样巧妙、优雅地实现这些功能的。
论坛系统是网络交流的一种主要互动功能系统,如图3-1所示。通过论坛系统,用户可以共同就某个话题不断进行讨论,通过发贴功能发布新的话题,通过回贴功能回复别人的话题。Jive论坛系统可以允许管理员动态地创建新的论坛、编辑论坛的内容、设置论坛过滤信息以及管理注册用户等。
图3-1 Jive用例图
在Jive论坛系统中,用户角色和权限是紧密联系在一起的。主要分两大角色:普通用户和管理员,具体的表现形式是通过权限组合来体现的。管理方面的权限有:
· SYSTEM_ADMIN,系统管理员,可以管理整个系统。
· FORUM_ADMIN,论坛管理员,可以管理某个特定的论坛。
· USER_ADMIN和GROUP_ADMIN,用户和组管理员,可以管理一些特定用户和用户组。
论坛的读写权限包括:读权限,创建一个新主题,创建一个新的帖子等。
Jive中没有明确定义普通用户和管理员角色,而是直接通过以上权限组合和具体用户直接建立联系,并将这种直接联系保存到数据库中。
在权限不是很复杂的情况下,这种没有引入角色的做法比较简单直接。但由于用户和权限直接挂钩,而用户和权限都可能在不断地动态变化,那么它们之间由于联系太直接和紧密,对各自变化形成了限制。所以,对于复杂的权限系统,引入了基于角色的权限系统,这将在以后章节中进一步讨论。
Jive论坛业务对象主要分为Forum、ForumThread和ForumMessage,它们之间的关系如图3-2所示。
每个论坛Forum包含一系列ForumThread(主题),而每个主题都是由很多内容帖子ForumMessage组成的,这是一个聚集关系。这3种对象中每一个对象都涉及到对象数据的创建、编辑、查询和删除,这些对象数据分别保存在数据库中。这3个对象对于不同的角色可操作访问权限是不一样的,只有系统管理员和论坛管理员可以对Forum相关数据实行操作,普通用户可以创建或编辑ForumThread和ForumMessage。
Jive论坛为了实现不同用户对不同基本对象的不同操作权限,通过设定一个统一的入口,在这个入口将检查客户端每次对数据的操作权限,如图3-3所示。
图3-2 基本对象关系图 图3-3 入口示意图
客户端每次对数据库的操作,都要经过ForumFactory入口进入。在ForumFactory中会动态生成一个访问控制代理ForumFactoryProxy,通过ForumFactoryProxy检查客户端访问方法是否符合整体权限访问控制要求。
下面将从ForumFactory作为Jive论坛系统分析入手,结合设计模式逐步分解论坛功能的具体实现。