Lv. 5 : 新規に Apex トリガを追加してみよう

Flexible Apex Trigger を利用することで、Apex トリガを量産しやすくなっています。 実際に体感してみましょう。

ビジネス要件

  • 売上として計上されている商談データを誤って削除できないようにしたいと考えています。成約済みの場合、エラーメッセージを表示して削除できないようにしてください。
  • 重要なケースが起票された場合に見逃しにくくしたいと考えています。重要度が高いケースが新規作成された場合に、Chatter フィードにメッセージが自動投稿されるようにしてください。

アーキテクチャ要件

  • Flexible Apex Trigger を利用してください。
  • エラーメッセージはカスタム表示ラベルに定義してください。
  • すべてのテストデータはテストクラス内で作成してください。

システム要件

Apex トリガ

トリガ名 対象オブジェクト 複数件レコードの一括処理 備考
OpportunityTrigger 商談 Yes -
CaseTrigger ケース Yes -

Apex クラス

クラス修飾子 クラス名 継承 備考
public with sharing OpportunityTriggerValidation FAT_ITriggerObserver -
public with sharing CaseTriggerService FAT_ITriggerObserver -

OpportunityTriggerValidation

アクセス修飾子と型 メソッド名 説明 備考
private void preventDeletion (1) 削除防止アクション @TestVisible
  • 削除する前に preventDeletion を実行する

CaseTriggerService

アクセス修飾子と型 メソッド名 説明 備考
private void postFeedItems (2) フィード投稿アクション @TestVisible
  • 新規作成した後に postFeedItems を実行する

(1) 削除防止アクション
起動条件

次の条件を満たす場合:

  • フェーズが Closed Won である
表示ラベル 項目名 備考
フェーズ StageName -
エラーメッセージ
エラーメッセージ エラー表示場所 備考
成約済みの商談は削除できません。 フェーズ -

(2) フィード投稿アクション
起動条件

次の条件を満たす場合:

  • 優先度が High である
表示ラベル 項目名 備考
優先度 Priority -
投稿メッセージ
投稿メッセージ 投稿場所 備考
優先度の高いケースが作成されました! 新規作成したケースのフィード欄 -

Apex テストクラス

クラス修飾子 クラス名 用途 備考
private OpportunityTriggerValidationTest OpportunityTriggerValidation.cls に対するテストクラス -
public with sharing OpportunityTestUtils OpportunityTriggerTest.cls で利用するテストメソッドを準備するクラス -
private OpportunityTriggerTest OpportunityTrigger.trigger に対するテストクラス -
private CaseTriggerServiceTest CaseTriggerService.cls に対するテストクラス -
public with sharing CaseTestUtils CaseTriggerTest.cls で利用するテストメソッドを準備するクラス -
private CaseTriggerTest CaseTrigger.trigger に対するテストクラス -

カスタム表示ラベル

カテゴリ エラー ID エラーメッセージ 備考
ERROR CLOSED_WON_CANNOT_BE_DELETED 成約済みの商談は削除できません。 -
INFO HIGH_CASE_IS_CREATED 優先度の高いケースが作成されました! -

カスタムメタデータ型

FAT_TriggerObserver

表示ラベル
カスタムメタデータレコード名
Apex Class
sObject Active Before
Insert
Before
Update
Before
Delete
After
Insert
OpportunityTriggerValidation Account Yes No No Yes No
CaseTriggerService Account Yes No No No Yes

解答

こちら

results matching ""

    No results matching ""