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

Maestro ユーザー ガイド
List 変数の反復処理によって複数の実行を作成するために、マーカーを使用して特定のタスクの実行を設定します。詳しくは 、『 BPMN 入門』の「マーカー」の章をご覧ください。
BPMN デザイナーから、サポートされている任意のタスクをマルチインスタンス タスクに変換できます。
- キャンバスで タスク を選択します。
- タスクの上にある要素ツールバーで、[ 要素を変更] を選択します。
- マルチインスタンス マーカー (順次または並列アイコン) を選択します。
- これにより、BPMN マーカーがタスクにアタッチされます。
- [プロパティ] パネルを開き、[マルチインスタンス] セクションを展開して [項目] リストを設定します。
- Maestro では、BPMN マーカーを追加してもエイリアスやモードなどの追加のコントロールは公開されません。唯一の設定は、[ マルチインスタンス ] セクションの [項目 ] フィールドに表示されます。
- マーカーは純粋に宣言的です。Maestro によって実行モードが自動的に決定されます。
- マルチインスタンスはタスクでのみサポートされます (サブプロセスではサポートされません)。
マルチインスタンス実行を使用して、アクティビティをコレクション全体に展開します (たとえば、請求書 ID のリストの検証、レコードの強化、受信者ごとの通知の送信など)。このパターンは、手動ループよりもスケーリングが優れており、可観測性が維持されます。
- リストの各要素に対して実行するタスクを選択します。
- プロパティ パネルで、[マルチインスタンス] を展開します。
- [項目] で、反復処理する要素が含まれているリスト変数を選択します (例:
vars.invoiceList)。Maestro では、リスト要素ごとに 1 回の実行が作成され、反復処理が自動的に管理されます。入力で現在の要素を参照するには、そのインデックスまたはプロパティ (例:vars.invoiceList[index].idを使用します)。 - (オプション)失敗した項目を個別に Maestro でリトライする場合は、[ エラー処理 ] セクションを展開し、[ 失敗時にリトライ ] を切り替えます。
- プロセスを実行またはデバッグして、実行証跡のリスト要素ごとに 1 つのアクティビティ インスタンスを表示します。
- 反復子式 (使用可能な場合): 一部のアクティビティには、現在の項目を実行ごとの正確な入力値にマッピングするための専用フィールドが用意されています。アクティビティが項目全体ではなく 1 つの値を必要とする場合に使用します。例:
item.invoiceId、item.customer.email、または 。{ id: item.id, flags: ["recheck"] }反復子は、マルチインスタンス タスクがコレクションを処理するときに個々の項目を表す変数です。反復処理が発生する場所に応じて、正しい構文を使用してください。iterator.item— マルチインスタンス マーカーがタスクに直接適用される場合に使用します。プロパティ パネル
アクション: タスクの実行方法を選択します。サービス タスクの場合は、Integration Service のアクションまたはエージェントのアクションを選択します。または、タスクがモデリングにのみ使用される場合は なし のままにします。
入力: タスクが反復処理ごとに必要とする値を指定します。このセクションを使用して、現在の要素またはそのフィールドを渡します。
例:
-
入力:
invoiceId -
値:
vars.invoiceList[index].id
出力: 各サブプロセスの実行からデータを返します。Maestro はプロセスの完了時に出力値を集計します。
変数を更新: 各反復処理の後、またはサブプロセス全体の完了後に、ワークフロー レベルの変数を更新します。
-
iterator[0].item— マルチインスタンス タスクから呼び出されるサブプロセス内で作業を行う場合に使用します。プロパティ パネル
アクション: [実装] の [ アクション ] フィールドで、サブプロセスが外部システム、エージェント、または API とどのように対話するかを選択します (該当する場合)。[サブプロセス] を展開してモデリングにのみ使用する場合は、[アクション] を [ なし] のままにします。
入力
現在のリスト要素やそのプロパティなどのデータをサブプロセスにマッピングします。
例:
-
入力:
currentItemId -
値:
vars.itemsToProcess[index].id
-
例: マルチインスタンス実行を使用して請求書のリストを検証する
- リスト変数を準備します
- データ マネージャーを開きます。
- 変数を作成します。
- 名前:
invoiceList - 種類: オブジェクトの配列または文字列の配列
- 値の例:
["INV-001","INV-002","INV-003"]
- 名前:
- サービス タスクを追加する
- [サービス タスク] を追加し、「Validate invoice (請求書を検証)」という名前を付けます。
- プロパティ パネルを開き、[マルチインスタンス] セクションを展開します。
- [ アイテム] で [
invoiceList] を選択します。
- 入力で現在の項目を使用する
たとえば、 InvoiceId を次のように設定します
[ 入力] セクションで、以下の手順を実行します。
vars.invoiceList[index]リストに文字列ではなくオブジェクトが含まれている場合:vars.invoiceList[index].Id - 実装を設定
[ 実装 ] セクションで、次を選択します。
- アクション: エージェントを開始して待機
- エージェント: 請求書検証エージェント
- プロセスをデバッグする
- [ステップごとにデバッグ] を選択します。
- [請求書の検証] タスクは、リスト アイテムごとに 1 回実行されます。
- 実行証跡には、アイテムごとの実行が個別に表示されます。
- [請求書を検証] という サービス タスクを プロセスに追加します。
- [ 要素を変更] を選択して、プロンプトの右上隅にある [ 並列マルチインスタンス] を選択します。
- [プロパティ] パネルで、[マルチインスタンス] セクションを展開します。
- [項目] で、反復処理する要素を格納したリスト変数 (
vars.invoiceListなど) を選択します。Maestro では、リスト要素ごとに 1 回の実行が作成され、反復処理が自動的に管理されます。入力で現在の要素を参照するには、そのインデックスまたはプロパティ (例:vars.invoiceList[index].idを使用します)。 - プロセスを実行またはデバッグして、実行証跡のリスト要素ごとに 1 つのアクティビティ インスタンスを表示します。
マルチインスタンスを使用して手動ループを置き換えます。コレクションをループ境界として扱います。順次モードでは、項目を順番に処理し、各項目が終了するのを待ってから次の項目を開始します。並列モードは、一度に多くの項目を開始し、すべての項目が完了するか、停止条件が満たされると完了します。アイテムごとの作業はべき等で短命にしてください。単一の結合出力が必要な場合は、集計を使用します。
- ファンアウト/ファンイン: Maestro では、アイテムごとにアクティビティ インスタンスが 1 つ作成され、すべてのインスタンスが完了すると (ダウンストリームでカスタム停止ポリシーを使用している場合はそれ以前) にグループが完了します。
- 順序:シーケンシャルモードで保証。並列モードでは保証されません。
- 並行 処理: 並列モードでは、要素が同時に実行されますが、プラットフォームの制限とリソースの可用性によって異なります。
- 障害: 各アイテムの結果を個別に扱います。下流のロジックでは、部分的なエラー (例: しきい値に基づく続行、リトライ、停止) の処理方法を定義する必要があります。
- 可観測性: 各アイテムの実行が追跡され、アイテムごとのステータスと集計された結果が可能になります。
シナリオ: 外部 API から請求書 ID のリストを受け取り、2 つ目の API を使用して各請求書を検証する必要があります。
計画:
- 請求書 ID の動的なリスト (前のステップまたは外部への問い合わせから) を取得します。
- 検証アクティビティに 並列 マルチインスタンス マーカーを適用して、請求書ごとに 1 つのアクションを展開します。
- 集計を使用すると、下流のステップ用に 1 つの結合された出力 (
{invoiceId, isValid, errors}のリストなど) が生成されます。
- ファンアウト (空、null、または大きすぎるリスト) の前にコレクションを検証します。
- アイテムごとの作業は短命でフォールトトレラントに保ちます。必要に応じてリトライを追加します。
- 必要なものだけを集約します。集計サイズが大きいと、パフォーマンスと可読性に影響を与える可能性があります。
- 達成基準を明示します (例:
proceed if ≥95% items succeed)。
表記法と概念のガイダンスについては 「Markers (BPMN Primer)」を、Maestro でサポートされているすべての BPMN 要素のリストについては「 BPMN のサポート 」をご覧ください。
サブプロセスまたはコールアクティビティで作業していますか?変数のスコープ、入出力マッピング、終了イベント変数については、「 サブプロセス」をご覧ください。