コード例: ディスパッチャーコンソールのカスタムアクション
Apex クラスの作成
ディスパッチャーコンソールのカスタムアクションにリンクする Apex クラスを作成する場合、次の 3 つのインターフェースのいずれかをクラスに実装します。
| インターフェース | 説明 |
|---|---|
| CustomGanttServiceResourceAction | サービスリソースに対するアクション用。パラメーターは、サービスリソースレコード ID、ガントチャートに反映されたサービステリトリーメンバーレコード ID、現在のガントチャートの開始日と終了日です。その他にパラメーターはありません。 次の形式を使用します。String action(Id resourceId, Id stmId, Datetime strGanttStartDate, Datetime strGanttEndDate, Map<String, Object> additionalParameters) |
| CustomGanttServiceAppointmentAction | サービス予定に対するアクション用。パラメーターは、サービス予定レコード ID (一括アクションに使用)、および現在のガントチャートの開始日と終了日です。その他にパラメーターはありません。Map<String, Object> additionalParameters 入力パラメーターは、将���の使用のために予約されていますが、コードの実行に含める必要があります。 次の形式を使用します。String action(List<Id> serviceAppointmentsIds, Datetime strGanttStartDate, Datetime strGanttEndDate, Map<String, Object> additionalParameters) このアクションが実装されると、複数のサービス予定を返すことができます。メソッドで、返される ID の数をチェックする if ステートメントを作成することをお勧めします。最初に、serviceAppointmentsIds.size()>1 で少なくとも 1 つの ID が返されたことを検証します。次に、返された予定 ID の数 (0、1、2 以上) に応じて異なるアクションを実行できます。 |
| CustomGanttResourceAbsenceAction | リソースの不在に対するアクション用。パラメーターは、リソース不在レコード ID、不在種別 (「na」または「break」)、現在のガントチャートの開始日と終了日です。その他にパラメーターはありません。Map<String, Object> additionalParameters 入力パラメーターは、将来の使用のために予約されていますが、コードの実行に含める必要があります。 次の形式を使用します。String action(Id absenceId, String absenceType, Datetime strGanttStartDate, Datetime strGanttEndDate, Map<String, Object> additionalParameters) |
これらの関数は、グローバルであり、文字列を返す必要があります。文字列が空の場合は、ユーザーが関連アクションをクリックしたときに表示されるガントチャート通知で使用されます。
コード例: サービスリソースのカスタムアクション
このアクションは、ガントチャートに表示される日数にわたり、選択されたサービスリソースに [対応不可] 種別のリソース不在を作成します。
1global class BlockResourceVisibleTime implements FSL.CustomGanttServiceResourceAction {
2
3 global String action(Id resourceId, Id stmId, Datetime ganttStartDate, Datetime ganttEndDate, Map<String, Object> additionalParameters) {
4
5 ResourceAbsence na = new ResourceAbsence();
6
7 // get Resource Absence record type - NA
8 RecordType recordTypeNA = [
9 SELECT
10 Id, SobjectType, Name
11 FROM
12 RecordType
13 WHERE
14 DeveloperName =: 'Non_Availability'
15 AND
16 SObjectType =: ResourceAbsence.getSobjectType().getDescribe().getName()
17 ];
18
19 na.RecordTypeId = recordTypeNA.Id;
20 na.ResourceId = resourceId;
21 na.FSL__Approved__c = true;
22 na.Start = ganttStartDate;
23 na.End = ganttEndDate;
24
25 insert na;
26
27 ServiceResource resource = [SELECT Name FROM ServiceResource WHERE Id =: resourceId];
28
29 return 'Blocked availability to ' + resource.Name + ' from ' + ganttStartDate.format() + ' to ' + ganttEndDate.format();
30
31 }
32
33}コード例: サービス予定のカスタムアクション
このアクションは [対応が必要] 項目の True と False を切り替えます。
1global class toggleServiceAppointmentJeopardy implements FSL.CustomGanttServiceAppointmentAction {
2
3 global String action(List<Id> serviceAppointmentsIds, Datetime ganttStartDate, Datetime ganttEndDate, Map<String, Object> additionalParameters) {
4
5 List<ServiceAppointment> saList = [SELECT FSL__InJeopardy__c, AppointmentNumber FROM ServiceAppointment WHERE Id in : serviceAppointmentsIds];
6 String reply = '';
7 List<String> saNames = new List<String>();
8
9 for (ServiceAppointment s : saList) {
10 s.FSL__InJeopardy__c = !s.FSL__InJeopardy__c;
11 saNames.add(s.AppointmentNumber);
12 }
13
14 upsert saList;
15
16 reply = String.join(saNames, ', ');
17 return 'Service Appointments successfully processed: ' + reply;
18 }
19
20}コード例: リソース不在のカスタムアクション
リソース不在の種別が「N/A」の場合、このアクションは翌日に重複する不在を作成します。
1global class copyAbsenceToNextDay implements FSL.CustomGanttResourceAbsenceAction {
2
3 global String action(Id absenceId, String absenceType, Datetime ganttStartDate, Datetime ganttEndDate, Map<String, Object> additionalParameters) {
4
5 ResourceAbsence resourceAbsence = [SELECT Id, AbsenceNumber, Start, End, ResourceId, RecordTypeId, FSL__Approved__c FROM ResourceAbsence WHERE Id =: absenceId LIMIT 1];
6
7 ResourceAbsence raClone = resourceAbsence.clone(false, true, false, false);
8 raClone.Start = resourceAbsence.Start.addDays(1);
9 raClone.End = resourceAbsence.End.addDays(1);
10 raClone.ResourceId = resourceAbsence.ResourceId;
11 raClone.RecordTypeId = resourceAbsence.RecordTypeId;
12 raClone.FSL__Approved__c = true;
13 insert raClone;
14
15 return 'Resource Absence successfully copied.';
16 }
17
18}Visualforce ページの作成
Visualforce ページを作成する場合は、次の GET パラメーターを使用します。
| アクションの対象 | 説明 |
|---|---|
| サービス予定 | 次の形式を使用します。services [複数の場合], id (複数の場合はカンマ区切り), start (現在のガントチャート開始日、string), end (現在のガントチャート終了日、string) 1 つのサービス予定を更新するために使用された Visualforce ページの例: ?id=08p4E000000Kj5hQAC&start=5-7-2018&end=5-8-2018 複数のサービス予定を更新するために使用された Visualforce ページの例: ?services=08p4E000000Kj5hQAC,08p4E000430Kj5hAPP&start=5-7-2018&end=5-8-2018 |
| サービスリソース | 次の形式を使用します。id, stm (サービスリソースの現在のサービステリトリーメンバーレコードの ID), start (現在のガントチャート開始日、string), end (現在のガントチャート終了日、string) 例: ?id=0Hn4E0000001OMQSA2&stm=0Hu4E0000005cpPSAQ&start=5-7-2018&end=5-8-2018 |
| リソースの不在 | 次の形式を使用します。id, type (break または na), start (現在のガントチャート開始日、string), end (現在のガントチャート終了日、string) 例: ?id=0Hw4E00000091HSSAY&type=break&start=5-7-2018&end=5-8-2018 |
コードから Visualforce ライトボックスを閉じるには、parent.postMessage('closeLightbox','*'); を使用します。