4

238 ページのhttp://www.omg.org/spec/BPMN/2.0.2/PDFから:

プロセスがグローバル プロセス (他のプロセスの呼び出しアクティビティから呼び出すことができる呼び出し可能なプロセス) として使用され、複数の [なし] 開始イベントがある場合、フローが親プロセスからグローバル プロセスに転送されるときに、グローバル プロセスの開始イベントがトリガーされます。コール アクティビティ オブジェクトに着信するシーケンス フローの 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>
4

2 に答える 2

5

この問題については camunda 内で実際に議論しましたが、サポートしないことにしました (現状)。これまでのところ、この構造の実際の必要性は現実には見られませんでした。それは非常に難解であり、私はそれをベストプラクティスとは考えていません。

「既存のプロセス インスタンスを別のツールから camunda に移行する」というユース ケースでは、メッセージ開始イベントと呼び出しアクティビティの拡張機能を利用して、特定の状態でサブ プロセスを開始するために別の構造を使用しました。 network.camunda.org/whitepaper/5

乾杯ベルント

于 2015-06-10T05:52:48.760 に答える
1

はい、このような状況はめったにありませんが、何らかの形で対処することが最善であると考えました. BPMN は何よりもまずグラフィカルな言語であったため、ソリューションはグラフィカルな要素で処理する必要がありました。そのため、呼び出しプロセスのコンテキスト内で呼び出されたプロセスを展開した場合、呼び出しプロセスからのシーケンス フローを、呼び出されたプロセスの適切な開始イベントに接続できるはずです。これにより、そのプロセスの開始のあいまいさが解消されます。したがって、シーケンス フローのターゲットには、その開始イベントの IDREF が含まれます。これは、プロセス レベル内に含まれるシーケンス フローの基本的なルールに違反しているように見えますが、実際のターゲットは callActivity の境界であるが、ターゲット開始イベントに関する追加情報で拡張されていることを考慮して、この例外を許可しました (呼び出されたプロセス内)。 )。これが実装されているのを見たことがなく、呼び出されたプロセスをコンテキストで展開するときに考慮すべきプレゼンテーションの問題があります。この機能に関して他の技術的な問題があったとしても、私は驚かないでしょう。おそらく、実装者の問題を確認し、BPMN の将来のバージョンでこれをクリーンアップできます。

于 2015-06-10T18:31:57.083 に答える