はじめに
皆さんこんにちは。
フロービルダーを開いた際に選択するフローの種類といえば、
・画面フロー
・レコードトリガーフロー
・スケジュールトリガーフロー
・プラットフォームイベントフロー
・自動起動フロー(トリガーなし)
の5つでしたが、新たに「レコードトリガーオーケストレーション」が選択肢に現れるようになりましたね。

以前より「すべて」タブの選択肢の中には存在していたとのことですが、まだ情報も多くないので試しに触ってみることにしました。
今回はTrailhead「フローオーケストレーションを使用して複雑なプロセスをオーケストレーションする」をベースに調査しました。
→
https://trailhead.salesforce.com/ja/content/learn/modules/build-a-flow-orchestrationちなみに「レコードトリガーオーケストレーション」はフローオーケストレーションの2つのタイプ、「レコードトリガー」と「自動起動」のうちの一つなので、以下フローオーケストレーションについて解説していきます。
フローオーケストレーションの基本
「フローオーケストレーションは、複数のユーザーと複数のシステムと対話するマルチステッププロセスであるオーケストレーションを作成できる機能です。」
(公式ヘルプページより引用、翻訳)https://help.salesforce.com/s/articleView?id=sf.orchestrator_flow_orchestrator.htm&type=5
→要するに、複数のユーザーと複数のフローを扱うことができ、通常のフローよりもより複雑なビジネスプロセスを自動化することが可能です。
一目見て驚いたのは、その名の「オーケストレーション」の通り、
普段見慣れているフロービルダーの操作画面の中に「画面フロー」や「自動起動フロー」が多数出てきます。また試してみた印象としてはSalesforce標準機能の「承認プロセス」に近い印象です。
一つの承認プロセス内では下記のような様々な機能の設定を一つの画面で行うことができるかと思います。
・承認画面に表示する項目
・項目のロック/ロック解除
・メールアラート
・項目自動更新
・・・etc.
フローオーケストレーションも同様に、
複数のユーザーが関わる一連のプロセスを1つの画面内で編集できるもの、とまずは理解するとよいかもしれません。
フローオーケストレーションの利点
フローオーケストレーションを使用して、次のことを実行できます。
→「並列な作業」「ステップ」「引継ぎ」「自動と手動の組み合わせ」この辺りがポイントになってきます。
フローを使用する場面を考えると、「項目Aが●●な状態になったら項目Bを更新する」「定期的にメールアラートを送る」「●●の入力画面を作る」というように瞬間~短時間に完了する自動化をイメージする方も多いかもしれません。
一方フローオーケストレーションは「承認されたら次のフェーズに移る」「相手の入力を待つ」「入力されたら次のフェーズに移る」といったような待機する時間を作ることが可能なため、比較的長時間の作業プロセスを前提に構築することが可能です。フローオーケストレーションを試してみた
こちらはTrailhead「フローオーケストレーションを使用して複雑なプロセスをオーケストレーションする」内の作成手順をトレースしたものになります。
概要だけ引用しているので、詳細な操作手順などはTrailheadを参照ください。
→
https://trailhead.salesforce.com/ja/content/learn/modules/build-a-flow-orchestration1.作業環境を取得
Trailhead中にフローオーケストレーションとサンプルデータを搭載した特別な Developer Edition 組織が配布されています。
この組織内に作られているフローオーケストレーションが題材として便利だったので、今回はこちらを題材にお話しします。
組織配布先→
https://trailhead.salesforce.com/ja/promo/orgs/build-flow-orchestration↓取得中の待機画面

通常のデベロッパー環境を取得するのと同様に申請から少し時間はかかりますが、無事取得できました。(この時は10数分ほど)
2.全体図を確認
見慣れたフロービルダーですが、見慣れないコンポーネントがあるかと思います。
また自由形式での表示はできず自動レイアウトのみのようです
まず全体図を見てみます。

構成としては紺色の「フェーズ」コンポーネントとオレンジの「決定」コンポーネントの組み合わせであることがわかります。
フローオーケストレーションで加えることができるコンポーネントはこの2つだけのようです。

そしてフェーズの中に複数の「ステップ」が含まれていることがわかります。

※フローオーケストレーションの重要なワード
オーケストレーションの重要な概念に「フェーズ」と「ステップ」「フロー」という3つの構成要素があります。
・フェーズ:関連するアクションとステップがグループ化したもの。オーケストレーションにはフェーズが少なくとも 1 つ必要。フェーズは①すべてのステップが完了②指定要件を満たす③指定の評価フローがTrueを返す、のいずれかが満たされたとき完了される。
・ステップ:フェーズを構成する要素で、順次または同時に実行される。ユーザー操作を要する対話型ステップと、自動で動作するバックグラウンドステップがある。
・フロー:ステップを構成する要素で作成済みのフロー。対話型ステップは画面フローで実行され、バックグラウンドステップは自動起動フローで実行される。評価フローを使用して、ステップを開始したり、対話型ステップを完了とマークしたりすることができる。
3.トリガーを確認
トリガーについてはレコードトリガーフローの設定画面と大きく変わりませんでした。
ここでは「Position」オブジェクトに新たなレコードが作成され、Status__c項目がNewの時に起動するようです。

