来自第 238 页的http://www.omg.org/spec/BPMN/2.0.2/PDF :
如果Process作为全局Process(可以从其他Process的CallActivity调用的可调用Process)并且有多个None Start Events,那么当flow从父Process转移到全局Process时,只有一个将触发全局进程的启动事件。传入调用活动对象的序列流的 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>