承認プロセスの結果でフローを動かしたいときには、プロセスビルダーを挟むという手があります

承認プロセスの結果でフローを動かしたいときには、プロセスビルダーを挟むという手があります

自動化機能を連携しなければならなくなったとき。承認プロセス+フローの際はご注意ください。
承認プロセスの結果でフローを動かしたいときには、プロセスビルダーを挟むという手があります
16
承認プロセスの結果でフローを動かしたいときには、プロセスビルダーを挟むという手があります
Admin
2022/01/28 09:20:12
※Spring’22のリリースにより、この仕様が変わるようです。
Spring’22で承認プロセスの結果からフローがトリガできるようになる様子」の記事およびリリースノートの「API バージョン 54.0 でのフローおよびプロセス実行時の改善」をご確認ください。


少し前に、Twitterで似たような要件についてやりとりをしていたのですが、チームメンバーにも「それは知らなかった」という反応をもらいましたので、ひとつの解決方法としてご紹介します。
あくまでも、私が対応していた例ではうまくいった事例なので、これがベスト&オンリーではないと思います。参考情報として読んでいただければ幸いです。

なお、設定方法の詳細を載せると長くなってしまうので、ポイントに絞って書いています。
フローの基本構造は、よく例として挙げられる「取引先責任者の検索と更新」とほぼ同じですので、フロー初心者の方はそちらもあわせて読んでいただだくといいかもしれません。


状況

・オブジェクトAとオブジェクトBは参照関係でつながっており、Aが親でBが子です。
・オブジェクトAに対して承認プロセスが設定されています。承認プロセスのステータスは、項目「ステータス」にて管理しています。


やりたいこと

・承認プロセスの最終承認時に項目自動更新でスタータス項目が「承認済み」と変更されたら、オブジェクトBに子レコードを作成します。このとき、オブジェクトAの項目の値をいくつかオブジェクトBにコピーします。
・一度「承認済み」になった後、取り消しなどを行って再度承認申請がなされ、「承認済み」となったとき、オブジェクトBの子レコードを更新するか、すでに作成された子レコードを削除して、新しく作成します。


対処法

既存のオブジェクトBのレコードの有無を判断するためには、フローで「レコードの検索」を行う必要があるため、フローを使用します。
なお、レコードの削除を自動化で設定することは極力避けたいため、今回は既存のレコードを更新するように設定します。


課題

フロー単体の設定では、手動で「ステータス」を「承認済み」に更新したときには動きますが、承認申請を行い承認プロセスを起動させても、フローは動きません。
※項目自動更新の「項目変更後にワークフロールールを再評価する」にチェックを入れても、承認プロセスの結果からフローは起動しません。

ヘルプなどでわかりやすく記載されている箇所を見つけられませんでしたが、Ideaに投稿があったため、現在の仕様と考えられます。

◇ Salesforce>IdeaExchange> Allow an Approval Process to trigger a Flow


そのため、あらためまして、

対処法(改)

・該当のレコードに関連する既存のオブジェクトBのレコードの有無を判断するためには、フローで「レコードの検索」を行う必要があるため、フローを使用します。
・プロセスビルダーは項目自動更新の結果から起動することができるため、プロセスビルダーを設定し、アクションとしてフローを呼び出します。


設定時のポイント

・承認プロセスに追加されている、ステータスを「承認済み」に変更する項目自動更新では、「項目変更後にワークフロールールを再評価する」にチェックを入れます。

・フローの種別は「自動起動フロー(トリガ)なし」を選択します。

・承認済みとなったオブジェクトAのレコードの情報(ID)をプロセスビルダーからフローへ受け渡さなければならないため、次の内容の変数を用意し、設定します。

< フローで作成する変数 >
 データ型:レコード
 オブジェクト:オブジェクトA
 フロー外部での可用性:入力で使用可能

この変数を、プロセスビルダーでフローを追加する際に「フロー変数を設定」で使用します。

< プロセスビルダーでの変数の設定 > 
 フロー変数:作成した変数
 種別:項目の参照
 値:オブジェクトA

・フローの構造
レコードを取得:オブジェクトAを参照する参照項目が、操作を行ったレコードのIDと一致する、オブジェクトBのレコードを検索します。
 ↓
割り当て:オブジェクトBのレコード件数を変数に保存します。
 ↓
決定:レコード件数が0件のときと、それ以外の分岐を作成します。
 ↓
レコードを作成(1つ目の分岐):オブジェクトBのレコード件数が0件のとき、レコードを新規作成。
レコードを更新(2つ目の分岐):オブジェクトBのレコード件数が1以上のとき、既存のレコードを更新。



ひとこと

承認プロセスの結果をもって、関連するレコードの情報を更新することは多いと思いますが、これまではフローを使うことはなく、承認プロセスの設定のみで事足りていました。今回、Salesforce人生のなかで初めて「承認プロセス+フロー」に遭遇し、承認プロセスが基本的には他の自動化に干渉しないこと(項目自動更新はトリガとなりうるが、制限があること)を知り、知っているつもりの機能でもまだまだ発見があるのだな、とあらためて思いました。


参考

◇ Salesforce >Trailhead >簡単なフローの作成 >取引先責任者の作成または更新
◇ Salesforce >Trailhead >Flow Builder >フローへのアクションの追加
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
16
コメント