From http://www.omg.org/spec/BPMN/2.0.2/PDF http://www.omg.org/spec/BPMN/2.0.2/PDF第 238 页:
如果该进程用作全局进程(可调用进程
可以从其他进程的调用活动中调用)并且有
多个无启动事件,然后当流从
全局进程的父进程,仅全局进程之一
将触发开始事件。序列的 targetRef 属性
传入呼叫活动对象的流可以扩展以识别
适当的开始事件。
如何扩展 targetRef 属性?
不是必须是有效的 IDREF 吗?
也许他们的意思是应该使用自定义属性来扩展sequenceFlow 元素?
有这样的扩展的例子吗?
现有的 BPMN 工具支持吗?
这是我手工编辑的 BPMN 片段来说明问题:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
<process id="p1" name="Process 1" isExecutable="false" processType="Private">
<sequenceFlow id="startAflow" sourceRef="start" targetRef="A"/>
<sequenceFlow id="callActivityFlow" sourceRef="A" targetRef=" !? WHAT_GOES_HERE ?! "/>
<startEvent id="start" name="Start">
<outgoing>startAflow</outgoing>
</startEvent>
<task id="A">
<incoming>startAflow</incoming>
<outgoing>callActivityFlow</outgoing>
</task>
<callActivity id="call" calledElement="p2">
<incoming>callActivityFlow</incoming>
</task>
</process>
<process id="p2" name="Process 2" isExecutable="false" processType="Private">
<sequenceFlow id="start2Aflow" sourceRef="start1" targetRef="2A"/>
<sequenceFlow id="start2Bflow" sourceRef="start2" targetRef="2B"/>
<startEvent id="start1" name="Start">
<outgoing>start2Aflow</outgoing>
</startEvent>
<task id="2A">
<incoming>start2Aflow</incoming>
</task>
<startEvent id="start2" name="Start in middle of process">
<outgoing>start2Bflow</outgoing>
</startEvent>
<task id="2B">
<incoming>start2Bflow</incoming>
</task>
</process>
</definitions>
我们实际上在 camunda 内部讨论了这个问题 - 但决定不支持它(现状)。到目前为止,我们还没有看到现实生活中对这种结构的真正需求。这是相当深奥的,我不认为它是最佳实践。
对于“将现有进程实例从另一个工具迁移到 camunda”的用例,我们使用了另一个构造来利用消息启动事件和调用活动的扩展在特定状态下启动子进程 - 这似乎更容易理解,请参阅https://network.camunda.org/whitepaper/5 https://network.camunda.org/whitepaper/5
干杯
贝恩德
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)