[salesforce]承認プロセス終了のタイミングでプロセスは呼び出せないのでトリガーを使うという話
2019/10/15
Salesforceの主要機能である商談管理。弊社リバネスではこれに経費データをぶら下げて、商談から稟議承認プロセスを回していました。
四年前であれば、それでもまぁ行けたのですが、ここ数年、事業のスピードが早くなってきたこともあり、承認申請プロセスの最中だと商談がロックされて手が出せないこともあり、関連するデータの更新が滞るという事が度々起こりました。
対策
対策はシンプルに、承認プロセスは対象オブジェクトに対して行うという形にしようというものです。
今までこれをやらなかった理由は、商談ページ上で完結できなかったためです。つまり、経費オブジェクト上で承認プロセスを回したいなら経費オブジェクトを開いた上でやらなくてはなりません。Salesforce経験が浅いタイミングでこれをやるのは混乱の下だと判断しました。
今回、この実装に踏み切ろうと考えたのは、承認申請ボタンをVisualforce等を介して商談ページ上に表示ができるからです。今回はそこには触れませんが、一応そのような形で実装しています。
実装方法1:だめだったパターン
経費オブジェクトには経費明細オブジェクトが主従関係でぶら下がっていまして、その中に経費の細かい情報が入ります。
例えば、出張経費という経費オブジェクトを作り、その中に経費明細オブジェクトとして、「飛行機代」「電車代」「宿泊費」「その他経費」…という形で、経費明細を作っていきます。
経費上で稟議の承認プロセスを回し、承認されたら項目自動更新で経費オブジェクトに作成した承認フラグ(チェックボックス型)をTrueにします。
プロセスビルダーから経費オブジェクトに対してプロセスを作成し、承認フラグが更新された=Trueと承認フラグがTrueという条件でプロセスを開始します。
プロセスからはフローを呼び出し、経費オブジェクトIDにぶら下がっている経費明細オブジェクトの承認フラグをTRUEに変更する、という処理です。
何がだめだったか
承認フローの完了タイミングで発生する項目自動更新からはプロセスが起動しないようです。
参考:項目自動更新アクションの考慮事項
「承認時のアクションとして実行される項目自動更新は、ワークフロールールやエンタイトルメントプロセスをトリガしません。」
ということで諦めました。
成功パターン:トリガー書く
ちょっと面倒ですが、トリガー書きましょう。
after updateで、経費IDから経費明細引っ張ってきて、承認フラグをTrueに変えてupdateかければ良いだけです。シンプル。。。
ということで、仕様が分からずにちょっとハマったよという報告です。