加入节点与前一个动作块的交互

问题描述

如果一个动作的下一个元素是一个加入节点,只要不是所有的加入节点输入令牌都存在,这个动作会被执行吗?

还是会退出操作并停止流程,直到事件出现在示例中?

enter image description here

解决方法

如果一个动作的下一个元素是一个加入节点,只要不是所有的加入节点输入令牌都存在,这个动作会被执行吗?

不,该操作在完成时自行决定,然后当它在其传出流中提供令牌时,加入之后的事实或其他任何事情都不相关

还是会退出操作并停止流程,直到事件出现在示例中?

因为我已经在您的另一个问题中回答了 Multiple event actions at Join Node allowed,当连接未通过时,JoinNode 的传入边缘上提供的令牌被阻止,而当 JoinNode 是否通过取决于它的 joinSpec

如果您想在事件发生前做一些事情,您可以使用 InterruptibleRegionAcceptEventAction 中的 interruptingEdge

这是 documentation of my tool BoUML 中的一个示例,其中 AcceptEventAction(此处为红色)中断了该区域中的操作,interruptingEdge 用闪电表示-bolt (zigzag) :

enter image description here

参见第 407 页的 §15.6.3.2 Interruptible Activity Regions 和图 15.5 ActivityEdge 符号第 380 页的 formal/2017-12-05