Newer Version Available
MilestoneTriggerTimeCalculator インターフェース
名前空間
マイルストンの種別、ケースのプロパティ、およびケース関連オブジェクトに基づいてマイルストンの動的なタイムトリガを計算するには、Support.MilestoneTriggerTimeCalculator インターフェースを実装します。Support.MilestoneTriggerTimeCalculator インターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
1global class Employee implements Support.MilestoneTriggerTimeCalculator {
次に、クラスで次のメソッドの実装を提供する必要があります。
1global Integer calculateMilestoneTriggerTime(String caseId, String milestoneTypeId)実装されたメソッドは global または public として宣言する必要があります。
MilestoneTriggerTimeCalculator メソッド
MilestoneTriggerTimeCalculator のインスタンスメソッドを次に示します。
calculateMilestoneTriggerTime(caseId, milestoneTypeId)
指定されたケースおよびマイルストンタイプに基づいてマイルストントリガ時間を計算し、その時間 (分単位) を返します。
構文
public Integer calculateMilestoneTriggerTime(String caseId, String milestoneTypeId)
パラメータ
- caseId
- 型: String
- マイルストンが適用されるケースの ID。
- milestoneTypeId
- 型: String
- マイルストンタイプの ID。
戻り値
型: Integer
計算されたトリガ時間 (分単位)。
MilestoneTriggerTimeCalculator の実装例
次のサンプルクラスは、Support.MilestoneTriggerTimeCalculator インターフェースの実装を示します。このサンプルでは、ケースの優先度とマイルストン m1 によって、タイムトリガが 18 分と決定されます。
1swfobject.registerObject("clippy.codeblock-2", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17global class myMilestoneTimeCalculator implements Support.MilestoneTriggerTimeCalculator {
18 global Integer calculateMilestoneTriggerTime(String caseId, String milestoneTypeId){
19 Case c = [SELECT Priority FROM Case WHERE Id=:caseId];
20 MilestoneType mt = [SELECT Name FROM MilestoneType WHERE Id=:milestoneTypeId];
21 if (c.Priority != null && c.Priority.equals('High')){
22 if (mt.Name != null && mt.Name.equals('m1')) { return 7;}
23 else { return 5; }
24 }
25 else {
26 return 18;
27 }
28 }
29}次のテストクラスを使用して、Support.MilestoneTriggerTimeCalculator の実装をテストできます。
1swfobject.registerObject("clippy.codeblock-3", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17@isTest
18private class MilestoneTimeCalculatorTest {
19 static testMethod void testMilestoneTimeCalculator() {
20
21 // Select an existing milestone type to test with
22 MilestoneType[] mtLst = [SELECT Id, Name FROM MilestoneType LIMIT 1];
23 if(mtLst.size() == 0) { return; }
24 MilestoneType mt = mtLst[0];
25
26 // Create case data.
27 // Typically, the milestone type is related to the case,
28 // but for simplicity, the case is created separately for this test.
29 Case c = new Case(priority = 'High');
30 insert c;
31
32 myMilestoneTimeCalculator calculator = new myMilestoneTimeCalculator();
33 Integer actualTriggerTime = calculator.calculateMilestoneTriggerTime(c.Id, mt.Id);
34
35 if(mt.name != null && mt.Name.equals('m1')) {
36 System.assertEquals(actualTriggerTime, 7);
37 }
38 else {
39 System.assertEquals(actualTriggerTime, 5);
40 }
41
42 c.priority = 'Low';
43 update c;
44 actualTriggerTime = calculator.calculateMilestoneTriggerTime(c.Id, mt.Id);
45 System.assertEquals(actualTriggerTime, 18);
46 }
47}