ワークフローの実行を最適化することは、その効率化にとって極めて重要です。 並列実行と並行処理により、複数の処理を同時に実行することができるため、実行時間を大幅に短縮できます。
並列実行
並列実行では、フローは 2 つ以上のステップを同時に実行します。 すべての並列処理が完了すると、ワークフローが再開されます。 この機能により、特に非同期タスクにおいて処理効率が向上します。
互いに依存せず、個別に処理できるタスクや、実行に 5 秒以上かかるタスクについては、並列実行を検討してください。 このアプローチでは、システムに負荷をかけることなくフローのパフォーマンスを最適化できます。
並列実行の使用例を次に示します。
他の操作を妨げない承認リクエストを送信する。
過半数に基づく承認プロセスを設定し、最多の回答に基づいて決定を下すようにします。
複数のシステムで同時にレコードを作成または更新します。
複数のソースから同時にデータを取得し、それらを単一のデータセットに統合して、その後の処理に活用します。
順次実行による遅延を避けるため、複数の変数を並行して初期化します。
スキップされるアクションを最小化する
並列実行を使用する場合は、スキップされるアクションに注意してください。 スキップされたアクションとは、条件が満たされず、アクションが実行されなかった場合を指します。 アクションを省略すると、混乱を招き、フローの論理を理解しにくくなる可能性があります。 また、実行されなくてもリソースを消費し続けるため、パフォーマンスの問題を引き起こす可能性があります。
スキップされるアクションは、分岐処理で発生するケースが多いです。 分岐とは、単一の変数や式の複数の取り得る値に対して、それぞれ異なる処理を定義する方法です。 各分岐に多くのアクションがある場合、スキップされるアクションが大量に発生する可能性があります。
個別のアクションを多数追加するのではなく、スイッチ分岐から子フローを呼び出します。 無関係な子フローをスキップすることで、個々のアクションを大量に処理するよりも、メイン フローが簡素化され、メンテナンスが容易になります。
並行処理の制御
各ループに適用するは、既定では順番に実行されます。 ループ内の項目を順番に実行する必要がない場合、並行処理により複数の項目を同時に処理することができます。 作成者は、並行度 (並列処理の度合い) を 1 から 50 の間で設定します。
作業の分割、追加のスレッドのキューイング、呼び出されるエンドポイントからの遅延は、オーバーヘッドとなることに注意してください。 また、数値を大きくしたとしても (50 など)、必ずしも処理が速くなるわけではありません。
並行処理を使用する場面の例をいくつか挙げます:
- 多数の受信者に対して個別にメールを送信する。
- Dataverse、SharePoint リスト、SQL のレコードを更新します。
- Microsoft Entra ID のユーザーを一括で作成します。
- 並列化された承認の作成。
次の表は、それぞれに適用のループにおける配列処理に対する並行制御の影響を比較したものです。
| 配列の長さ | 並列処理の次数 | ループの実行時間 |
|---|---|---|
| 4 | オフに切り替え | 21 秒 |
| 4 | 2 | 11 秒 |
| 4 | 4 | 6 秒 |
| 4 | 6 | 6 秒 |
それぞれに適用アクションの同時実行制御は、クラウド フローの最上位レベルでのみ有効です。 それぞれに適用アクションをネストすると、内側のアクションは常に順次実行されます。