このトピックでは、フロー定義言語の基礎について説明し、使用例を紹介します。
基礎
フロー定義言語 (FDL) は、ビジネスロジックを定義します。フローが実行されると、Serverless Workflow サービスは、フロー定義に基づいて順番にステップを実行します。FDL では、フローにステップが含まれます。ステップには、task、succeed、fail、wait、pass などの単純なアトミックステップや、choice、parallel、foreach などの複雑な制御ステップがあります。これらのステップを組み合わせることで、複雑なビジネスロジックを構築できます。たとえば、parallel ステップのブランチは、ステップのシーケンスにすることができます。実行中にステップでエラーが発生した場合、FDL では retry と catch の機能を使用してエラーを処理します。
FDL ステップは、プログラミング言語の関数に似ています。ステップの組み合わせは、関数呼び出しに似ています。入力と出力を使用して、ステップ間でデータを渡します。各ステップは、ローカル変数を使用してデータを保存します。ステップに別のステップが含まれている場合、外側のステップは親ステップで、内側のステップは子ステップです。
フローを定義する際、次のステップを使用できます:
passステップをプレースホルダーとして使用して、フローの基本構造を計画できます。taskステップを使用して、Function Compute の関数を呼び出せます。waitステップを使用して、指定した期間フローの実行を一時停止できます。choiceステップを使用して、異なる実行パスを定義できます。succeedまたはfailステップを使用して、フローを早期に停止できます。parallelステップを使用して、複数のブランチを並列に実行できます。foreachステップを使用して、配列データを並列に処理できます。
フローには次のプロパティがあります:
- version (必須):フローのバージョン。v1 のみがサポートされています。
- type (必須):定義のタイプ。flow に設定します。
- steps (必須):フロー内のステップのシーケンス。ステップが正常に実行されると、シーケンス内の次のステップが実行されます。フローを早期に終了するには、ステップの
endプロパティを使用するか、succeed または fail ステップを使用します。 - inputMappings (オプション):入力マッピング。入力マッピングで参照される
$input変数は、StartExecutionAPI リクエストのInputパラメータです。 - outputMappings (オプション):出力マッピング。出力マッピングで参照される
$local変数は、シーケンス内の各ステップの実行結果を保存する JSON オブジェクトです。説明 出力マッピングを指定しない場合、$localがフローの最終出力として使用されます。 - timeoutSeconds (オプション):フローのタイムアウト期間 (秒単位)。フローの実行時間が指定されたタイムアウト期間を超えると、実行はタイムアウトします。
例
- 次のフロー例には、task ステップが含まれています。このステップは、Function Compute の関数を呼び出します。
version: v1 type: flow steps: - type: task name: hello resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello - 次のフロー例には、
step1とstep4の 2 つのステップからなるシーケンスが含まれています。最初のステップstep1は、step2とstep3という 2 つの子ステップを含む親ステップです。version: v1 type: flow steps: - type: parallel name: step1 branches: - steps: - type: pass name: step2 - steps: - type: pass name: step3 - type: pass name: step4
詳細情報
フロー定義言語の機能の詳細については、次のトピックをご参照ください: