次の方法で共有


関連するアクションをスコープにグループ化し、Azure Logic Apps のスコープの状態に基づいてフォローアップ アクションを実行する

適用対象: Azure Logic Apps (従量課金 + 標準)

関連するアクションのグループが成功または失敗した後にのみ実行するアクションがワークフローにある場合があります。 このシナリオでは、これらのアクションの論理コンテナーとして スコープ アクションを追加します。 すべてのスコープ アクションの実行が完了すると、スコープは次のような独自の状態を取得します。

  • 成功しました
  • 失敗
  • スキップ
  • TimedOut
  • 取り消し済み
  • Aborted

ワークフローでは、スコープの状態を評価し、この状態に基づいて実行する後続のアクションを選択できます。 スコープの状態を確認するには、アクションの実行状態を確認するのと同じ方法を使用できます。 既定では、スコープのすべてのアクションが成功すると、そのスコープの状態は [成功] とマークされます。 スコープ アクションが失敗すると、スコープの状態は [失敗] としてマークされます。

スコープは、一連のアクションの実行が完了した後の 例外およびエラー処理、クリーンアップ ロジック、後処理に一般的に使用されます。 スコープは、次のユース ケースがある場合に適しています。

  • 複数のアクションを 1 つのグループとして扱います。
  • すべてのスコープ アクションが成功した場合にのみ、フォローアップ アクションを実行します。
  • 各アクションの後ではなく、1 か所でエラーを処理します。
  • プライマリ ロジックとエラー処理またはクリーンアップ ロジックを分離します。

次の大まかな例は、スコープと、スコープの状態を確認する条件を示しています。 スコープアクションが予期せず失敗または終了した場合、スコープはそれぞれ 失敗 または 中止 としてマークされます。 ワークフローは、 スコープに失敗したメッセージを 送信します。 スコープが設定されたすべてのアクションが成功した場合、ワークフローは スコープに成功した メッセージを送信します。

スクリーンショットでは、スコープが失敗した例と、スコープが成功した例を含むスコープでのワークフローを示しています。

このガイドでは、ワークフローにスコープを追加する方法と、サービスに依存しない例を使用してスコープがどのように機能するかを示します。

前提条件

  • Azure アカウントとサブスクリプション。 無料の Azure アカウントを取得します

  • 消費型または標準ロジック アプリのリソースとワークフロー

    ワークフローが空白の場合は、最初 にワークフローを 実行するトリガーを追加します。

    このガイドの例では、 繰り返し トリガーを使用します。 このトリガーを追加するには、次の手順に従います。

    1. Azure portal で、ロジック アプリとワークフローをデザイナーで開きます。

    2. 一般的な手順に従って、ワークフローにスケジュール トリガーという名前の繰り返しトリガーを追加します。

    3. デザイナーで、トリガーを選択します。 トリガー情報ペインが開いたら、[ パラメーター ] タブで、トリガー パラメーターを次の値に設定します。

      パラメーター 価値観
      Interval 30
      頻度

      例えば次が挙げられます。

      [繰り返し] という名前のスケジュール トリガーを示すスクリーンショット。

スコープ アクションを追加する

  1. デザイナーで、トリガーの下にある一般的な手順に従って、スコープという名前のコントロール アクションを追加します。

  2. [スコープ] アクション名をProcess orderに変更します。次に例を示します。

    プロセスの順序として名前が変更されたスコープ アクションを示すスクリーンショット。

  3. ワークフローを保存します。

スコープにアクションを追加する

この例では、次の手順では、スコープで実行するアクションとして注文処理シナリオをシミュレートします。

  1. デザイナーの Process order タイトル バーで、下矢印を選択してスコープ アクションを展開します。次に例を示します。

    スコープ アクションを展開するために選択した下矢印を示すスクリーンショット。

  2. 一般的な手順に従って、次のアクションをスコープに追加します。

    1. Compose という名前のデータ操作アクションを追加します。

      1. アクション名を Validate orderに変更します。

      2. [ 入力 ] ボックスに「 Order validated」と入力します。

    2. Delay という名前のスケジュール アクションを追加します。

      1. 名前を Fulfill order に変更します。

      2. [カウント] を [5] に設定します。 [単位][秒] に設定します。

    3. Compose という名前のデータ操作アクションを追加します。

      1. アクション名を Complete orderに変更します。

      2. [ 入力 ] ボックスに「 Order fulfilled」と入力します。

    完了すると、スコープ アクションは次の例のようになります。

    スクリーンショットは、スコープ アクションに追加された Compose アクションと Delay アクションを示しています。

    現在、このスコープ内のすべてのアクションは、ワークフローの実行時に成功します。

  3. ワークフローを保存します。

