Lv. 4 : 既存の Apex トリガのロジックを変更してみよう
Flexible Apex Trigger を利用することで、ビジネスロジックを変更しやすくなっています。もちろんテストも書きやすくなっています。実際に体感してみましょう。
ビジネス要件
- これまでは、データを作成および更新するタイミングで項目自動更新をしていました。これからは、データを作成するタイミングで一時的にそのロジックを停止したいと考えています。
- データを作成および更新するタイミングで入力規則をかけたいと考えています。SLA が設定されている場合、SLA の有効期限およびシリアルナンバーが入力されていなければなりません。入力されていない場合、エラーメッセージを表示して保存できないようにしてください。
アーキテクチャ要件
- Flexible Apex Trigger を利用してください。
- 入力規則は Apex トリガで実装してください。
- エラーメッセージはカスタム表示ラベルに定義してください。
- すべてのテストデータはテストクラス内で作成してください。
システム要件
Apex クラス
クラス修飾子 | クラス名 | 継承 | 備考 |
---|---|---|---|
public with sharing
|
AccountTriggerValidation
|
FAT_ITriggerObserver
|
- |
AccountTriggerValidation
アクセス修飾子と型 | メソッド名 | 説明 | 備考 |
---|---|---|---|
private void
|
validateSLA
|
(1) 入力規則 |
@TestVisible
|
-
新規作成する前に
validateSLA
を実行する - 更新する前に
validateSLA
を実行する
(1) 入力規則
エラー条件
次のいずれかの条件を満たす場合:
-
SLA が
null
でない、かつ SLA Expiration Date がnull
である -
SLA が
null
でない、かつ SLA Serial Number がnull
である
表示ラベル | 項目名 | 備考 |
---|---|---|
SLA | SLA__c |
- |
SLA Expiration Date |
SLAExpirationDate__c
|
- |
SLA Serial Number |
SLASerialNumber__c
|
- |
エラーメッセージ
エラーメッセージ | エラー表示場所 | 備考 |
---|---|---|
SLA が設定されている場合は有効期限も入力してください。 | SLA Expiration Date |
SLA Expiration Date が null である場合
|
SLA が設定されている場合はシリアルナンバーも入力してください。 | SLA Serial Number |
SLA Serial Number が null である場合
|
Apex テストクラス
クラス修飾子 | クラス名 | 用途 | 備考 |
---|---|---|---|
private |
AccountTriggerValidationTest
|
AccountTriggerValidation.cls
に対するテストクラス
|
- |
カスタム表示ラベル
カテゴリ | エラー ID | エラーメッセージ | 備考 |
---|---|---|---|
ERROR |
SLA_EXPIRATION_DATE_REQUIRED
|
SLA が設定されている場合は有効期限も入力してください。 | - |
ERROR |
SLA_SERIAL_NUMBER_REQUIRED
|
SLA が設定されている場合はシリアルナンバーも入力してください。 | - |
カスタムメタデータ型
FAT_TriggerObserver
表示ラベル カスタムメタデータレコード名 Apex Class |
sObject | Active | Before Insert |
Before Update |
Before Delete |
After Insert |
---|---|---|---|---|---|---|
AccountTriggerService
|
Account |
Yes | No | Yes | No | No |
AccountTriggerValidation
|
Account |
Yes | Yes | Yes | No | No |