我正在尝试模拟某种行为,其中不同泳道中的一些活动应该在循环中处理。现在,BPMN使用令牌来说明所采用的流量和路径。我想知道这些令牌如何在循环的情况下工作。每次活动迭代都会创建一个令牌,从而通过连接的活动吗?
E.g。假设Activity1将循环执行10次。是否会创建10个令牌,每个令牌将通过该过程的其余活动?这样的行为是不可取的,但如果我没有弄错,多实例活动就是这样做的。
我认为符合BPMN规范的唯一解决方案是为整个活动块创建一个Call活动,然后循环运行Call活动。
有人可以从代币的角度为我澄清在BPMN中使用循环和多实例吗?
提前谢谢!
答案 0 :(得分:0)
令牌从Entry开始作为单个令牌并且一直这样行进直到它到达出口。只有当它到达一个Fork时,令牌才会乘以叉子输出控制流量的次数。这些令牌独立运行,直到它们到达出口(并消失)或直到加入叉子。在这里,他们等到所有进入控制流程的标记到达。然后,从传出的控制流中,单个令牌继续。
请注意,Fork可以有多个输入和输出多个控制流。您可以将此视为加入,然后是多路复用分叉(这使我更容易理解)。
有关详细信息,请阅读Petri nets(这是所有内容的理论基础)。
答案 1 :(得分:0)
根据我对文档的阅读:https://www.omg.org/spec/BPMN/2.0/PDF@qwerty_so 的答案似乎不符合标准,尽管部分原因似乎是因为该问题似乎也不精确或至少未详细说明。
>令牌(见词汇表)只是一个虚构的对象,代表流程图中的流动单元。标准中至少指定了三种不同类型的回路,这表明对流量单位有不同的影响。
13.2.6 和 12.2.7 节分别描述了循环活动和多实例活动。虽然后者从表面上看可能不像一个循环,但该标准定义了活动的属性,包括:MultipleInstanceLoopCharacteristics 和 ExpressionloopCardinality。
在前一种情况下,操作语义似乎表明单个流单元根据某些策略甚至无限重复多次。
在后一种情况下,活动“产生了多个实例”,包括一个并行变体。
从表面上看,多个实例可以并行向前流动,这表明系统必须至少允许产生多个令牌(或在概念上拆分原始令牌)的可能性,以支持沿不同路径同时进行的多个线程。< /p>
也就是说,循环活动 (13.2.6) 似乎支持 OP 所需的语义。