UiPath Documentation
maestro
latest
false
Maestro Orchestrate ユーザー ガイド
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。

サブフロー

ノードを、ワークフロー内の 1 つのステップとして実行されるサブフローにグループ化し、ワークフローとの間でデータを渡し、その変数のスコープを設定します。

サブフローは、親ワークフローと呼ばれる別のワークフローに埋め込まれたワークフローです。一連のノードを自己完結型ユニットにグループ化し、親の一部として実行され、親に出力を返します。サブフローは、複雑なロジックを自己完結型で管理しやすいグループに整理します。

動作のしくみ​

親ワークフローがサブフロー・ノードに到達すると、実行はサブフローに入り、そのノードを順番に実行します。サブフローには独自のスコープがあり、ワークフロー内で名前を読み取ることができる部分であるため、サブフロー内で定義された変数が親ワークフローの変数と競合することはありません。サブフローが完了すると、その出力は親ワークフローに返され、次のノードで実行を続行します。

サブフロー内のノードは、以下にアクセスできます。

  • 同じサブフロー内の他のノード。
  • 親ワークフローのスコープ。

親ワークフローからサブフローの出力には、 $vars.<subflowName>.outputとしてアクセスできます。

サブフローの追加​

サブフロー ノードは [ノードを追加] パネルから追加され、[Maestro Flow] カテゴリに表示され、前のノードに接続します。キャンバス上には、スタックレイヤーアイコンの付いたノードとして表示されます。ノードのホバー ツールバーにある [ドリル イン ] ボタンを使用すると、サブフローの内部が独自のキャンバスとして開きます。左上の階層リンク (ホーム アイコンとサブフロー名) は、親ワークフローに戻ります。内部は、開始ノードが終了ノードに接続された状態から始まり、下部のツールバーがメイン キャンバスと同じであるため、ノードは同じ方法で追加されます。

データの送受信​

入力​

サブフロー ノードの [プロパティ] パネルの [入力 ] セクションでは、サブフローの入力変数を定義し、親スコープの式をそれらにマッピングします。入力変数を追加 - 入力を追加します。各入力には、名前、型、および 値 (親ワークフローのスコープで評価される式) があります。[値] フィールドの [挿入] メニューに、そのスコープの値 (サブフローや $metadataの前のノードなど) が一覧表示されます。

サブフロー内では、入力はサブフローの 開始 ノードの出力です。[ 挿入] メニューに、そのノードが <subflowName>Startとしてリストされます (例: $vars.subflow1Start.output.orderData)。[スタート] ノードには [入力引数を追加] もあります。

出力​

サブフロー ノードの [ 出力 ] セクションでは、サブフローの出力変数を定義します。出力変数を追加 して 1 つ追加し、値はサブフロー内の終了ノードの出力マッピングを介してマッピングされます。出力は親ワークフローで $vars.<subflowName>.outputとして使用でき、各出力変数はそのフィールドです (例: $vars.subflow1.output.isValid)。サブフローの後の任意のノードは、他のノード出力と同様に、式でそれを参照できます。

// Access the output of a subflow named "validateOrder"
$vars.validateOrder.output
$vars.validateOrder.output.isValid
// Access the output of a subflow named "validateOrder"
$vars.validateOrder.output
$vars.validateOrder.output.isValid

変数のスコープ設定​

サブフローは、独自の変数スコープを作成します。サブフロー内で更新される変数には名前空間 (つまり、サブフロー名のプレフィックス) が設定され、親ワークフローとの競合を回避します。

サブフローの外部からは、サブフローの内部変数が として参照されます $vars.<subflowName>.<variableName>。たとえば、subflow1 という名前のサブフロー内にcounter変数は、親ワークフローから$vars.subflow1.counterとして参照されます。

サブフロー内から、ノードは標準 $vars.<nodeName>.<property> パターンを使用して兄弟ノードの出力にアクセスします。親ワークフローのスコープから直接読み取ることもできます。

注:

変数の名前空間は、サブフローの内部変数が同じ名前を共有する親変数を上書きするのを防ぎます。親とサブフローの間で変数名を調整する必要はありません。

実際の例​

親ワークフローは、サブフローを呼び出して、処理前に注文データを検証します。

親ワークフローには次の 3 つのノードがあります。

  1. HTTP 要求 (httpRequest1): 外部 API から注文データを取得します。
  2. サブフロー (validateOrder): 注文データを検証し、結果を返します。
  3. 判断 (decision1): 検証結果に基づいて分岐します。

validateOrderサブフローには、スクリプト (script1) というノードが 1 つあり、このノードは、必須フィールドが存在すること、および注文合計がゼロを超えていることを確認します。

const order = $vars.validateOrderStart.output.orderData;
const isValid = order.items.length > 0
  && order.total > 0
  && order.customerId !== undefined;
return { isValid: isValid, reason: isValid ? "OK" : "Missing required fields" };
const order = $vars.validateOrderStart.output.orderData;
const isValid = order.items.length > 0
  && order.total > 0
  && order.customerId !== undefined;
return { isValid: isValid, reason: isValid ? "OK" : "Missing required fields" };

サブフロー ノードの [ 出力 ] セクションは、Boolean データ型の isValid という名前の出力変数を定義し、サブフロー内の [終了] ノードはそれを にマッピング $vars.script1.output.isValid。親ワークフローに戻ると、判断ノードは $vars.validateOrder.output.isValid === true を評価し、フルフィルメント パスまたはエラー処理パスのいずれかにルーティングします。

次のステップ​

  • 動作のしくみ​
  • サブフローの追加​
  • データの送受信​
  • 入力​
  • 出力​
  • 変数のスコープ設定​
  • 実際の例​
  • 次のステップ​

このページは役に立ちましたか?

接続

ヘルプ リソース サポート(opens in new window)

学習する UiPath アカデミー(opens in new window)

質問する UiPath フォーラム(opens in new window)

最新情報を取得