4.フェーズを確認
フェーズの編集画面ではまず「フェーズが完了する条件」を指定します。
今回は「すべてのステップが完了とマークされたら、フェーズは完了とマークされます」が選ばれており、この場合他に設定は不要です。
他の選択肢を選んだ場合、それぞれ完了条件や評価フローを設定する必要があります。

※評価フロー:評価フローとは、条件を満たす場合にTrueを返すisOrchestrationConditionMetという名前の定義済みの出力がある目動起動フロー。今回は登場せず。
5.個別のフローを確認
1つ目のフェーズに含まれる3つのフローを見ていきましょう。
①Enter Job Application

この画面フローでは、
採用担当者が画面フローにて募集職種レコード(
Positionオブジェクト)に応募者(
Candidateオブジェクト)を登録、および求人応募レコード(
Job Applicationオブジェクト)の作成を行うフローとなっています。求人応募レコードが作成されることで採用ステップが開始されます。
実行されるとPositionオブジェクトのLightningレコードページにこのような画面が表示されます。
Positionオブジェクトに登録された募集職種レコードに見合う候補者を、Candidateオブジェクトに登録されている応募者レコードから選択できる仕組みになっています。

選択後はこのようにJob Applicationsオブジェクトに
求人応募 レコードが作成されており、Positionオブジェクトの関連リストとして表示されます。

②Interview Email Notification

こちらは自動起動フローとなっており、
求人応募レコードに登録された応募者に選考が開始されたことをメールで通知します。
③Recruiter phone screen

こちらは画面フローとなっており、
面接官が面接をした後に面接結果を入力し、それをもとにReviewsオブジェクトに1次面接結果レコードを作成するフローになっています。
先ほどのPositionオブジェクトに面接の結果を入力させる画面フローが登場しました。

ここで算出した平均点が変数_面接点数(varReviewScore)として引き継がれ、「1次選考」フェーズの後の「Go to Next Round」決定コンポーネントで使用されます。

6.その他
今回は割愛しますが、1つ目のフェーズの結果を踏まえて決定コンポーネントで次の選考のフェーズへ移るか、採用見送りのフェーズに移るかを判別しています。
またそれぞれのフェーズにも1個以上のステップやフローが含まれています。
このようにフェーズと決定の組み合わせでフローオーケストレーションは構成されています。
その後のストーリーとしては以下の通りです。
[決定コンポーネント:Go to next round]
応募者の一次選考の合計スコアが 5 点中 3 点以上の場合は、採用担当マネージャーとの面接に進む。
[フェーズ:Hiring Manager Interview]
その場合は、採用担当マネージャーとの面接が自動起動フローでスケジュールされ、採用マネージャーは面接結果を画面フローで入力する
[決定コンポーネント:Make offer]
選考の合計スコアが 5 点中 3 点以上の場合は採用とする。(特に実行されるアクションはない)
[フェーズ:Candidate rejected]
応募者が不採用になった場合はメールアクションで応募者に不採用メールが送られます。
オーケストレーションの実行を監視
Salesforce システム管理者の場合は、[オーケストレーション実行] タブで、組織で進行中、キャンセル済み、完了したすべてのオーケストレーション実行を確認できます。
このような標準オブジェクトがあることに今回初めて気付きました。


試してみた感想
※今回のフローのビジネスプロセスを図式化するとこのようになるかと思います。

「承認されたら次にこのフローを動かす」といったことは従来のレコードトリガーフロー、画面フロー、自動起動フローなどを駆使すれば実現可能かもしれません。
しかしそれらのビジネスプロセスを俯瞰し、直感的にわかりやすいフロー図に落とし込んだり、進捗状況の確認もできることがフローオーケストレーションのメリットかと感じました。あとこちらのプロセス図を作成中に気づきましたが、応募者へのメール送付や面接結果入力画面はフローを使いまわししていますね。このような効率的な機能の作成もメリットかもしれません。
今回はTrailheadが予め用意していた部品(フローの数々)をそのまま使うことができましたが、これらのフローを準備するのは骨が折れる作業かと思います。
しかし一気通貫かつ高い柔軟性が求められるビジネスプロセスを作る必要がある場合には協力なツールになるのではないでしょうか。
参考リンク
公式ヘルプ「Flow Orchestration」
https://help.salesforce.com/s/articleView?id=sf.orchestrator_flow_orchestrator.htm&type=5Trailhead「フローオーケストレーションの基本」
https://trailhead.salesforce.com/ja/content/learn/modules/orchestrator-basicsTrailhead「フローオーケストレーションを使用して複雑なプロセスをオーケストレーションする」
https://trailhead.salesforce.com/ja/content/learn/modules/build-a-flow-orchestrationSalesforce Winter '24 リリースノート「フローオーケストレーション」
https://help.salesforce.com/s/articleView?id=release-notes.rn_automate_orchestrator.htm&release=246&type=5