プレイブックのコンポーネント操作では、定数、変数、式、関数などのパラメーターをサポートします。パラメーター処理には、抽出、重複排除、ループ実行などのステップが含まれます。
パラメーターの分類
機能別に分類すると、パラメーターはプレイブック入力パラメーター、プレイブック出力パラメーター、コンポーネント操作入力パラメーター、コンポーネント操作出力パラメーターに分けられます。
型別に分類すると、パラメーターはシステムパラメーターとコンポーネントパラメーターに分けられます。
説明コンポーネント操作の実行中は、任意のノードからシステムデフォルトパラメーターを取得できます。ただし、コンポーネントパラメーターは含まれません。
コンポーネント(ノード)の入力および出力パラメーター
コンポーネントの入力パラメーターは、カスタム値または上流ノードの出力である場合があります。上流ノードの出力を使用する場合は、そのノードがオーケストレーションパス上で現在のノードより前に配置されている必要があります。
マルチパスのシナリオでは、ノード名がグローバルに一意であることを確認してください。
以下の図の ノード B を例に説明します。ノード B は、上流のノード A の出力およびプレイブック入力パラメーターを取得できます。一方、ノード D の出力は同一ブランチ上にないため取得できません。また、ノード C はノード B の先行ノードではないため、その出力も取得できません。
システムパラメーターの説明
プレイブック内のシステムパラメーター
システムデフォルトパラメーターは、任意のノードからアクセス可能です。以下の表に示す式を使用してパラメーターを取得します。「イベント」は開始ノードの名前とみなすことができます。プレイブックのシステムパラメーターを取得するには、`${event.parameter_name}` の形式を使用します。
パラメーター | データの型 | 式 | 説明 |
_tenant_id | String | ${event._tenant_id} | プレイブックを呼び出した Alibaba Cloud アカウント ID。 |
_domain_id | String | ${event._domain_id} | ログイン中のユーザーのロール状態。
|
_trigger_user | String | ${event._trigger_user} | プレイブックをトリガーした Alibaba Cloud アカウント ID。RAM ユーザーを使用している場合は、RAM ユーザーの ID が返されます。 |
_region_id | String | ${event._region_id} | リージョン ID。 |
_req_uuid | String | ${event._req_uuid} | 現在のプレイブック実行タスクの一意の識別子。 |
parentTaskUuid | String | ${event.parentTaskUuid} | 親プレイブックの `_req_uuid`。子プレイブックが呼び出された場合に存在します。 |
parentTaskName | String | ${event.parentTaskName} | 親プレイブックの UUID。子プレイブックが呼び出された場合に存在します。 |
コンポーネント操作出力におけるシステムパラメーター
任意のコンポーネントの出力には、以下のパラメーターが含まれます。カスタムパラメーターは `datalist` にカプセル化されます。すべての出力パラメーター値を取得するには、`${node_name.datalist.*}` を使用します。
パラメーター | データの型 | 説明 |
datalist | JSONArray | 操作実行後の出力パラメーター。 重要 コンポーネントからのカスタム出力パラメーターも `datalist` に格納されます。 |
total_data_successful | Int | 操作実行中に正常に処理されたデータ量。 |
total_data | Int | 操作実行中に処理されたデータ量。 |
total_data_with_dup | Int | 操作実行中に正常に処理され、重複排除されたデータ量。 |
total_exe_successful | Int | 現在の操作が正常に実行された回数。 |
total_exe | Int | 現在の操作が実行された回数。 |
status | Boolean | 操作の実行ステータス。有効な値:`true`、`false`。 |
messageForUser | String | 実行失敗時のユーザー向けエラーメッセージ。 |
message | String | 実行失敗時のシステムエラーメッセージ。 |
failed_exe_detail | String | 実行失敗時の詳細エラー情報。 |
パラメーターの形式
パラメーターは、定数、変数、式 の 3 つの基本形式をサポートします。これらの形式を組み合わせたり、より複雑なネスト構造を使用したりすることもできます。
基本形式 | 説明 | 例 |
定数 | 固定文字列。 | Ali. |
変数 | プレイブック入力パラメーターおよび先行ノードの出力パラメーターから値を抽出します。 | ${event.aliuid}(プレイブック入力パラメーターから `aliuid` を取得)。 |
式 | 埋め込み式および関数を使用して値を生成します。形式は `<%=expression|function%>` です。サポートされる関数の一覧については、「式のビルトイン関数一覧」をご参照ください。 | 式の例:Java 構文のみ対応(例:`<%=2*60*60%>`)。 機能: <%=currentTime()%>。 |
組み合わせ形式 | 定数_変数_式 | 組み合わせの例: `Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%>`。操作実行時に、変数および式が解析され、対応する値に置き換えられます(例:`Ali_aliuid_current_time_7200`)。 ネストの例(式内に変数を埋め込む可):`<%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%>`。この式は `${DateTime:event.datalist.*.gmt_create}` から `gmt_create` 値を取得し、600 を減算した後、日付としてフォーマットします。 |
式のビルトイン関数一覧
関数名 | 説明 | 例 | 出力例 |
currentTime | 現在のタイムスタンプを返します。 | <%=currentTime()%> | 2025-06-05 10:30:00 |
secondstamp_add | 指定された秒数(`secNum`)を現在のタイムスタンプに加算します。 | <%=secondstamp_add(currentTime(),300L)%> | 2025-06-05 10:30:09 |
formatTimeStamp | 指定されたフォーマットに基づいて入力タイムスタンプをフォーマットします。 | <%=formatTimeStamp(currentTime(),"yyyyMMdd")%> | 20250605 |
timestampToseconds | 指定された秒数(`secNum`)を現在のタイムスタンプに加算し、結果を秒単位で出力します。 | <%=timestampToseconds(currentTime(),300L)%> | 1749099848 |
splitStr | 入力文字列(`inputStr`)を指定されたデリミタ(`splitStr`)に基づいてリストに分割します。 | <%=splitStr("test,value",",")%> | [test,value] |
parseTimeMs | 時刻形式の文字列をミリ秒に変換します。 | <%=parseTimeMs("2025-06-05 10:30:32","yyyy-MM-ddHH:mm:ss")%> | 1749090632000 |
currentTimeToMs | 現在のタイムスタンプをミリ秒に変換します。 | <%=currentTimeToMs()%> | 1749091369688 |
currentHourToMs | 現在の時間のタイムスタンプをミリ秒に変換します。計算は、現在の時間の 0 分 0 秒から開始されます。 | <%=currentHourToMs()%> | 1749088800000 |
currentDayToMs | 現在の日のタイムスタンプをミリ秒に変換します。計算は、現在の日の 0 時 0 分 0 秒から開始されます。 | <%=currentDayToMs()%> | 1749052800000 |
parseTimeMsWDefault | タイムスタンプをミリ秒に解析し、デフォルト値をサポートします。最初のパラメーターが空の場合、2 番目のパラメーターがデフォルト値として使用されます。 | <%=parseTimeMsWDefault("2025-06-05 10:30:32",1749091369688L)%> | 1749090632000 |
splitStrToJsonArray | 入力文字列(`inputStr`)を指定されたデリミタ(`splitStr`)に基づいて JSONArray に分割します。 | <%=splitStrToJsonArray("test,value",",")%> | ["test","value"] |
concatListStr | 指定されたデリミタを使用して文字列を連結します。この関数は `splitStr` 関数と併用する必要があります。 | <%=concatListStr("|",splitStr("test,value",","))%> | test|value |
substring | 部分文字列を抽出します。 パラメーター 1:抽出元の文字列。 パラメーター 2:開始インデックス。 パラメーター 3:終了インデックス。 | <%=substring("012345",0,3)%> | 012 |
remainStrStartEnd | 指定された開始および終了マーカーの外側の文字を保持します。`inputStr` の先頭 `beginSize` 文字と末尾 `endSize` 文字を保持し、それらをアンダースコア 5 つで接続します。
| <%=remainStrStartEnd("012345",2,2)%> | 01_____45 |
toLong | オブジェクトを long 型に変換します。 パラメーター 1:入力値。 パラメーター 2:変換失敗時のデフォルト値。 | <%=toLong("1234",12L)%> | 1234.0 |
toLowerCase | 文字列内の英字を小文字に変換します。 | <%=toLowerCase("TEST")%> | test |
toUpperCase | 文字列内の英字を大文字に変換します。 | <%=toUpperCase("test")%> | TEST |
toJSONObject | JSON 文字列を JSON オブジェクトに変換します。 | <%=toJSONObject("{\"name\":\"test\",\"age\":12}")%> | {"name":"test","age":12} |
base64encode | Base64 を使用して文字列をエンコードします。 | <%=base64encode("abc")%> | YWJj |
base64decode | Base64 文字列をデコードします。 | <%=base64decode("YWJj")%> | abc |
replace | 文字列の一部を置き換えます。
| <%=replace("abc123","abc","aaa")%> | aaa123 |
isNull | オブジェクトが null または空かどうかをチェックします。 | <%=isNull("")%> | true |
変数パラメーター
プレイブックコンポーネントの実行中、フロー内の先行ノードからパラメーターを取得したい場合は、コンポーネント内で変数パラメーター形式を使用します。プレイブック入力パラメーターの場合は、ノード名として event を使用します。これは 開始ノードの出力パラメーター とみなすことができます。したがって、プレイブックのオーケストレーション中には、コンポーネント名として「event」を使用しないでください。
現在、ノードの出力パラメーターからのみデータを取得できます。
プレイブック入力パラメーターは、開始ノードの出力パラメーターと同じです。
現在のノードの入力パラメーターは、直前のノードの出力パラメーターと同じです。
構文形式
ノード出力パラメーター を取得する構文は `${node_name.parameter_path}` です。パスには JSONPath 方式を使用し、任意の階層数の JSON 形式をサポートします。
JSONObject 形式の場合、ピリオド(`.`)を使用して子ノードのデータを直接取得します。JSONArray 形式の場合、アスタリスク(`*`)はすべてのデータを示します。また、数値インデックスを使用して単一のデータを取得することもできます。以下に、操作実行後の出力パラメーター を取得する例を示します:
タイプ
構文
説明
JSON 内のパラメーターを取得
${node_name.datalist.*.parameter1.parameter2}
説明開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.parameter2}` です。
`parameter1` の下の `parameter2` のデータを取得します。
説明`parameter1` の値は JSONObject 形式である必要があります。
JSON 配列内のすべてのデータを取得
${node_name.datalist.*.parameter1.*.parameter2}
説明開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.*.parameter2}` です。
`parameter1` の下のすべての JSONObject から `parameter2` のデータを取得します。
説明`parameter1` の値は JSONArray 形式である必要があります。
JSON 配列から単一のデータを取得
${node_name.datalist.*.parameter1.[0].parameter2}
説明開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.[0].parameter2}` です。
`parameter1` の下の最初の JSONObject から `parameter2` のデータを取得します。
説明`parameter1` の値は JSONArray 形式である必要があります。
構文ルールを手動で記述するほか、入力ボックス内のドロップダウンリストからパラメーターを選択することで、対応する構文を自動生成することもできます。テスト完了後にこの方法を推奨します。以下の図に例を示します。

変数パラメーターの取得例
ノード名が `node1` のノードを例に説明します。このノードの出力パラメーターは以下のとおりです:
{
"datalist": [
{
"person": {
"weight": "120",
"age": "12"
}
},
{
"person": {
"weight": "121",
"age": "13"
}
}
],
"total_data_successful": 2,
"total_data": 2,
"total_exe_successful": 2,
"total_exe": 2,
"total_data_with_dup": 2,
"status": true
}構文 | 説明 |
${event._req_uuid} | 開始ノード(入力パラメーター)からシステムパラメーター `_req_uuid` の値を取得します。 |
${event.parentTaskUuid} | 子プレイブック内で親プレイブックの `_req_uuid` を取得します(親プレイブックが呼び出された場合)。 |
${node1.total_data_successful} | ノード `node1` が正常に処理したデータ量を取得します。 出力値:`2`。 |
${node1.datalist.*.person.age} | ノード `node1` の `datalist` の下にある `person` オブジェクトのすべての `age` データを取得します。 出力値:`{12,13}`。 |
${node1.datalist.[0].person.age} | ノード `node1` の `datalist` の最初の項目にある `person` オブジェクトの `age` データを取得します。 出力値:`12`。 |
パラメーターのデータの型変換
プレイブック実行中、ほとんどのシナリオでデータは文字列として処理されます。データの型が要件を満たさない場合、ソース型からターゲット型への変換が可能です。
形式は `${data_type:data}` です。以下の表に、サポートされるデータの型変換を示します。
データの型 | 説明 | サポートされるソース型 |
Boolean | ブール値に変換します。有効な値:`true`、`false`。 |
|
Long | Long に変換します。 |
|
Int | Int に変換します。 | |
Double | Double に変換します。 | |
String | String に変換します。 | すべての型がサポートされます。 |
DateTime | 日付に変換します。 |
|
JSONObject | JSONObject からキーと値を抽出して新しい JSONObject を作成します。これは、複数列のデータを `{}` 形式でカプセル化するために使用されます。出力形式は `{"fieldname":"fieldValue",...}` です。 | JSONObject 型のみサポートされます。 |
JSONArray | JSONObject からキーと値を抽出して JSONArray を作成します。これは、複数行・複数列のデータを `[{}]` 形式でカプセル化するために使用されます。その後、データは単一行・単一列の形式で出力されます。 | JSONObject 型のみサポートされます。 |
JSONObjectStr | JSONObject を文字列に変換します。 | JSONObject 型。 |
JSONArrayStr | JSONArray を文字列に変換します。 | JSONArray 型。 |
例
JSONObject の例:プレイブック入力パラメーターは `{"src_ip":"127.0.0.1","dst_ip":"127.0.0.2","msg":"hello"}` です。
${JSONObject:event}:イベント全体を完全な JSON 文字列として出力します。
${JSONObject:event.src_ip}:イベントの `src_ip` フィールドから JSONObject を作成します。結果:`{"src_ip":"127.0.0.1"}`。
${JSONObject:event.src_ip|msg}:イベントの `src_ip` および `msg` フィールドから JSONObject を作成します。結果:`{"src_ip":"127.0.0.1","msg":"hello"}`。
${JSONArray:event}: イベント全体を完全な JSONArray として出力します。
${JSONArray:event.src_ip}:イベントの `src_ip` フィールドから JSONArray を作成します。結果:`[{"src_ip":"127.22.22.1"}]`。
${JSONArray:event.src_ip|msg}:イベントの `src_ip` および `msg` フィールドから JSONArray を作成します。結果:`[{"src_ip":"127.0.0.1","msg":"hello"}]`。
JSONArray の例:プレイブック入力パラメーターは `{"datalist":[{"src_ip":"127.0.0.1","dst_ip":"127.1.0.1","msg":"hello"},{"src_ip":"127.1.0.1","dst_ip":"127.1.0.1","msg":"hello"}]}` です。
${JSONObject:event.datalist.*.src_ip}:複数行に展開されます。各行の結果は JSONObject であり、例:`{"src_ip":"127.x.0.1"}`。
${JSONObject:event.datalist.*.src_ip|msg}:複数行に展開されます。各行は JSONObject であり、例:
{"src_ip":"127.x.0.1","msg":"hello"}。${JSONArray:event.datalist.*.src_ip}:単一行の JSON 配列に展開されます。例:`[{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}]`。
${JSONArray:event.datalist.*.src_ip|msg}:結果を単一の JSONArray に結合します。結果:`[{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}]`。
パラメーター処理およびノード実行フロー
ノードパラメーターの抽出:すべての必要な上流ノードの実行が完了した後、システムは、現在のノードの入力構成に基づいて、実際の入力データを抽出します。抽出プロセスの詳細を以下に示します。
ノードの実行:ノードの入力パラメーターが生成された後、複数の入力パラメーターのセットが同一の場合、システムは自動的に重複排除を行い、その後ノードコンポーネント操作を実行します。
説明操作が複数の値セットをパラメーターとして受け入れる場合、操作は複数回実行されます。これにより操作が簡素化されます。
たとえば、侵害されたアプリケーションのすべてのサーバーを特定し、各サーバーに対して「悪意のあるファイルの消去」操作を実行したい場合、操作パラメーターで「サーバー IP」(`${node1.datalist.*.ip}`)を選択するだけで済みます。システムは、すべての IP アドレスに対して「悪意のあるファイルの消去」操作を自動的に実行します。各サーバーに対して個別に消去操作を実行するループを記述する必要はありません。
出力結果の集約および重複排除:ノードの複数回実行の結果は集約され、自動的に重複排除されます。重複排除のロジックでは、すべてのフィールドが同一であるエントリを重複と見なします。例:
重複排除前
重複排除後
[ { "a":"11", "b":"22" }, { "a":"11", "b":"22" }, { "a":"11", "b":"33" } ][ { "a":"11", "b":"22" }, { "a":"11", "b":"33" } ]
パラメーター抽出プロセス
1 つのデータソースの処理
任意の深さの複雑な JSON 形式はツリー構造とみなすことができます。JSON からのパラメーター抽出の原則は以下のとおりです:同一深さの兄弟関係は維持され、先祖ノードは展開され、兄弟でも先祖でもないノード間ではデカルト積が作成されます。
データは任意の深さから自動的に抽出されます。以下の図に例を示します。

同一深さの兄弟関係は維持されます。以下の図に例を示します。

先祖ノードは展開されます。以下の図に例を示します。

兄弟でも先祖でもないノード間ではデカルト積が作成されます。以下の図に例を示します。

複数のデータソースの処理
各データソースの処理結果からデカルト積が作成されます。
