Apexトリガはユーティリティプレイヤーの万能説

スポンサーリンク

標準機能でできないこともApexトリガならできる

今回のテーマはApexトリガ。
といっても、Sales Cloudの試験としては、トリガでのプログラムの組み方までは問われないので、トリガの機能でできることを押さえておけばOKです。

その中でも、標準機能でできないことをApexトリガでカバーすることになるので、そこを覚えておけばテスト対策はバッチリになると思います。

入力規則 vs Apexトリガ

まずは、入力規則とApexトリガの比較から。

入力規則はレコード保存前に項目のバリデーションチェックとして用いられる機能になります。
ここでのポイントは入力規則はレコードの保存前に適用されること。

別の言い方をすれば、レコードの削除に対しては入力規則は一切働かないことになります。

一方のApexトリガは削除のトリガもあるため、削除前にチェックをかける事ができます
そのため、レコードを削除するときに、整合性のチェックを行い、エラーであれば削除しないという使い方ができます。

ワークフロー(項目自動更新) vs Apexトリガ

次はワークフローの項目自動更新との比較。

ワークフローの項目自動更新でできる範囲としては、自レコードへの項目更新および主オブジェクトに対しての項目更新となります。
主オブジェクトに対しての項目更新は、主従関係でないと主オブジェクトが更新できないため、参照関係で親オブジェクトレコードを更新する場合は、ワークフローの機能では実現する事ができません。

対して、Apexトリガの方は、ある程度柔軟にプログラムが組めるので、主従関係であっても、参照関係であってもお構いなく親レコードを参照しにいくことは可能です。
もちろん、参照関係に対しての親レコードへの更新も可能です。

反映する値についても、文字列の結合や数字の四則演算など数式で実現できる値でしか更新ができないので、より複雑なロジックが絡む場合もトリガでカバーするしかないようです。

そして、Apexトリガのもう一つの強みとしては、レコードの新規作成とレコードの自動削除ができる事が最大のメリットになります。
レコードの新規作成はワークフローでは実現はできない(プロセスビルダーならできる)ため、このケースにおいてはApexトリガを使うことはファーストチョイスとなります。

プロセスビルダーやフローの機能もあり、ワークフローの上位互換となりますが、機能的にはワークフロー<プロセスビルダー<フロー<Apexトリガとなるため、できるだけ簡単いという前提がなければApexトリガを選択すれば間違いないでしょう。

共有ルール vs Apexトリガ

次はレコードを自動的に共有させるルールについて。

標準機能でも共有ルールを使用した共有が可能ですが、あらかじめ指定したルールに基づいたアクセス権の共有しかできません。
この「あらかじめ指定したルール」というのが所有者であったり、レコードの値によるものを条件としているため、より複雑なロジックを使用した共有ルールに対しては適用しきることができません。

Apexトリガを使うことで、より複雑な条件に基づいて自動的に共有権限を付与する事が可能になるため、柔軟性が増します。

まとめ

今回はイメージがなく、説明のみでしたが標準機能で出来ないところをApexトリガでカバーすることを知っていればOKでしょう。

  • Apexトリガはレコードの削除に対してもチェックが可能
  • Apexトリガはレコードの新規作成や削除に対してのアクションも実現可能
  • Apexトリガはより複雑な共有ルールを自動化する事が可能

コメント