问题描述
我想对以下行为进行建模:当管理员创建博客文章时,与用户创建博客文章时相比,情况有所不同,例如,版主参与创建博客文章用例,因为他验证博客文章。但是,当管理员没有管理员角色时,他的博文也需要经过版主的验证,因为他自己继承了用户的行为。
下面的这个例子可能只有在管理员不想以管理员身份使用系统的情况下才能删除他自己的角色时才有意义。
我希望这是有道理的。
解决方法
尽量简单
您不应该有两次相同的用例名称来表示同一模型中的不同行为。这非常令人困惑。
顺便说一下,UML 规范没有定义多个参与者与同一个用例相关时的确切含义:它可以是多个参与者,每个参与者分别参与用例的不同出现,但也可以是以及每次都必须让所有参与者都参与进来。
因此,我建议保留一个与 Create blogpost
和 User
相关的 Moderator
用例。您仍然可以保持 Administrator
是 User
的特化,并在用例行为的详细描述中使用此特化。
但没有必要更简单
如果您认为这不能充分准确地表达您的情况,您有两种可能性。
- 保持单个
Create blogpost
用例仅与更一般的User
相关联,并将其«extend»
与仅与 {{ 关联的附加Moderate blogpost
用例1}}。这是有道理的,因为审核用例是审核者自己的目标,它可以重复使用(例如,也可以是Moderator
的扩展)。 - 由于参与者和用例都是分类器,您可能还会认为用例
Update blogpost
是更通用的Create unmoderated blogpost
的特化。然而,这需要更精确的重新定义,并且在我看来不如 #1 那样具有表现力。
第一种情况如下:
其他想法
A Create blogpost
原则上也是 Moderator
。出于好奇:如果版主创建博文会发生什么:他/她可以自己审核自己的内容吗?或必须四眼原则确保不同的主持人主持这篇文章;-)