キューに貯まったジョブが実行されるのが15分おきなので検証が面倒でした。
用語
- 時間ベースのアクション:今回検証するもの。ワークフロールールに追加できるアクション。日付か時間を設定して「○日前」「○時間後」のようなアクションを可能にする。
- 評価条件:ラジオボタンで選択できる。こっちを評価してからルール条件が評価される。
- ルール条件:カスタマイズできる。評価条件を通過してから評価される。
評価条件を満たしたときにルール条件に一致しているか確認し、一致していたらワークフローアクションを実行するという流れ。
仕様
メール通知タイミング
日付項目(Date__c)を作成する。
15日前になったらメールを通知する時間ベースのアクションをワークフロールールに追加する。
Date__cに...
①過去日付を入力すると、即時メール通知される。
②15日以内の日付を入力すると、即時メール通知される。
③15日以降の日付を入力すると、日付が変わって15日前になった瞬間にメール通知される。
メールが送られるタイミング
「時間ベースのアクションは個別には実行されません。最初のアクションがバッチに入ってから 1 時間以内に実行が開始される、1 つのバッチにグループ化されます。」
このバッチが実行されるのは15分おき。
①②のように即時メール通知される場合、厳密には0分、15分、30分、45分までに溜まったメールを一斉送信している。
③の場合は、日付が変わった0:00ちょうどにメールを送信する。
日付項目
日付項目の時分秒はすべて00:00:00。
この項目を参照して時間ベースのアクションを作成すれば、例えば前日の正午(12時間前)や15日前の午後15時(345時間前)といった通知タイミングの調整ができる。なお入力できる数値は整数のみなので、例えば2時間半前(2.5時間前)といった指定はできない。
タイムトリガを有するワークフロールールの機能制限
「レコードが次の場合にルールを評価 作成されたとき、および編集されるたび」を評価条件に指定することができない。
つまり、「作成されたとき」「作成されたとき、およびその後基準を満たすように編集されたとき」のみ。
これが意味するのは、項目が変更されるたびに評価しなおすことはないということ。一度評価されてしまうと2度目はない。
例えば...
レコードに紐づく担当者に、期日が迫ったらメールを通知するとする。
期日が迫ってメールが送信されてから担当者を変更しても、変更先にメールを通知することはできない。
また、期日が迫ってメールが通知されてから期日を延ばしても2度目のアラートは来ない。
ルール条件に「isChanged」を使って項目変更をチェックしたところで、それ以前に評価条件がtrueのままならルール条件まで辿り着けないので無意味。
機能制限を踏まえて
「作成されたとき、およびその後基準を満たすように編集されたとき」にしたとき。
例えば...
レコードを自動で作成して後から編集した項目に関するメールが飛ぶようにしたいとする。
自動作成時に評価条件が満たされてしまうと、あとから何をやっても評価しなおされることはない。
変更セット
ワークフロールールの移行
タイムとリガを有するワークフロールールは、移行先で一度でも動かしてしまうと変更セット検証時にエラーになってしまいます。
設定から[環境]>[監視]>[時間ベースのワークフロー]で一覧できるキューから未実行のワークフローを削除しても同様です。
移行元で一度ワークフロールールを無効化して送信し、移行先で有効化すればいけます。
まとめ
タイムトリガを使うことが分かっている項目は日付型の通知タイミングの柔軟性が高いことや、一度通知が飛んだレコードを変更しても2度目の通知は飛ばないといったことを設計前に把握しておけば後悔が減りそう。