Uml 如何在活动图中表示多个泳道中可用的动作?

Uml 如何在活动图中表示多个泳道中可用的动作?,uml,roles,activity-diagram,Uml,Roles,Activity Diagram,我有一个活动图,根据用户角色创建泳道。因此,当一些操作可用于多个角色时,我如何用单个操作表示它,而不在每个角色中重复操作 例如,在下图中,查看考试操作可以由管理员和学生执行,因此我有两个查看考试操作,每个角色一个。我想在我的图表中删除这种冗余,因为在未来,将有许多操作可以由多个角色执行 我想你无法避免 活动图表示由不同实体执行的流程或操作序列。因此,如果在您的过程中,管理员和学生都查看考试,您必须对其进行两次描述。 我的问题是,你真的需要描述管理员和学生在同一个过程中查看考试吗? 也许你需要两个

我有一个活动图,根据用户角色创建泳道。因此,当一些操作可用于多个角色时,我如何用单个操作表示它,而不在每个角色中重复操作

例如,在下图中,
查看考试
操作可以由
管理员
学生
执行,因此我有两个
查看考试
操作,每个角色一个。我想在我的图表中删除这种冗余,因为在未来,将有许多操作可以由多个角色执行


我想你无法避免

活动图表示由不同实体执行的流程或操作序列。因此,如果在您的过程中,管理员和学生都查看考试,您必须对其进行两次描述。 我的问题是,你真的需要描述管理员和学生在同一个过程中查看考试吗? 也许你需要两个不同的过程,一个是管理员查看考试并执行一些操作,另一个是用户/学生仍在查看考试但执行另一组操作?或者可能管理员像其他用户(学生/教授)一样查看考试,所以在这种情况下,您不需要在管理员界面中使用它

希望有帮助, EBR

您称之为“角色”的“泳道”在UML术语中称为“分区”:

ActivityPartition是一种用于识别的ActivityGroup 具有某些共同特征的ActivityNodes。 ActivityPartitions可以共享内容

因此,可以在每个分区中重复一个活动节点。特别是,如果它是由不同的分类器执行的。但是UML为表示分区提供了许多自由。其中一个解决方案似乎非常适合您的情况:

在某些图解情况下,使用平行线来描绘 ActivityPartitions不实用。另一种方法是放置 ActivityNode名称上方括号中的分区名称(…)以逗号分隔的分区名称列表表示该节点包含在多个分区中

因此,您可以有两个主要分区:
系统
用户
,在第二个分区中,您可以使用替代符号表示子分区:

+------------------------+-----------------------------------------+
|          System        |         Users                           |
+------------------------+-----------------------------------------+
|                        |                                         |
|                        |    +---------------------+              |
|                        |    |      (Admin)        |              |
|                        |    | Hit creation button |              |
|                        |    +---------------------+              |
|        ...             |      ...                                |
|                        |           +--------------------------+  |
|                        |           | (Admin, Student,Teacher) |  |
|                        |           |     View examinations    |  |
|                        |           +--------------------------+  |
|                        |                                         |
+------------------------+-----------------------------------------+
这对于传达有关所涉及/感兴趣/执行角色的信息非常实用,没有不必要的冗余,也没有为理想的图形布局而挣扎

另一种方式是跨边界绘制活动节点。大多数读者会立即理解它。但据我所知,这在形式上不是UML,一些工具不允许以这种方式绘制它。此外,如果您有两个以上的参与者,则可能很难找到合适的布局,例如,如果一些节点跨管理员/学生/教师,一些跨管理员/学生,一些跨管理员/教师。因此,最好遵循适当的UML,它允许您灵活地处理此类情况

不直接相关:您当前的图表可能存在一个问题:fork并不意味着两个角色都可以执行相关操作,但两者都可以。最后一列中的箭头显示,尽管有fork,但永远不会有连接,因此到达活动结束节点的第一个Admin或System可能会粗暴地中断学生/教师的查看,这肯定不是您想要表达的