问题描述
如果一个动作的下一个元素是一个加入节点,只要不是所有的加入节点输入令牌都存在,这个动作会被执行吗?
还是会退出操作并停止流程,直到事件出现在示例中?
解决方法
如果一个动作的下一个元素是一个加入节点,只要不是所有的加入节点输入令牌都存在,这个动作会被执行吗?
不,该操作在完成时自行决定,然后当它在其传出流中提供令牌时,加入之后的事实或其他任何事情都不相关
还是会退出操作并停止流程,直到事件出现在示例中?
因为我已经在您的另一个问题中回答了 Multiple event actions at Join Node allowed,当连接未通过时,JoinNode 的传入边缘上提供的令牌被阻止,而当 JoinNode 是否通过取决于它的 joinSpec。
如果您想在事件发生前做一些事情,您可以使用 InterruptibleRegion 和 AcceptEventAction 中的 interruptingEdge。
这是 documentation of my tool BoUML 中的一个示例,其中 AcceptEventAction(此处为红色)中断了该区域中的操作,interruptingEdge 用闪电表示-bolt (zigzag) :
参见第 407 页的 §15.6.3.2 Interruptible Activity Regions 和图 15.5 ActivityEdge 符号第 380 页的 formal/2017-12-05