6.8. Parallelism
OpenShift Serverless Logic は並列タスクの実行をシリアル化します。parallel という言葉は同時実行を意味するのではなく、分岐の実行間に論理的な依存関係がないことを意味します。アクティブブランチが実行を中断した場合、非アクティブブランチはアクティブブランチが完了するのを待たずにタスクの実行を開始または再開できます。たとえば、アクティブなブランチは、イベントの受信を待機している間、実行を一時停止する場合があります。
並列状態は、現在のワークフローインスタンス実行パスを、各ブランチごとに 1 つずつ複数のパスに分割する状態です。これらの実行パスは並列で実行され、定義された completionType パラメーター値に応じて現在の実行パスに結合されます。
JSON 形式の並列ワークフローの例
{
"name":"ParallelExec",
"type":"parallel",
"completionType": "allOf",
"branches": [
{
"name": "Branch1",
"actions": [
{
"functionRef": {
"refName": "functionNameOne",
"arguments": {
"order": "${ .someParam }"
}
}
}
]
},
{
"name": "Branch2",
"actions": [
{
"functionRef": {
"refName": "functionNameTwo",
"arguments": {
"order": "${ .someParam }"
}
}
}
]
}
],
"end": true
}
YAML 形式の並列ワークフローの例
name: ParallelExec
type: parallel
completionType: allOf
branches:
- name: Branch1
actions:
- functionRef:
refName: functionNameOne
arguments:
order: "${ .someParam }"
- name: Branch2
actions:
- functionRef:
refName: functionNameTwo
arguments:
order: "${ .someParam }"
end: true
前の例では、allOf は、状態が遷移または終了する前にすべてのブランチの実行が完了する必要があることを定義しています。このパラメーターが設定されていない場合、これがデフォルト値です。