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
は、状態が遷移または終了する前にすべてのブランチの実行が完了する必要があることを定義しています。このパラメーターが設定されていない場合、これがデフォルト値です。