4.5. プロセスデザイナー内の BPMN2 サブプロセス
サブプロセスは、複数のノードが含まれるアクティビティーです。サブプロセスにメインのプロセスの一部を埋め込むことができます。また、サブプロセスには変数定義を追加できます。これらの変数は、サブプロセス内の全ノードにアクセスできます。
サブプロセスには、内向きの接続と外向きの接続を少なくとも 1 つずつ含める必要があります。サブプロセス内の中断終了イベントは、サブプロセスインスタンスを終了しますが、親プロセスインスタンスを自動的に終了することはありません。サブプロセスからアクティブな要素がなくなると、サブプロセスが終了します。
Red Hat Process Automation Manager では、以下のサブプロセスのタイプがサポートされます。
- 埋め込みサブプロセス: 親プロセス実行の一部で、親プロセスデータを共有し、独自のローカルサブプロセス変数を宣言します。
- アドホックサブプロセス: 厳密な要素実行の順番がないサブプロセス。
- 再利用可能なサブプロセス: 親プロセスから独立しているサブプロセス。
- イベントサブプロセス: 開始イベントまたはタイマーでのみトリガーされるサブプロセス。
- マルチインスタンスサブプロセス: 複数回インスタンス化されるサブプロセス。
以下の例では、発注のサブプロセスは、その注文を受けるのに十分な在庫があるかを確認し、注文できた場合に在庫情報を更新します。注文の可否により、メインのプロセス経由で、顧客に通知が行きます。
組み込みサブプロセス
埋め込みサブプロセスは、プロセスの一部をカプセル化します。このサブプロセスには、開始イベントと、最低でも 1 つの終了イベントが含まれている必要があります。この要素を使用して、このコンテナー内の全要素にアクセスできるローカルのサブプロセス変数を定義できます。
アドホックサブプロセス。
アドホックサブプロセスまたはプロセスには、埋め込みの内部アクティビティーが複数含まれ、通常のプロセスルーティングに比べて、より柔軟な順番で実行することを目的としています。通常のプロセスとは違い、アドホックサブプロセスには、開始イベントから終了イベントまでといった、完全な体系化された BPMN2 ダイアグラムの説明は含まれません。代わりに、アクティビティー、シーケンスフロー、ゲートウェイ、中間イベントのみが含まれます。また、アドホックサブプロセスには、データオブジェクトやデータの関連付けも含めることができます。アドホックサブプロセス内のアクティビティーでは、内向きおよび外向きのシーケンスフローを含める必要はありません。ただし、その中に含まれているアクティビティー間のシーケンスフローを指定できます。使用する場合、シーケンスフローは通常のプロセスと同じ順序の制約を提供します。意味を持つには、中間イベントに送信シーケンスフローを含める必要があり、アドホックサブプロセスがアクティブなときに複数回トリガーされる可能性があります。
再利用可能なサブプロセス
再利用可能なサブプロセスは、親プロセス内で縮小表示されます。再利用可能なサブプロセスを設定するには、再利用可能なサブプロセスを選択し、
をクリックして Implementation/Execution を展開します。以下のプロパティーを設定します。
- 呼び出された要素: アクティビティーにより呼び出してインスタンス化するサブプロセスの ID。
- 独立: 選択されている場合は、サブプロセスが独立プロセスとして開始します。選択されていない場合は、親プロセスが中断されると、アクティブなサブプロセスが取り消されます。
親の強制終了: この項目が選択されていて、呼び出したプロセスインスタンスの実行中にエラーが発生した場合は、再利用可能な従属サブプロセスで、親プロセスを中断できます。たとえば、サブプロセスを呼び出そうとしてエラーが発生した時や、サブプロセスインスタンスを中断する時などです。このプロパティーは、Independent プロパティーが選択されている時しか、表示されません。以下のルールが適用されます。
- 再利用可能なサブプロセスが独立している場合に、親の強制終了 は使用できません。
- 再利用可能なサブプロセスが独立していない場合 (従属してい場合) は、親の強制終了 を使用できます。
-
完了するまで待機: 選択されている場合には、呼び出されたサブプロセスインスタンスが終了するまで、指定の 終了時アクション は実行しません。親プロセスの実行は、終了時アクション が完了するまで継続されます。このプロパティーはデフォルトで選択されています (
true
に設定されています)。 - 非同期: タスクを非同期で呼び出して、すぐに実行できないようにする場合に選択します。
複数インスタンス: サブプロセス要素を指定の回数実行する場合に選択します。選択されている場合には、以下のオプションを使用できます。
- MI 実行モード: 複数インスタンスを並行して実行するか、順次実行するかを指定します。Sequential に設定されている場合には、以前のインスタンスが完了するまで新規インスタンスは作成されません。
- MI コレクション入力: 新規インスタンスを作成する要素コレクションを表現する変数を選択します。サブプロセスは、コレクションのサイズと同じ回数だけ、インスタンス化されます。
- MI データ入力: コレクションで、選択された要素が含まれる変数名を指定します。この変数は、コレクション内の要素にアクセスする時に使用します。
- MI コレクション出力: マルチインスタンスノードの出力を収集する要素コレクションを表現する任意の変数。
- MI データ出力: MI コレクション出力 プロパティーで選択した出力コレクションに追加する変数名を指定します。
-
MI 完了条件 (mvel): 指定した複数のインスタンスノードを完了できるかどうかを確認するために、完了済みのインスタンスを評価する MVEL 式。
true
と評価された場合には、残りのインスタンスはすべて取り消されます。
- 開始時アクション: タスクの開始時のアクションを指定する Java または MVEL スクリプト。
- 終了時アクション: タスクの終了時のアクションを指定する Java または MVEL スクリプト。
-
SLA 期日: サービスレベルアグリーメント (SLA) の有効期限の日付。期間は、日数、分、秒、およびミリ秒で指定できます。たとえば、SLA due date フィールドの
1m
値は 1 分を示します。 - メタデータ属性: メタデータ属性が存在する場合に何らかのアクションを実装するリスナーなど、カスタムイベントリスナーに使用するカスタムメタデータ属性の名前と値を追加します。
図4.1 再利用可能なサブプロセスのプロパティー

Business Central の新規エディターでサブプロセスを開くには、メインプロセスの Place order タスク、Open Sub-process タスクアイコンの順にクリックします。

イベントサブプロセス
イベントサブプロセスは、開始イベントがトリガーされるとアクティブになります。親プロセスのコンテキストを中断するか、並行して実行できます。
外向きまたは内向きの接続では、イベントまたはタイマーがサブプロセスをトリガーできます。サブプロセスは、通常のコントロールフローの一部ではありません。自己完結型ではありますが、バインドされているプロセスのコンテキストで実行されます。
プロセスフロー内のイベントサブプロセスを使用して、主なプロセスフロー外で発生するイベントを処理します。たとえば、飛行機の予約時には、以下の 2 つのイベントが発生する可能性があります。
- 予約の取り消し (割り込み)
- 予約ステータスの確認 (割り込みなし)
イベントのサブプロセスを使用して、これらのイベントの両方をモデル化します。
複数インスタンスサブプロセス
マルチインスタンスサブプロセスは、実行がトリガーされると、複数回インスタンス化されます。インスタンスは順次作成されるか、並行して作成されます。順次モードを設定すると、前のインスタンスが完了した後のみ、新しいサブプロセスインスタンスが作成されます。ただし、並列モードを設定すると、全サブプロセスインスタンスが一度に作成されます。
マルチインスタンスサブプロセスには、内向きの接続 1 つと、外向きの接続 1 つが含まれます。