【问题标题】:Activity Diagram Synchronization Bar活动图同步栏
【发布时间】:2018-01-08 02:07:21
【问题描述】:

我正在为现实生活中的纸牌游戏设计活动图,想知道所附图像中同步条的使用是否正确。

据我了解,同步条可用于将流程分成两个或多个活动。在我的图表中,我试图说明两个团队从他们收到的一组卡片中挑选一张卡片。 B 队的流程在拿到卡片后就结束了,这是因为 A 队必须先问一个问题(在卡片上)。

【问题讨论】:

    标签: uml workflow-activity flowchart


    【解决方案1】:

    基本上你的图表是正确的。抽牌同时发生。但是,您可以做一些改进。我不知道出于什么原因,其中一名球员会提出问题而另一名球员不会。所以在这里我假设最快的一个会开始(记住一个来自非洲的纸牌游戏,两个玩家用一只手尽可能快地抽牌并将它们放在某个地方;不知道名称和规则,但玩起来很有趣)。无论如何,这是我的建议:

    只需将绘图放在一个可中断区域中,并以使一个玩家成为第一个询问的方式命名。对于 UML 规则,最终流不是必需的(令牌被吞掉,因为玩家 B 的动作没有流出流)。

    【讨论】:

      【解决方案2】:

      我想根据您的解释提供一些改进。 (不过正如@ThomasKilian 所说,目前还不清楚为什么其中一名玩家会提出问题)

      案例 1
      如果双方(TeamA 和 TeamB)应该拿起卡片,然后检查是否存在所选卡片中的问题:您的系统应等待两名玩家拿起卡片。所以在这种情况下,您应该在两个pick a cards 之后使用Join Node。 (见my previous post about Join

      案例 2
      如果最快的团队应该提出问题并且不需要其他团队选择卡片,那么这里还有其他改进

      您应该在两个pick a cards 之后使用Merge node with Decision(请参阅此reference 中的Merge with Decision 说明)。 (您可以使用合并节点,然后也可以使用决策节点。)

      因此,您的决定是基于最快的选卡队伍。然后您应该使用以下语句完成模型。如果 TeamA 最快,那么 TeamA 应该提问,TeamB 应该回答,如果 TeamB 最快,那么 TeamB 应该提问,依此类推。)

      您也可以在案例 1 中使用此改进(在加入节点之后,您需要一个决策来找到选择卡片的团队并将上述语句添加到您的模型中)。

      最后,如果TeamA总是在拿卡后问这个问题,而不需要从TeamB拿卡,那么只是在两个 pick a cards 之后使用 Merge Node 的一项改进。考虑 Merge Node 输入流是接受单个输出流的备用流。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多