デスクトップ版Power Automate(以下、PAD)で作成したフロー内にエラー制御を組み込んでいる開発者の方は多いのではないかと思います。PADではエラー制御が比較的簡単に行える「ブロックエラー発生時」というアクションが用意されています。しかし、アクションの動きや仕組みを理解していないと、想定したエラー制御がなされず、フローで発生したエラー原因を特定することが難しくなる場合があります。今回は「ブロックエラー発生時」アクションを使用する際のポイントを紹介したいと思います。
■「ブロックエラー発生時」アクションについて
「ブロックエラー発生時」アクションは、以下のようにブロックで囲んだ範囲内のアクションでエラーが発生した場合にエラーを認識し、パラメータに応じたエラー制御を処理してくれるアクションです。「フローコントロール」カテゴリの中に用意されています。


エンジニア経験のある方だと要求された機能を開発するよりもエラー制御機能の開発の方がどれほど大変かわかるのではないかと思います。例えば、図1のようにMainフローからサブフローを呼び出すようなフローの場合だと、Mainフロー内のアクションを「ブロックエラー発生時」アクションで囲み、図2のパラメータにエラー発生時どのような動きをさせるか設定するだけでエラー制御の実装が完了します。サブフロー内のアクションでエラーが発生した場合でもエラーを認識してくれます。しかしMainフローで「ブロックエラー発生時」アクションを設定した場合、エラー取得のスコープが広すぎるため、サブフローで発生したエラー原因の特定が難しくなります。次にその一例を紹介します。
■フローに応じた適切なエラースコープの設定
まずは、以下のサンプル構成について考えてみましょう。この構成をもとに、エラー発生時の挙動を見ていきます。
「ブロックエラー発生時」アクションの動きは「次のアクションに移動」としています。
サンプル構成(図3~5)



問題
サブフローA(図5)の 1行目 でエラーが発生した場合、次に実行されるのはどちらでしょうか?
①サブフローA内の2行目の「メッセージを表示」アクション
②Mainフロー内の3行目の「サブフローの実行」アクション
正解
正解は②となります。図4の設定では、Mainフロー内で「ブロックエラー発生時」アクションを設定しているため、2行目の「サブフローの実行」アクションでエラーが発生した場合、その次の3行目のアクションに移動するという動きを行うためです。このような実装を行った場合、サブフローAの2行目以降のアクションが実行されないままサブフローBが実行されることになり、サブフローA内に潜んでいる他のエラーを特定することができない可能性があります。回避策として、「ブロックエラー発生時」アクションのスコープをサブフローA内に設定することで、サブフローAでの詳細なエラー原因の特定が可能です。
「ブロックエラー発生時」アクション使用の際のポイントとエラースコープについて紹介しました。エラー制御は想定されるエラーケースを検討する必要があり、実装が難しい機能だと思います。ただ、エラー制御を実装しておくことで迅速なエラー原因の特定につながり、円滑なフロー運用が可能になると思われます。現状運用しているフローでエラー制御を実装されたことがない方など、簡易的なものでもいいのでエラー制御実装にチャレンジしてみください。

技術とノウハウでデジタルシフトをサポート
中小企業の頼れるパートナー
執筆者: 村瀬 俊昭(株式会社クロスディーズ システム技術統括エンジニア)
前職では社内システムの運用、サーバーの監視、システム運用業務の構築、システム開発業務といった業務に幅広く携わる。2021年より株式会社佐々木総研にてロボットの設計・開発、社内SEとして従事している。釣りが趣味で、大のビール好き。