我知道在BPMN中,每个池只有一个“启动事件”。在我的情况下,我有一个池,可以在捕获消息时开始,或者因为演员决定按照自己的决定来做。
我该如何建模?我不确定我是否可以使用基于事件的独家异或。
也许是一个复杂的网关?
答案 0 :(得分:1)
正如许多最佳实践中所述,在池中使用多个启动事件 NOT WOMMENDED 。 BPMN规范1.2也包含此注释:
9.3.2.
...
It is RECOMMENDED that
this feature be used sparingly and that
the modeler be aware that other readers of the Diagram may have difficulty
understanding the intent of the Diagram.
...
另一方面,省略启动事件的情况的通用规则是
如果未使用“开始事件”,则表示没有的所有“流对象” 在实例化Process时,应实例化一个传入的Sequence Flow。
我认为这对于手动过程启动的情况也是公平的。即使进程只有 消息启动事件,它也会正确启动,因为Message Start Event是一个没有传入序列流的公平流对象,因此它符合上述规则。
/>
但是,如果您想100%确定该过程将按您所希望的方式进行,那么您可以选择基于事件的独占网关(从1.1版开始提供)。在多个不同的开始事件之前放置它将使该过程选择其中一个开始。
可以找到进一步的解释in this blog。
答案 1 :(得分:0)
如果您不介意在执行流程期间可以多次使用池(例如,一次由消息启动,3次由演员启动),那么您可以简单地使用多个启动事件({{3 9.3.2第37页允许这个): BPMN 1.2 PDF Spec
如果您只允许单次运行池,则可能必须在执行开始时手动实例化它,然后决定是否使用它以及何时使用它。以下是如何完成此操作的示例:
基于事件的网关( 9.5.2.4)将"决定"怎么处理你的游泳池:
Actor decides to start
或来自主池的消息,则会执行一些操作;