適用対象: Azure Logic Apps (従量課金 + 標準)
関連するアクションのグループが成功または失敗した後にのみ実行するアクションがワークフローにある場合があります。 このシナリオでは、これらのアクションの論理コンテナーとして スコープ アクションを追加します。 すべてのスコープ アクションの実行が完了すると、スコープは次のような独自の状態を取得します。
- 成功しました
- 失敗
- スキップ
- TimedOut
- 取り消し済み
- Aborted
ワークフローでは、スコープの状態を評価し、この状態に基づいて実行する後続のアクションを選択できます。 スコープの状態を確認するには、アクションの実行状態を確認するのと同じ方法を使用できます。 既定では、スコープのすべてのアクションが成功すると、そのスコープの状態は [成功] とマークされます。 スコープ アクションが失敗すると、スコープの状態は [失敗] としてマークされます。
スコープは、一連のアクションの実行が完了した後の 例外およびエラー処理、クリーンアップ ロジック、後処理に一般的に使用されます。 スコープは、次のユース ケースがある場合に適しています。
- 複数のアクションを 1 つのグループとして扱います。
- すべてのスコープ アクションが成功した場合にのみ、フォローアップ アクションを実行します。
- 各アクションの後ではなく、1 か所でエラーを処理します。
- プライマリ ロジックとエラー処理またはクリーンアップ ロジックを分離します。
次の大まかな例は、スコープと、スコープの状態を確認する条件を示しています。 スコープアクションが予期せず失敗または終了した場合、スコープはそれぞれ 失敗 または 中止 としてマークされます。 ワークフローは、 スコープに失敗したメッセージを 送信します。 スコープが設定されたすべてのアクションが成功した場合、ワークフローは スコープに成功した メッセージを送信します。
このガイドでは、ワークフローにスコープを追加する方法と、サービスに依存しない例を使用してスコープがどのように機能するかを示します。
前提条件
Azure アカウントとサブスクリプション。 無料の Azure アカウントを取得します。
消費型または標準ロジック アプリのリソースとワークフロー
ワークフローが空白の場合は、最初 にワークフローを 実行するトリガーを追加します。
このガイドの例では、 繰り返し トリガーを使用します。 このトリガーを追加するには、次の手順に従います。
Azure portal で、ロジック アプリとワークフローをデザイナーで開きます。
一般的な手順に従って、ワークフローにスケジュール トリガーという名前の繰り返しトリガーを追加します。
デザイナーで、トリガーを選択します。 トリガー情報ペインが開いたら、[ パラメーター ] タブで、トリガー パラメーターを次の値に設定します。
パラメーター 価値観 Interval 30頻度 分 例えば次が挙げられます。
スコープ アクションを追加する
デザイナーで、トリガーの下にある一般的な手順に従って、スコープという名前のコントロール アクションを追加します。
[スコープ] アクション名を
Process orderに変更します。次に例を示します。
ワークフローを保存します。
スコープにアクションを追加する
この例では、次の手順では、スコープで実行するアクションとして注文処理シナリオをシミュレートします。
デザイナーの
Process orderタイトル バーで、下矢印を選択してスコープ アクションを展開します。次に例を示します。
一般的な手順に従って、次のアクションをスコープに追加します。
Compose という名前のデータ操作アクションを追加します。
アクション名を
Validate orderに変更します。[ 入力 ] ボックスに「
Order validated」と入力します。
Delay という名前のスケジュール アクションを追加します。
名前を
Fulfill orderに変更します。[カウント] を [
5] に設定します。 [単位] を [秒] に設定します。
Compose という名前のデータ操作アクションを追加します。
アクション名を
Complete orderに変更します。[ 入力 ] ボックスに「
Order fulfilled」と入力します。
完了すると、スコープ アクションは次の例のようになります。
現在、このスコープ内のすべてのアクションは、ワークフローの実行時に成功します。
ワークフローを保存します。
スコープの状態を確認する条件を追加する
スコープ アクションの下に、一般的な手順に従って、Condition という名前の制御アクションを追加します。
アクション名を次の値に変更します。
Did order processing fail[ パラメーター ] タブで、スコープの状態を確認する式で次の条件を設定します。
左端の [値の選択] ボックス 内を選択 します。 入力オプションが表示されたら、式エディター (関数アイコン) を選択します。
式エディター ボックスに、次の式を入力します。
actions('Process_order')?['status']例えば次が挙げられます。
疑問符 (?) 演算子を使用すると、
statusプロパティの値が見つからないか、親オブジェクトが null の場合に、ワークフローがランタイム エラーで失敗するのを防ぐことができます。終了したら、 [追加] を選択します。
中央の演算子ボックスで、値が
=に設定されていることを確認します。右端の [ 値の選択 ] ボックスに、
Failed値を入力します。
完了すると、条件は次の例のようになります。
条件がスコープの終了方法に関係なくスコープの状態をチェックすることを確認するには、次の手順に従って実行後の設定を構成します。
条件アクションの [設定] タブの [ 実行後] で、[ プロセス注文 ] セクションを展開します。
すべてのスコープの状態を選択します。
- 成功しました
- タイムアウトしました
- スキップされている
- 失敗しました
ワークフローを保存します。
スコープの結果に基づいて実行するアクションを追加する
デザイナーの条件内で、True の分岐がまだ展開されていない場合は展開します。
True ブランチで Compose アクションを追加し、次の手順に従います。
アクション名を
Handle failureに変更します。入力 ボックスに入力します。
Order processing failed. Take appropriate action.
例えば次が挙げられます。
False 分岐で Compose アクションを追加し、次の手順に従います。
アクション名を
Order succeededに変更します。[ 入力 ] ボックスに
Successfully processed order.を入力します。
例えば次が挙げられます。
ワークフローを保存します。
ワークフローのテスト
デザイナー ツール バーの [実行] メニューから [実行] を選びます。
サイドバーで、[ 実行履歴] を選択します。
[ 実行履歴 ] ページで、ワークフローの状態として [成功] を示す最新の実行を選択します。
実行の詳細ページには、スコープ アクションが正常に実行されたことを示します。次に例を示します。
スコープ アクションを展開して、スコープ内の各アクションを確認します。
スコープ内の各アクションが正常に実行されました。次に例を示します。
条件アクションを True 分岐と False 分岐と共に展開します。
スコープ アクションの状態に基づいて実行されたのは、False ブランチのみです。例えば、次のようになります。
エラー パスをテストし、 True ブランチを強制的に実行するには、次の手順に従います。
サイドバーでデザイナーを選択します。
スコープ アクションに、失敗する Compose アクションを追加します。
たとえば、 Compose アクションに、実行時にエラーをスローする式を入力します。次に例を示します。
int(triggerBody()?['forceFailure'])ワークフローを保存します。 ワークフローを再実行します。 実行履歴を表示します。
今回は、ワークフローの状態は [成功] ですが、スコープ アクションは [失敗] になり、次に例を示します。