スコープの状態を確認する条件を追加する

  1. スコープ アクションの下に、一般的な手順に従って、Condition という名前の制御アクションを追加します。

  2. アクション名を次の値に変更します。 Did order processing fail

  3. [ パラメーター ] タブで、スコープの状態を確認する式で次の条件を設定します。

    1. 左端の [値の選択] ボックス 内を選択 します。 入力オプションが表示されたら、式エディター (関数アイコン) を選択します。

    2. 式エディター ボックスに、次の式を入力します。

      actions('Process_order')?['status']

      例えば次が挙げられます。

      スコープの状態を確認する式を示すスクリーンショット。

      疑問符 (?) 演算子を使用すると、 status プロパティの値が見つからないか、親オブジェクトが null の場合に、ワークフローがランタイム エラーで失敗するのを防ぐことができます。

    3. 終了したら、 [追加] を選択します。

    4. 中央の演算子ボックスで、値が = に設定されていることを確認します。

    5. 右端の [ 値の選択 ] ボックスに、 Failed値を入力します。

    完了すると、条件は次の例のようになります。

    スコープの状態を確認する条件を示すスクリーンショット。

  4. 条件がスコープの終了方法に関係なくスコープの状態をチェックすることを確認するには、次の手順に従って実行後の設定を構成します。

    1. 条件アクションの [設定] タブの [ 実行後] で、[ プロセス注文 ] セクションを展開します。

    2. すべてのスコープの状態を選択します。

      • 成功しました
      • タイムアウトしました
      • スキップされている
      • 失敗しました
  5. ワークフローを保存します。

スコープの結果に基づいて実行するアクションを追加する

  1. デザイナーの条件内で、True の分岐がまだ展開されていない場合は展開します。

  2. True ブランチで Compose アクションを追加し、次の手順に従います。

    1. アクション名を Handle failureに変更します。

    2. 入力 ボックスに入力します。 Order processing failed. Take appropriate action.

    例えば次が挙げられます。

    スクリーンショットは、注文エラーを示す Compose アクションを含む True ブランチを示しています。

  3. False 分岐で Compose アクションを追加し、次の手順に従います。

    1. アクション名を Order succeededに変更します。

    2. [ 入力 ] ボックスに Successfully processed order. を入力します。

    例えば次が挙げられます。

    注文の成功を示す Compose アクションを含む「偽」分岐を示すスクリーンショット。

  4. ワークフローを保存します。

ワークフローのテスト

  1. デザイナー ツール バーの [実行] メニューから [実行] を選びます。

  2. サイドバーで、[ 実行履歴] を選択します。

  3. [ 実行履歴 ] ページで、ワークフローの状態として [成功] を示す最新の実行を選択します。

    実行の詳細ページには、スコープ アクションが正常に実行されたことを示します。次に例を示します。

    成功したスコープ アクションを示すスクリーンショット。

  4. スコープ アクションを展開して、スコープ内の各アクションを確認します。

    スコープ内の各アクションが正常に実行されました。次に例を示します。

    スコープ内で成功したアクションを示すスクリーンショット。

  5. 条件アクションを True 分岐と False 分岐と共に展開します。

    スコープ アクションの状態に基づいて実行されたのは、False ブランチのみです。例えば、次のようになります。

    False の分岐のみが実行されたことを示すスクリーンショット。

  6. エラー パスをテストし、 True ブランチを強制的に実行するには、次の手順に従います。

    1. サイドバーでデザイナーを選択します。

    2. スコープ アクションに、失敗する Compose アクションを追加します。

      たとえば、 Compose アクションに、実行時にエラーをスローする式を入力します。次に例を示します。

      int(triggerBody()?['forceFailure'])

    3. ワークフローを保存します。 ワークフローを再実行します。 実行履歴を表示します。

      今回は、ワークフローの状態は [成功] ですが、スコープ アクションは [失敗] になり、次に例を示します。

      強制エラーが発生し、True のみが実行された更新されたワークフローを示すスクリーンショット。