- はじめに
- スタート アップ ガイド
- 任意のキャンバスで構築する
- 大文字と小文字で構築
- フローを利用した構築
- BPMN で構築する
- オペレーティング
- 監視
- 最適化中
- 参考情報
サブプロセス
Create subprocesses in Maestro Orchestrate to split complex processes into manageable parts, with guidance on when to use inline subprocesses versus Call activities for reuse.
概要
サブプロセスは他のタスクとサブプロセスの集合です。複雑なプロセスを、管理しやすくナビゲートしやすい複数の部分に分割する際に効果的です。
- 同じプロジェクトの中または他のプロジェクトから別のプロセスを使用する必要がある場合は、コール アクティビティを選択します。独自の値を持つこのようなエージェンティック プロセスを、自己完結型プロセスとして呼び出すか、他のプロセスで呼び出して、新しいインスタンスの作成を自動的にトリガーできます。
- 特定のロジックをカプセル化することによって親プロセスをより簡潔にする必要がある場合にサブプロセスを使用します。同じインスタンスを部分的に継承しているサブプロセスは、オーケストレーション全体の効率化で効果を上げます。
BPMN のサポートについて詳しくは、「プロセス モデリングを理解する」をご覧ください。
サブプロセスをまたいで変数を渡したり、変数にアクセスしたりする
Subprocesses encapsulate reusable logic, but they often need to exchange data with the parent process or other subprocesses. Maestro Orchestrate provides clear rules for how variables are scoped and passed so that your data remains consistent across levels.
サブプロセス内の入力にアクセスする
同じサブプロセス内の前のアクティビティの出力にアクセスするために、追加の設定を行う必要はありません。
例: アクティビティ foo によって foo_op という出力変数が設定されていて、後続のアクティビティ bar が同じサブプロセスに存在する場合、bar は foo_op を直接参照できます。
重要なルール: アクティビティで定義された変数は、同じサブプロセス内の任意の下流のアクティビティ (入れ子になった要素を含む) からアクセスできます。サブプロセスの入力として明示的に渡す必要はありません。
サブプロセスからの出力を公開する
親プロセスが、入れ子になったサブプロセス内のアクティビティからの出力データにアクセスする必要がある場合、次の 2 つのアプローチのいずれかを使用して、そのデータを公開できます。
アプローチ 1: 出力変数を使用する
- 内側のサブプロセスで、出力変数 (
inner_sp_opなど) を定義し、これに内部アクティビティの出力の値 (bar_op) を割り当てます。 - 外側のサブプロセス (または親プロセス) で、別の出力変数 (
outer_sp_opなど) を定義し、これに内側のサブプロセス出力の値 (inner_sp_op) を割り当てます。 - これで親プロセスの下流のアクティビティ (
quxなど) がouter_sp_opを参照できるようになります。
結果
サブプロセスの出力が公開され、親プロセスの下流のアクティビティでアクセスできるようになります。
アプローチ 2: 終了イベント変数を使用する
- 内側のサブプロセスで、終了イベントを設定して
ee_inner_opなどの出力変数を宣言し、これにbar_opの値を割り当てます。 - 外側のサブプロセスで、対応する終了イベントを設定して
ee_outer_opなどの出力変数を宣言し、これにee_inner_opの値を割り当てます。 - これで親プロセスのアクティビティ
quxがee_outer_opを参照できるようになります。
結果
終了イベント変数が親スコープに反映され、親プロセスの下流のアクティビティで利用できるようになります。
終了イベント変数は、個別に出力変数を設定することなく、親スコープに自動的に反映されます。
サブプロセス変数を検査する
設計時 (デバッグ API 経由) または実行時 (インスタンス API 経由) に変数値を検査して、スコープとデータの反映を検証できます。
デバッグ API - 変数を表示する
GET /v1/debug-instances/{instanceId}/variables?parentElementId=outer_subprocess
GET /v1/debug-instances/{instanceId}/variables?parentElementId=outer_subprocess
利用可能な変数
foo_opinner_subprocess_opee_outer_op
GET /v1/debug-instances/{instanceId}/variables?parentElementId=inner_subprocess
GET /v1/debug-instances/{instanceId}/variables?parentElementId=inner_subprocess
利用可能な変数
bar_opee_inner_op
ランタイム API – 変数を表示する
GET /v1/instances/{instanceId}/variables?parentElementId=outer_subprocess
GET /v1/instances/{instanceId}/variables?parentElementId=outer_subprocess
利用可能な変数
foo_opinner_subprocess_opee_outer_op
GET /v1/instances/{instanceId}/variables?parentElementId=inner_subprocess
GET /v1/instances/{instanceId}/variables?parentElementId=inner_subprocess
利用可能な変数
bar_opee_inner_op
マルチインスタンス マーカー
サブプロセスは、各要素が複数回実行されるマルチインスタンス マーカーをサポートします。マルチインスタンスとしてマークできる要素は、サブプロセスを除くすべての種類のタスクです。
ネストしたマーカー
ネストする反復子として、次の文字列変数がサポートされています。
| カテゴリ (Category) | 属性 | 利用方法/アクセス方法 |
|---|---|---|
| OuterSP - 各ユーザーの連絡先情報を取得 | InputCollection | var.GetUsers |
| OuterSP - 各ユーザーの連絡先情報を取得 | Iterator Item | iterator.item.gid |
| InnerSP - 各連絡先のすべてのメールを取得 | InputCollection | iterator[0].item.contactArray |
| InnerSP - 各連絡先のすべてのメールを取得 | Iterator Item | iterator[1].item.ContactId |
| メールを送信 | InputCollection | iterator[1].item.EmailArray |
| メールを送信 | Iterator Item | iterator[2]item.emailAddress |