すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:タスク

最終更新日:Mar 08, 2025

タスクの状態を使用して、統合サービスの API 操作を呼び出し、複雑なワークフローを完了できます。このトピックでは、タスクの状態について説明し、タスクの状態に関連する使用例を示します。使用例は、タスクの状態を使用して統合サービスの API 操作を呼び出すのに役立ちます。

概要

タスクの状態は、統合サービスの API 操作を呼び出してジョブを完了するために使用されます。タスクの状態を使用して、関数、Alibaba Cloud サービスの API 操作、または HTTP や HTTPS などの共通プロトコルを介したサードパーティサービスを呼び出すことができます。フロー定義言語(FDL)では、現在の状態をタスクとしてマークして、タスクの状態を示すことができます。

次の表に、タスクの状態に関連するパラメーターを示します。

パラメーター

タイプ

必須

説明

Name

文字列

はい

状態の名前。

my-state-name

Description

文字列

いいえ

状態の説明。

ここに記述します

Type

文字列

はい

状態のタイプ。

Task

Action

文字列

はい

現在のタスクで実行される操作。操作は通常、サービスの API 操作の名前、または統合サービスの操作の名前です。値の形式:

<サービス名>:<API 操作名>。

FC:InvokeFunction

TaskMode

enum

いいえ

タスクが呼び出されるモード。CloudFlow は 3 つのモードを提供します。詳細については、「サービス統合モード」をご参照ください。

  • RequestComplete

  • WaitForCustomCallback

  • WaitForSystemCallback

WaitForCustomCallback

InputConstructor

map[string]any

いいえ

入力コンストラクター。

入力と出力」トピックの InputConstructor セクションをご参照ください。

Parameters

map[string]any

いいえ

呼び出しを要求されるパラメーターの仕様。仕様は操作に対応します。

パラメーターの値は定数にすることも、JSONPath 形式に従うこともできます。

仕様の詳細については、「概要」をご参照ください。

Timeout

文字列

いいえ

呼び出しのタイムアウト期間。単位:秒。有効な値:0~604800。値 0 は、タスクがタイムアウトしないことを示します。

30

式を使用して、コンテキストに基づいてパラメーターを動的に構築できます。

Timeout.$: $Input.timeout

Retry

map[string]any

いいえ

エラー再試行ポリシー。

エラー処理」をご参照ください。

Catch

map[string]any

いいえ

エラーキャプチャポリシー。

エラー処理」をご参照ください。

OutputConstructor

map[string]any

いいえ

出力コンストラクター。

詳細については、「入力と出力」トピックの OutputConstructor セクションをご参照ください。

Next

文字列

いいえ

現在の状態が完了した後に実行される次の状態。End パラメーターの値が true の場合は、このパラメーターを空のままにします。

my-next-state

End

bool

いいえ

状態が現在のスコープの終端状態かどうかを指定します。

true

サンプルリクエスト

Function Compute の呼び出し

stateTask タイプであることを宣言し、呼び出される Function Compute パラメーターの仕様に基づいて、Parameters セクションで呼び出される関数の情報を指定できます。パラメーター仕様の詳細については、「手順 2:呼び出しパラメーターの構成」をご参照ください。関数は、最適化された統合モードまたは Alibaba Cloud OpenAPI で呼び出すことができます。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: 同期関数呼び出しの例
States:
  - Name: 同期関数呼び出しの例
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::functions/myFunction1/LATEST
      invocationType: Sync
      body:
        key: name
    Next: 非同期関数呼び出しの例
  - Type: Task
    Name: 非同期関数呼び出しの例
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Async
      resourceArn: acs:fc:{region}:{accountID}:functions/myFunction/LATEST
      body:
        key: name
    Next: SucceededExit
  - Type: Pass
    Name: SucceededExit
    End: true

Alibaba Cloud サービスの API 操作の呼び出し

Alibaba Cloud OpenAPI の仕様に基づいて、対応する API 操作を呼び出します。次のサンプルコードは、ECS:DescribeInstances 操作を実行する方法を示しています。

Type: StateMachine
SpecVersion: v1
Name: MyWorkflow
StartAt: DescribeInstances
States:
  - Type: Task
    Name: DescribeInstances
    Action: ECS:DescribeInstances
    TaskMode: RequestComplete
    Parameters:
      RegionId: cn-hangzhou
      VpcId: vpc-bp11y195luy47h8****
      VSwitchId: vsw-bp1wb297ekw7xyh****
    End: true

Alibaba Cloud 以外で提供されているサービスの呼び出しと、タスクのタイムアウトとキャッチの構成

次の例では、WaitForCustomCallback 統合モードを使用して HTTP サービスが呼び出されます。タスクのタイムアウト期間は 1 時間です。タスクが 1 時間以内に完了しない場合、ワークフローはエラーをスローし、Catch フィールドで指定されたルールによってキャッチされます。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SubmitTask
States:
  - Type: Task
    Name: SubmitTask
    Action: HTTP:Request
    TaskMode: RequestComplete
    Timeout.$: $Input.timeout
    Parameters:
      method: POST
      url: https://*****
      body:
        taskName: fly
      headers:
        Content-Type: multipart/form-data
    Catch:
      - Errors:
          - FnF.TaskTimeout
        Description: 'エラーキャプチャルール #1'
        Next: NotifyOnTaskTimeout
        OutputConstructor:
          ErrorCode: TaskTimeout
          ErrorMessage: タスクがタイムアウトしました。
    End: true
  - Type: Task
    Name: NotifyOnTaskTimeout
    Action: HTTP:Request
    TaskMode: RequestComplete
    Parameters:
      method: POST
      url: https://******
      body:
        taskName: fly
        errorCode.$: $Input.ErrorCode
        errorMessage.$: $Input.ErrorMessage
      headers:
        Content-Type: multipart/form-data
    End: true

タスクのタイムアウト期間は、実行入力から取得されます。実行入力の例:

{
  "timeout": 10
}

タスクが指定された時間内に完了しない場合、タイムアウトエラーがキャッチされます。ワークフローは NotifyOnTaskTimeout ノードに進み、タスクがタイムアウトしたことを通知します。

image