こちらの記事でも話題に上げた件です。
【Salesforce】【サブフロー】フロー開発でDRY原則を適用する
要件
平日の朝に、自分の承認待ちで止まっているレコードがあれば、その一覧を
通知するメールを送る。1件もなければ何もしない。これを担当者ごとに実行する。
ここでいう承認待ちとは、承認プロセスではなく自前で用意したステータス項目です。
以下のように機能を分割して実装しました。
①スケジュールフロー:平日の朝に実行するようスケジュールを設定する
処理の中で担当者の分だけ②を呼び出す
②サブフロー:①から渡された担当者に関して、承認待ちレコードが存在するか確認する
1件以上存在した場合、③のURLを記載したメールを送信する
③レポート:自分(=ログインユーザー)の承認待ちレコードの一覧を表示する
①②は前述の記事で説明しているので、③のレポートと数式項目について説明します。
まず、レポートに表示させるためのフラグとなる項目を作成します。
未承認レポートへの表示フラグ
/* 「未承認者」項目に自分の名前が含まれているかを判定。(シス管は全件表示)*/
$User.LastName = 'システム管理者'
|| contains( unapprover__c, $User.LastName & $User.FirstName)
|| contains( unapprover__c, $User.LastName & ' ' & $User.FirstName)
|| contains( unapprover__c, $User.LastName & ' ' & $User.FirstName)
次に、まだ承認が済んでいない担当者を取得する数式項目を作成します。
未承認者 unapprovers__c
/*承認が済んでいない担当者を改行区切りで表示*/
if( !isBlank( eigyou_tantou__c ) && eigyou_tantou__c != '不要' && isBlank( eigyou_approve_date__c ) , eigyou_tantou__c & br(), '')
& if( !isBlank( system_tantou__c ) && eigyou_tantou__c != '不要' && isBlank( system_approve_date__c ) , system_tantou__c & br(), '')
& if( !isBlank( keiri_tantou__c ) && keiri_tantou__c != '不要' && isBlank( keiri_approve_date__c) , keiri_tantou__c & br(), '')
大した実装はしてませんが、機能要件は満たしているのでユーザー的には満足しているそうです。