レスポンスオーケストレーションは、プレイブックの入力および出力パラメーターを定義し、基本的なプレイブックワークフローを構築するためのシステムコンポーネントを提供します。
開始/終了
すべてのワークフローには、開始ノードと終了ノードが必要です。ワークフローには開始ノードは 1 つしか設定できませんが、終了ノードは複数設定できます。
開始ノードのデフォルト名は event です。命名の競合を避けるため、プレイブックのオーケストレーション時に他のコンポーネントの名前として「event」を使用しないでください。
出力ゲートウェイ
ゲートウェイは、ワークフローの実行ブランチとフローを制御します。次の図は、ワークフローの例を示しています。
|
名前 |
実行ロジック |
説明 |
|
デフォルトの出力ゲートウェイ |
1 つのノードから複数の下流ブランチに出力し、すべてのブランチを実行します。 |
コンポーネントは不要です。接続線を使用してノードを直接接続します。 説明
条件設定はサポートされていません。 |
|
単一出力 (排他ゲートウェイ) |
ワークフローに複数のブランチがある場合、指定された条件を満たす最初のブランチのみを実行します。 |
単一出力コンポーネントを選択し、条件設定を完了します。 説明
カスタム条件のいずれも満たさないすべてのケースに対して、デフォルトの ELSE 条件が提供されます。 |
|
複数出力 |
ワークフローに複数のブランチがある場合、指定された条件を満たすすべてのブランチを実行します。 |
複数出力コンポーネントを選択し、条件設定を完了します。 |
デフォルトの出力ゲートウェイ

設定手順
ノードをクリックし、接続線を使用して現在のコンポーネントノードを下流のブランチノードに直接接続します。条件設定はサポートされていません。

単一出力 (排他ゲートウェイ)

設定手順
-
基本ノードエリアから、[単一出力] コンポーネントをフローエディターキャンバスにドラッグします。
-
[単一出力] コンポーネントをクリックします。右側の基本情報タブで、[構成] をクリックして条件構成ページを開きます。条件を設定した後、[OK] をクリックして保存します。
ビジネスシナリオに基づいて、[ADD IF] または [AND ELSE IF] をクリックして条件グループを追加します。各条件グループは 1 つのワークフローブランチに対応します。詳細については、「コンポーネントの条件設定」をご参照ください。条件グループの名前を変更して、理解しやすく区別しやすくすることができます。
-
ゲートウェイ接続線を設定します。
-
単一出力ゲートウェイのアイコンにカーソルを合わせ、接続ポイントをクリックしてブランチノードに接続します。

-
接続線をクリックします。右側の設定パネルで、ドロップダウンリストからステップ 2 で設定した条件を選択します。
重要-
カスタム条件のいずれも満たさないケースに対して、デフォルトの ELSE 条件が提供されます。
-
各接続線には、異なる条件を選択してください。
-
-
複数出力

設定手順
-
基本ノードエリアから、[複数出力] コンポーネントをフローエディターキャンバスにドラッグします。
-
[複数出力] コンポーネントをクリックします。右側の基本情報タブで、[構成] をクリックして条件構成ページを開きます。条件を構成した後、[OK] をクリックして、ブランチ選択用に条件を保存します。
ビジネスシナリオに基づいて、[ADD IF] をクリックして条件グループを追加します。各条件グループは複数のワークフローブランチに対応できます。詳細については、「コンポーネントの条件設定」をご参照ください。条件グループの名前を変更して、理解しやすく区別しやすくすることができます。
-
ゲートウェイ接続線を設定します。
-
複数出力ゲートウェイのアイコンにカーソルを合わせ、接続ポイントをクリックしてブランチノードに接続します。

-
接続線をクリックします。右側の設定パネルで、ドロップダウンリストからステップ 2 で設定した条件を選択します。
説明異なる接続線に同じ条件を選択できます。
-
入力ゲートウェイ
入力ゲートウェイには 2 種類あります。ブランチが正常に実行される場合、2 つのゲートウェイは同じように機能します。違いは、ブランチ実行の失敗をどのように処理するかにあります。
|
名前 |
実行ロジック |
説明 |
|
デフォルトの入力ゲートウェイ |
すべての上流ブランチが完了した後に実行を継続します。ブランチが失敗した場合でも実行は続行されます。 |
コンポーネントは不要です。接続線を使用してノードを直接接続します。 |
|
収束ゲートウェイ |
すべての上流ノードが完了するのを待ち、その後、すべての「必須パス」の上流ブランチが実行されたかどうかを確認します。実行されていれば、下流ノードをトリガーします。そうでなければ、ノードの実行は失敗します。 |
|
デフォルトの入力ゲートウェイ

設定手順
ノードをクリックし、接続線を使用して下流のブランチに直接接続します。

収束ゲートウェイ

設定手順
-
「基本ノード」エリアから、[合流] コンポーネントをフローエディターキャンバスにドラッグします。
-
ゲートウェイ接続線を設定します。
-
ノードをクリックし、接続回線を使用して[集約]コンポーネントに直接接続します。

-
接続線をクリックし、右側の設定パネルで、ドロップダウンリストから「必須パス」または「オプション」を選択します。
説明「必須パス」を選択した場合、現在のパス上のノードが実行される必要があります。そうでなければ、後続のノードはトリガーされません。
-
子フロー
-
標準のワークフローと同様に、子フローにも開始ノードと終了ノードが必要です。子フローを使用して複雑なワークフローをグループ化し、より明確で理解しやすくすることができます。子フローはループもサポートしています。
-
子フローと親フローは同じ変数スコープを共有します。子フローは、入力、上流ノードからの戻り値、変数など、親フローのデータを使用できます。子フロー内の変数を変更すると、親フローの結果に影響します。
-
子フローの外部にあるノードは、子フローの内部ノードの最終実行結果にアクセスできます。
子フローのループ

