ApexTriggerのフレームワーク

By | September 16, 2022

概要

ApexTriggerのフレームワーク採用は大きく以下の四つに分類できる。

  • 無秩序
  • Handler Pattern
  • 非エンタープライズ企業向けFramework
  • エンタープライズ企業向けFramework

フレームワーク採用のモチベーション

  • 1sObject – 1triggerによる実行順序のコントロール
  • triggerとlogicの分離によるメンテナンス性・テスト性の向上
  • interface/subclassによるhandlerの標準化
  • triggerのon/off機能
  • triggerのbypass機能
  • triggerのrecursiveな起動の制御
  • バッチサイズに基づく挙動の制御
  • 2GPとの相性
無秩序ハンドラー非エンプラFWエンプラFW
実行順序のコントロール
メンテナンス性・テスト性
handlerの標準化
on/off機能
bypass機能
recursiveな起動の制御
バッチサイズに基づく制御
2GPとの相性

2GPとの相性について

Salesforce公式が推奨するSFDC trigger frameworkなどの非エンプラ向けフレームワークでは、handlerとlogic(※下記図ではHelperとHandler)が常にセットでデプロイされる必要がある。

それはすなわち、クラス間の依存性を考慮したデプロイマネジメントが必要ということであり、ロック解除済みパッケージを用いた「パッケージ開発モデル」との相性が悪い。

https://cloudsundial.com/the-third-age-of-trigger-frameworks

どのフレームワークを利用すべきか

※SFの活用度が高い場合は、一つ上のレンジのFrameworkを採用

フレームワークの一覧

■Featured

Handler Pattern
SFDC trigger framework
Apex Trigger Actions Framework
fflib-apex-common

■Others

flexible-apex-trigger(解説はこちら
Nebula Core Nebula Triggers
Lightweight-Trigger-Framework
MyTriggers
sfdc-declarative-trigger-framework
EDA-TDTM-Overview
apex-enterprise-patterns/at4dx
managing-dependency-injection-within-salesforce/

参考になるサイト

Apex Hours – Trigger Framework in Salesforce
THE 3RD AGE OF TRIGGER FRAMEWORKS – PART 1
“Traditional” Trigger Frameworks vs Dynamic Metadata Trigger Frameworks