如何指定应从BPMN callActivity调用哪个启动事件

lms*_*ant 4 jbpm bpmn activiti camunda ibm-bpm

http://www.omg.org/spec/BPMN/2.0.2/PDF(第238页):

如果Process用作全局Process(可以从其他进程的Call Activities调用的可调用进程)并且有多个None Start Events,那么当flow从父进程转移到全局进程时,只有一个进程将触发全局流程的启动事件.可以扩展传递给Call Activity对象的Sequence Flow的targetRef属性,以识别适当的Start Event.

如何扩展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>
Run Code Online (Sandbox Code Playgroud)

Ber*_*ker 5

我们实际上在camunda中讨论了这个问题 - 但决定不支持它(现状).到目前为止,我们还没有看到这种构造在真实生活中的真正需要.这是相当无聊的,我不认为这是最好的做法.

对于用例"将现有的proicess instancess从另一个工具迁移到camunda",我们使用另一个构造来启动特定状态的子进程,利用消息启动事件和调用活动的扩展 - 这似乎更容易理解,请参阅https:// network.camunda.org/whitepaper/5

干杯贝恩德