-
[ループを有効にする] ボタンをクリックします。
-
ループモード: Do-while: 最初にループ本文を実行してから、条件を判定します。 while-do: ループ本文を実行する前に条件を判定します。
-
最大ループ回数: 無限ループを防止するために、ループの最大回数を設定します。
-
[ループ終了条件] を設定します。条件として、子フローの各実行におけるすべての内部ノードのパラメーターを使用できます。パラメーター構成については、「コンポーネントの条件構成」をご参照ください。
ループ完了ロジック
各ループの反復は、すべての実行可能なノードが完了した場合にのみ完了したと見なされます。
例えば、「Notify 2」ノードが完了して終了ノードに到達しても、「Delay」ノードがまだ実行中の場合、現在のループの反復は、次の反復を開始する前にすべての実行可能なノードが完了するのを待ちます。
デフォルトのループパラメーター
子フローはデフォルトのパラメーターを提供し、これにより内部コンポーネントが現在のループに関する情報を取得できます。
-
ループ回数:1 から始まります。フォーマット:${child_flow_name.curLoop}。
-
ループインデックス:0 から始まります。フォーマット:${child_flow_name.curIndex}。
例:
子フローで NotifyMessage コンポーネント を使用してメールを作成する場合、ループインデックスを使用して開始ノードから配列パラメーターの値を取得できます。
コンポーネントの条件
単一出力ゲートウェイ、複数出力ゲートウェイ、子フローのループ終了、フィルターコンポーネントなどのシナリオでは、実行フローを決定するために条件を設定する必要があります。SOAR は、以下のルールを持つ共通の設定インターフェイスを提供します:

|
番号 |
説明 |
|
1 - 論理演算子 |
AND:すべての条件を満たす必要があります。 OR:少なくとも 1 つの条件を満たす必要があります。 重要
論理演算子は、同じグループ内のルール間の論理関係のみを決定します。 |
|
2 - 否定スイッチ |
現在のグループの条件評価を否定します。 |
|
3 - グループにルールを追加 |
グループにルールを追加します。グループ内の複数のルール間の論理関係は、左上の 1 - 論理演算子によって決定されます。 |
|
4 - 条件グループを追加 |
フィルター条件のグループを追加します。 重要
異なるグループ間の関係は常に AND であり、1 - 論理演算子の影響を受けません。 |
|
5 - 条件フィールド |
式と定数をサポートします。通常は、前のノードの出力フィールドです。 |
|
6 - 条件判断ルール |
文字列 (String)、数値 (Number)、および観測リストに対して、IN や = などの操作をサポートします。詳細については、フィルターコンポーネントのドキュメントをご参照ください。 |
|
7 - 条件値 |
式と定数をサポートします。 |
設定例

上記の例では、ノードの name フィールドが 'john' または 'alice' であり、かつ age フィールドが 12 から 20 (両端を含む) の間である場合に条件が満たされます。
条件判断ルール
|
ルール |
説明 |
備考 |
|
NOT IN IP Dataset |
IP 観測リストに含まれていない。 |
観測リストを選択する前に、まず Security Center > Agentic SOC > インテグレーションセンター > 観測リスト で設定する必要があります。 |
|
IN IP Dataset |
IP 観測リストに含まれている。 |
|
|
NOT IN Dataset |
観測リストに含まれていない。 |
|
|
IN Dataset |
観測リストに含まれている。 |
|
|
String| equals |
文字列が指定された値と等しいかどうかを確認します。 |
なし |
|
String| not equal to |
文字列が指定された値と等しくないかどうかを確認します。 |
なし |
|
String| contains |
文字列が指定された値を含むかどうかを確認します。 |
例:'abc' は 'bc' を含みます。 |
|
String| does not contain |
文字列が指定された値を含まないかどうかを確認します。 |
例:'abc' は 'd' を含みません。 |
|
String| starts with |
文字列が指定された値で始まるかどうかを確認します。 |
例:'abc' は 'ab' で始まります。 |
|
String| ends with |
文字列が指定された値で終わるかどうかを確認します。 |
例:'abc' は 'bc' で終わります。 |
|
String| does not end with |
文字列が指定された値で終わらないかどうかを確認します。 |
例:'abc' は 'ab' で終わりません。 |
|
String| regex match |
文字列が指定された正規表現に一致するかどうかを確認します。 |
例:'abcabc' は正規表現 '(abc)+' に一致します。 |
|
String| not regex match |
文字列が指定された正規表現に一致しないかどうかを確認します。 |
例:'abab' は正規表現 '(abc)+' に一致しません。 |
|
String| is empty |
文字列が空かどうかを確認します。 |
空の文字列 ('')、null、および NULL はすべて空と見なされます。 |
|
String| is not empty |
文字列が空でないかどうかを確認します。 |
なし |
|
Number| equals |
数値が指定された値と等しいかどうかを確認します。 |
なし |
|
Number| not equal to |
数値が指定された値と等しくないかどうかを確認します。 |
なし |
|
Number| greater than |
数値が指定された値より大きいかどうかを確認します。 |
なし |
|
Number| greater than or equal to |
数値が指定された値以上であるかどうかを確認します。 |
なし |
|
Number| less than |
数値が指定された値より小さいかどうかを確認します。 |
なし |
|
Number| less than or equal to |
数値が指定された値以下であるかどうかを確認します。 |
なし |
|
Number| in range |
数値が設定された範囲内にあるかどうかを確認します。フォーマット:数値,数値。 |
例: 1 は有効値の範囲 -1~5 内です。 |