当采用另一个分支时从并行分支停止任务

Stop tasks from parallel branch when another branch is taken

在所示过程中,如果 XOR 网关进入其“else”分支,则任务 2 A 和 B 没有继续的意义。

能不能画得比我这里画的更优雅?

补偿事件我知道,但本例中不需要“撤消”,停止即可。

好吧,我没有先看图表就看到了描述,这正是我想到的解决方案。

我不知道你怎么能画得更好。

注意,在详细要求中应该明确抛出的事件仅限于当前进程的范围(因此在实现中应该有进程的id)。否则,您将在一个进程中抛出一个事件,而其他进程可能会捕获它并对其做出反应。

还有一件事。如果您有更复杂的逻辑(而不仅仅是 task 2 atask 2 b),您可能希望将整个逻辑封装在一个更大的任务中,并且在这个更高级别的任务上只有一个中断事件,而不是创建一个对于每个子任务。

我看到了 3 个备选方案,有些人可能认为它们更好。要判断哪个选项最好,需要了解业务上下文以及哪条路径被认为是“快乐路径”。

  1. 将任务2a和2b放入一个内嵌的子进程中定义中断发生的范围,然后只附加一次中断边界事件。然后移除信号抛出事件并用中断条件边界事件替换捕获信号事件,检查条件:“a<=5”。

  1. 如果 >5 (> 1,(2a,2b)+3,4) 是最佳路径,我会将并行建模为一个逻辑块,如下所示:

  1. 第三个更简单的选项是删除信号和中断边界事件。相反,任务 5 之后的终止结束事件可用于终止并行分支上的令牌。此选项在大型流程模型中通常不太理想,因为分支被中断的可能性不再明确可见。对于小模型来说,它更紧凑。