两个流程可以在活动Diagams中采取相同的行动吗?

时间:2018-02-10 18:48:37

标签: uml activity-diagram

我有两个流程进行相同的操作。行动是Make Payment。一个流程适用于rent,另一个流程适用于purchase。在这两种情况下,客户都必须付费。我想对两个流使用一个payment操作。或者我应该使用合并节点,然后将输出连接到make payment操作。我不确定是否可以使用合并节点,因为两个流都是相互独立的。我上传了一张照片。

enter image description here

2 个答案:

答案 0 :(得分:1)

这个让我抓错了脚。当有多个无保护的转换超出状态/动作时,会发出隐式分支,因此多个令牌会独立离开并传播。 P. 401:

  

当ExecutableNode完成执行时,表示执行的控​​制令牌将从ExecutableNode中删除,并且在ExecutableNode的所有传出ControlFlow上提供控制令牌。也就是说,从ExecutableNode到其传出的ControlFlow有一个隐式的控制流分支。

我似乎记得,类似地,两个传入的转换意味着两者都必须传递令牌。并在p上阅读(上) 401:

  

在所有传入的ControlFlow(如果有)提供令牌之前,ExecutableNode不会执行。也就是说,传入的控制流上存在隐式连接。特定种类的ExecutableNode可能具有在节点可以执行之前必须满足的其他先决条件。

现在看看p。 425你找到了

  

合并节点是将多个备用流汇集在一起​​的控制节点。它不用于同步并发流,而是用于接受多个备用流中的一个。

所以你在这里。您需要事先合并才能使其正确。

N.B。:如果你是非正式建模(所以在某个记录了这个领域的领域),你可以使用你的记号,因为它经常被使用。理论与实践......但不建议这样做。

答案 1 :(得分:0)

刚加入Thomas Kilian回答

你可以这样模特吗?是。但这意味着隐式加入,因此必须完成两个流程才能启动付款操作。这是允许的,但不是你想要达到的目的。

你可以在你的情况下这样建模吗?不会。这会产生与您想要实现的不同的行为(加入而不是合并)。

您可以在活动之前使用合并节点来获得预期结果吗?是的,当我们想要在一个传入流完成时继续时,这是合并流的绝对正确和首选方式。单独触发流的事实不会造成问题。

没有Merge节点你能实现同样的目标吗?是的,您可以使用参数和参数集。您可以使用一个参数,来自该参数的流创建隐式合并。此外,如果您有参数集定义的操作在仅为一个参数集的所有参数提供令牌时启动,但这意味着不同的参数集以不同的流传递。然而,只有当您有一些参数要通过时,才可能使用参数方法。除了它更难以理解,所以我会阻止这种方法,直到你真正知道你在做什么。