ServiceResourceScheduleHandler インターフェース
名前空間
使用方法
lxscheduler.ServiceResourceScheduleHandler インターフェースは Salesforce Scheduler API によってコールされます。
このインターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
1public class ServiceResourceScheduleHandlerImpl implements LxScheduler.ServiceResourceScheduleHandler{}次に、クラスで次のメソッドの実装を提供する必要があります。
1public static List<LxScheduler.ServiceResourceSchedule> getUnavailableTimeslots(LxScheduler.ServiceAppointmentRequestInfo requestInfo){
2 //Your code here
3}実装されたメソッドは global または public として宣言する必要があります。
ServiceResourceScheduleHandler の実装例
これは、lxscheduler.ServiceResourceScheduleHandler インターフェースの実装例です。
1/**
2 * Implement interface lxscheduler.ServiceResourceScheduleHandler
3 * This class is called when fetching service resources and time slots through Salesforce Scheduler API.*/
4 Public class ServiceResourceScheduleHandlerImpl implements lxscheduler.ServiceResourceScheduleHandler{
5
6 // The main interface method.
7 public static List<lxscheduler.ServiceResourceSchedule> getUnavailableTimeslots(lxscheduler.ServiceAppointmentRequestInfo requestInfo){
8 //Request info values.
9 List<lxscheduler.ServiceResourceInfo> serviceResources=requestInfo.getServiceResources();
10 DateTime startDate=requestInfo.getStartDate();
11 DateTime endDate=requestInfo.getEndDate();
12
13
14 List<lxscheduler.ServiceResourceSchedule> resourceUnavailability = new List<lxscheduler.ServiceResourceSchedule>();
15 Set<lxscheduler.UnavailableTimeslot> unavailabilityIntervals = new Set<lxscheduler.UnavailableTimeslot>();
16
17 //This is a dummy response. Implement your own business logic to connect to your internal or external systems.
18 for (Integer i = 0; i < 5; i++) {
19 //Set the unavailability intervals of a service resource.
20 unavailabilityIntervals.add(new lxscheduler.UnavailableTimeslot(startDate.addMinutes(15*i),startDate.addMinutes(15*(i+1))));
21 }
22
23 for (lxscheduler.ServiceResourceInfo ServiceResource:serviceResources) {
24 //Set the unavailability of Service resource.
25 resourceUnavailability.add(new lxscheduler.ServiceResourceSchedule(serviceResource.getServiceResourceId(),unavailabilityIntervals));
26
27 }
28
29 return resourceUnavailability;
30 }
31}この例では、lxscheduler.ServiceResourceScheduleHandler インターフェースを使用してサンプルテストモックを設定する方法を示しています。
1@isTest
2private class ServiceResourceScheduleHandlerImplTest {
3 static testMethod void getUnavailableTimeslotsTest() {
4
5 //Initializing the test execution with mock values. Change it according to the implementation.
6 //In case of non-test execution, the lxscheduler.ServiceAppointmentRequestInfo instance will automatically initialize.
7
8 //Mock values for lxscheduler.ServiceResourceInfo
9 String userId = '005D2000000I1N6IAK';
10 String userName = 'someuser@example.com';
11 String email = 'someuser@example.com';
12 String serviceResourceId = '0HnD20000004C9bKAE';
13 List<String> territoryIds = new List<String>();
14 String resourceType = 'T';
15 lxscheduler.ServiceResourceInfo serviceResInfo = new lxscheduler.ServiceResourceInfo(userId, userName, email,
16 serviceResourceId, territoryIds, resourceType);
17
18 //Mock values for lxscheduler.ServiceAppointmentRequestInfo
19 DateTime startDate = System.now();
20 DateTime endDate = System.now();
21 List<lxscheduler.ServiceResourceInfo> serviceResources = new List<lxscheduler.ServiceResourceInfo>();
22 serviceResources.add(serviceResInfo);
23 String schedulingPolicyId = '0VrD20000004C9S';
24 String workTypeGroupId = '0VSD20000004C93OAE';
25 String accountId = '001D2000002pkXwIAI';
26 String primaryResourceId = '0HnD20000004C9bKAE';
27 String workTypeId = '08qD20000004C9XIAU';
28 String correlationId = 'SOME_ID';
29
30 lxscheduler.ServiceAppointmentRequestInfo mockRequestInfo = new lxscheduler.ServiceAppointmentRequestInfo(startDate, endDate, serviceResources,
31 schedulingPolicyId, workTypeGroupId, accountId,
32 primaryResourceId, workTypeId, correlationId);
33
34 ServiceResourceScheduleHandlerImpl.getUnavailableTimeslots(mockRequestInfo);
35 }
36}