- はじめに
- 基本情報
- プロセス モデリング
- プロセスの実装
- プロセスの操作
- プロセスの監視
- プロセスの最適化
- 参考情報

Maestro ユーザー ガイド
サブプロセスとモジュール性
サブプロセスは、関連するアクティビティを再利用可能な 1 つの構造にグループ化することで、モデルをわかりやすくするのに役立ちます。ダイアグラムの複雑さを軽減し、ビジネス ロジックを分離して、再利用を促進します。
BPMN では、サブプロセスはインラインで (同じダイアグラム内で折りたたみまたは展開)、または再利用可能なコール アクティビティとしてモデリングできます。
Maestro では、サブプロセスについて以下の点に留意してください。
- インラインのサブプロセス (折りたたみまたは展開) は、同じダイアグラム内でロジックをグループ化および構造化する場合にサポートされます。
- コール アクティビティは、別個のエージェンティック プロセス (プロジェクト) を呼び出す場合にサポートされます。
- 同じプロジェクトから別の BPMN ファイルを呼び出す操作はサポートされません。プロセスにまたがる再利用可能なロジックの場合は、別個のエージェンティック プロセスを作成し、コール アクティビティを使用してそのプロセスを呼び出します。
- コール アクティビティを使用する場合、呼び出し元のプロセスは、明示的に定義されたパラメーターを介して入力を渡し、出力を受け取ります。
コール アクティビティを使用する理由
コール アクティビティは、プロジェクトまたは環境内の別の場所で定義されたサブプロセスを参照します。このアクティビティは再利用可能な関数のように動作し、以下の方法でプロセス モデリングを改善します。
- ダイアグラム間の重複の削減
- 再利用可能なロジックの分離 (承認、検証、送信など)
- 主要なダイアグラムの簡潔さの維持
- プロセス バリアント間で一貫した動作をサポート
サブプロセスのモデル化方法
Maestro では、次の 2 つの方法でサブプロセスをモデリングできます。
- インラインのサブプロセス (同じダイアグラム内で折りたたみまたは展開)
- 再利用可能なサブプロセス (コール アクティビティを使用)
インラインのサブプロセスをモデリングする
インラインのサブプロセスは、同じプロセス インスタンス内の関連するステップをグループ化する場合に使用します。
- BPMN ダイアグラムにサブプロセス要素を挿入します。
- 折りたたみビューまたは展開ビューのどちらでプロセスを表示するかを選択します。
- 内部ロジックをサブプロセス内で直接モデリングします。
- サブプロセスを使用すると、関連するステップをグループ化しながら、メイン ダイアグラムの可読性を維持できます。
インラインのサブプロセスは、同じプロセス インスタンス内で実行され、同じ実行コンテキストを共有します。
コール アクティビティを使用して再利用可能なサブプロセスをモデリングする
コール アクティビティは、複数のプロセスでロジックを再利用する場合に使用します。
- 再利用可能なロジックを含む別個のエージェンティック プロセス (プロジェクト) を作成します。
- 親ダイアグラムで、コール アクティビティを挿入します。
- 呼び出す対象のエージェンティック プロセスを選択します。
- 親プロセスと呼び出されるプロセスとの間でデータを交換するための入力変数と出力変数を設定します。
コール アクティビティは、別のエージェンティック プロセス インスタンスを呼び出します。親プロセスと呼び出されるプロセスとの間で明示的にデータをマッピングする必要があります。
モデリングの例
ユース ケース: オンボーディング ワークフローでは、従業員とベンダーの両方のオンボーディング プロセスで同じ Collect Documents サブプロセスを使用します。ステップを複製する代わりに、同じサブプロセスを参照する各親プロセスにコール アクティビティが追加されます。

ユース ケース: このサブプロセスの例は、Maestro での条件付きファイルのダウンロードとアップロードのワークフローを示しています。プロセスはメッセージ開始イベントで始まり、排他的ゲートウェイを使用して分岐します。条件に応じて、メールの添付ファイルまたはレコード フィールドのファイルをダウンロードします。両方のパスが「ファイルをアップロード」タスクで合流し、その後に「Sub-Process1」という名前のサブプロセス要素が続きます。このサブプロセスは、終了イベントでワークフローを完了する前に、アップロード後のアクションに関連する追加ステップをカプセル化します。

命名規則
サブプロセスとコール アクティビティの名前を付ける際は、以下の点に留意してください。
- 専門用語ではなく、ビジネス用語を使用する
- 結果を説明する (例: 「
Form Step 2」ではなく「Collect Customer Data」) - サブプロセスがタスクを実行する方法ではなく、実行する対象を反映する。
- 参加者レーンはサブプロセス内ではサポートされない
サポート対象外
- 同じプロジェクト内で別個の BPMN ファイルを呼び出す操作はサポートされません。
- 複数のプロセスにまたがる再利用可能なロジックの場合は、別個のエージェンティック プロセス (プロセス) を作成し、コール アクティビティを使用してそのプロセスを呼び出します。
- アドホックなサブプロセスはサポートされていません。
- プロセスの境界を越えた暗黙的な変数の共有はサポートされていません。データは、入力/出力バインディングを使用して明示的にマッピングする必要があります。
- 参加者レーンはサブプロセス内ではサポートされない
マルチインスタンス マーカー
インラインのサブプロセスはマルチインスタンス実行をサポートします。
コール アクティビティは、別個のエージェンティック プロセスを呼び出す場合にもマルチインスタンス実行をサポートします。
アドホックなサブプロセスとイベント サブプロセスはサポートされていません。
ネストしたマーカー
ネストする反復子として、次の文字列変数がサポートされています。
| カテゴリ (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 |
Maestro でサポートされる BPMN 要素について詳しくは、「BPMN でサポートされている要素」をご覧ください。