CloudFlow のワークフローは一連のタスク状態で構成され、各タスク状態は特定の操作またはサービスを表す独立した単位です。 CloudFlow コンソールで空白のキャンバスからワークフローを作成し、ビジネスプロセスを記述および管理します。
前提条件
-
呼び出す関数 — このトピックのワークフロー例では、既存の関数を呼び出す InvokeFunction タスク状態を使用します。関数の ARN を取得するには、「イベントトリガー関数の作成」をご参照ください。
-
クラウドサービス統合用のロール — ワークフローが CloudFlow を含むクラウドサービスと統合する場合、必要な アクセスポリシー が付与されたロールを設定する必要があります。このロールはワークフロー設定で指定します。
操作手順
-
CloudFlow コンソールにログインします。 上部メニューでリージョンを選択します。
-
[ワークフロー] ページで、[ワークフローの作成] をクリックします。
-
[ワークフローの作成] ダイアログボックスで、[空のキャンバスを使用] を選択します。[ワークフローモード] には [高速モード] を選択します。その他のパラメーターは、デフォルト設定のままにします。
説明このトピックでは、Express モードのワークフローを例として使用します。 モードを選択する前に、CloudFlow がサポートするワークフローモードの比較については、「標準モードと Express モード」をご参照ください。
-
[ワークフロー編集] ページで、次のいずれかの方法でワークフローを定義します。
-
CloudFlow Studio — キャンバス上でワークフローを構築します。状態をキャンバスにドラッグし、プロパティパネルで各状態を設定します。
-
YAML 編集 — コードエディターで YAML コードとしてワークフロー定義を記述します。エディターの横にあるワークフロー図に定義が反映されます。
どちらの方法でも同じワークフローを定義でき、編集中に切り替えることができます。 選択した方法のタブで手順を完了してから、本手順の残りのステップに進んでください。
CloudFlow Studio
CloudFlow Studio でワークフローを定義する
-
[CloudFlow Studio] タブで、必要な状態とフローノードをキャンバスにドラッグします。 既存の図では、ビジネスプロセス図に合わせてノードを再配置することもできます。
-
キャンバス上のステートをクリックし、右側のプロパティパネルで、その基本設定、入力設定、出力設定、エラー処理を設定します。ダイアグラム内の各ステートに対してこの手順を繰り返します。
-
本トピックで例として使用する InvokeFunction タスクステートでは、キャンバスで[InvokeFunction] ステートをクリックします。基本設定 タブで、関数 を myfunction に、[バージョンまたはエイリアス] を [LATEST] に、[関数呼び出しメソッド] を [同期呼び出し] に設定します。
InvokeFunction タスク状態の主要なパラメーター
次の表で、InvokeFunction タスク状態の主要なパラメーターを説明します。 その他のパラメーターはデフォルト値のままにします。
設定タイプ パラメーター 説明 例 [基本設定] [ステータス名] 状態の名前。 状態の動作を説明する名前を使用します。 InvokeFunction [関数] 呼び出す関数の名前。 myfunction バージョンまたはエイリアス 呼び出す関数のバージョンまたはエイリアス。 LATEST 関数呼び出しメソッド 関数を同期的に呼び出すか、非同期的に呼び出すかを指定します。関数呼び出しメソッドの詳細については、「関数の呼び出しとトリガー」をご参照ください。 同期呼び出し リクエストペイロード 関数をトリガーするペイロード。 YAML および JSON 形式を使用できます。 {"key1": "value1", "key2.$": "$.myStateInput.key", "key3": 100}次の状態 遷移先の次の状態。 変更はリアルタイムで反映されます。 Hello World [エラー処理] エラーリトライ エラーが発生したときに適用されるリトライポリシー。 下の [リトライの追加] をクリックして、1 つ以上のリトライポリシーを追加します。 エラータイプ 照合可能なエラータイプ。 1 つ以上のエラータイプを選択できます。 FC.BadResponse 最大リトライ数 最大リトライ数。 5 リトライ間隔 (秒) リトライ間の間隔 (秒単位)。 最大値は 86400 です。 3 バックオフ倍率 次のリトライ間隔を、現在のリトライ間隔の何倍にするかを指定する乗数です。 1 最大バックオフ (秒) 指数バックオフリトライにおける最大待機時間 (秒)。 5 エラーキャッチ エラーまたは例外をキャッチし、指定した状態に処理を移行させます。 下の [キャッチルールの追加] をクリックして、1 つ以上のキャッチルールを追加します。 エラータイプ 照合可能なエラータイプ。 1 つ以上のエラータイプを選択できます。 FC.EntityTooLarge フォールバック状態 指定されたエラーがキャッチされたときにフォールバック先の状態。 Hello World 結果の返却 指定されたエラーがキャッチされ、結果の返却が使用される場合、エラーはフォールバックステップの入力に追加されます。 YAML および JSON 形式を使用できます。 {"key": "hello world"}フォームではなく YAML スクリプトを使用して関数、バージョンまたはエイリアス、呼び出しメソッドを指定するには、右上の [YAML 編集に切り替え] をクリックします。 次に YAML スクリプトの例を示します。
invocationType: Sync resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST body: key: value入力と出力のフィルタリング
入力設定 タブで、入力のフィルタリング方法を設定します。オプションは次のとおりです。
-
[JSONPath を使用して特定のパラメーターを選択] — 下のコードエディターで、JSONPath を用いたフィルター式を入力し、パラメーターオブジェクトのサブセットをノード入力として選択します。
-
[元の入力をノードに渡す] — ノードの元の入力をノード入力として使用します。
-
[パラメーターフィルターを使用してパラメーターを構築] — パラメーターフィルターを使用して、新しいパラメーターをノード入力として構築します。
出力設定 タブで、出力のフィルタリング方法を設定します。オプションは次のとおりです。
-
[JSONPath を使用して特定のパラメーターを選択] — 下のコードエディターで、JSONPath を用いたフィルター式を入力し、有効な出力のサブセットをノード出力として選択します。
-
[元の入力を出力に渡す] — ノードの元の入力を出力として下流に渡します。
-
[パラメーターフィルターを使用してパラメーターを構築] — パラメーターフィルターを使用して、新しいパラメーターをノード出力として構築します。
パラメーターフィルターは YAML および JSON 形式をサポートします。 次にパラメーターフィルターの YAML コード例を示します。
FieldA: 123 FieldB: string FieldC.$: $Input説明エラー処理は、ワークフローを他のサービスと統合する場合にのみ必要です。 詳細については、「エラー処理」をご参照ください。
YAML 編集
YAML でワークフローを定義する
-
[YAML] タブまたは上部のナビゲーションバーにある [YAML] ボタンをクリックして、YAML 編集に切り替えます。
-
左側のコードエディターで、ワークフローを定義する YAML コードを入力します。 右側のワークフロー図がリアルタイムで更新されます。 次にワークフロー定義のコード例を示します。
Type: StateMachine Name: my-wkfl SpecVersion: v1 StartAt: InvokeFunction States: - Type: Task Name: InvokeFunction Action: FC:InvokeFunction TaskMode: RequestComplete Parameters: invocationType: Sync resourceArn: >- acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST Retry: - Errors: [] Description: 'リトライポリシー #1' MaxAttempts: 1 IntervalSeconds: 1 Next: Hello World Catch: - Errors: - FC.AccessDenied Description: 'エラーキャッチルール #1' Next: Hello World - Type: Pass Name: Hello World End: true -
ワークフローを保存する前に、
resourceArnの値を検証してください。 サンプル値のacs:fc:{regionId}:{accountId}:functions/myfunction/LATESTを、「前提条件」で説明されている手順に従って取得した、実際の関数の ARN に置き換えてください。 サンプル値では、次のプレースホルダーが使用されています。-
regionId:関数が配置されている Alibaba Cloud リージョン (cn-beijingやcn-hangzhouなど)。 -
accountId:お客様の Alibaba Cloud アカウント ID。 -
myfunction:関数の実際の名前。 -
LATEST:関数の最新バージョンが使用されることを示します。 必要に応じて、別のバージョンまたはエイリアスを指定できます。
-
-
-
(オプション) 上部の [ワークフロー設定] をクリックし、ワークフローの説明とワークフローの実行に使用するロールを指定します。 ロールには、「前提条件」で説明されているように、必要なアクセスポリシーが付与されている必要があります。
-
[保存] および [終了] をクリックします。
ワークフローの編集
既存のワークフローを編集して、その定義、説明、またはワークフローの実行に使用するロールを変更します。
-
CloudFlow コンソールにログインします。 上部メニューでリージョンを選択します。
-
[ワークフロー] ページで、編集するワークフローをクリックします。
-
ワークフロー詳細ページの右上隅にある[ワークフローの編集]をクリックし、[CloudFlow Studio 編集] または [YAML 編集] を選択します。
-
ワークフローを変更します。
-
CloudFlow Studio では、タスクステートを追加または削除したり、タスクステートの 基本設定、入力設定、出力設定、または エラー処理 を変更したりします。パラメーターの説明については、手順の主要なパラメーター表をご参照ください。
-
YAML 編集では、ワークフロー定義を変更します。 右側のチャートエリアのワークフロー図に変更が反映されます。
-
-
(オプション) ワークフローの説明またはワークフローの実行に使用するロールを変更するには、上部の [ワークフロー設定] をクリックします。
-
[保存] と [終了] をクリックします。
次のステップ
ワークフローを保存した後、定義が期待どおりに機能することを確認するために、実行してください。手順については、「ワークフローの実行」をご参照ください。
スケジュールに従ってワークフローを実行するには、「ワークフローのスケジューリング」をご参照ください。ワークフローを他のクラウドサービスに接続するには、「ワークフローの統合」をご参照ください。