Represents the results shown in the Candidates quick action. Use the GradeSlotsService class to evaluate all possible slots where a given service appointment can be scheduled.
When scheduling a service appointment, the user scheduling the appointment must have one of four managed package permission sets: Field Service Admin, Field Service Dispatcher, Field Service Call Center, Field Service Self-Service. If you’re using platform events to schedule appointments, you must explicitly configure the user so that the user has the correct permissions. Without the proper configuration, the platform event runs as the Automated Process system user and doesn’t have the correct permissions to schedule an appointment. To learn more, see Configure the User and Batch Size for Your Platform Event Trigger.
Note
GradeSlotsService Constructors
The following are constructors for GradeSlotsService.
If Enhanced Scheduling and Optimization (ESO) is enabled, this method runs synchronously. If ESO isn’t enabled, this method can be called with only one service appointment at a time, and runs asynchronously. To examine results that the asynchronous method returns, use the streaming API and subscribe to MstCompletedChannel, the channel for the Field Service managed package.
Example
This example illustrates how to parse the results in the FSL.AdvancedGapMatrix to extract the service resource ID, start and end times, and grade of each slot.
1// FSL.GradeSlotsService class2// The getGradedMatrix method returns a matrix of resource id's AND graded time slots34Id serviceAppointmentId = '08p1N000000qN4sQAE';5Id schedulingPolicyId=[SELECT Id FROM FSL__Scheduling_Policy__c WHERE Name='Customer First' LIMIT 1].Id;67// GENERATE the graded time slots for the service appointment8FSL.GradeSlotsService mySlotService = new FSL.GradeSlotsService(schedulingPolicyId,serviceAppointmentId);910// STORE the matrix of service resource id's and graded time slots11FSL.AdvancedGapMatrix myResultMatrix = mySlotService.getGradedMatrix(true);1213Map<Id,FSL.ResourceScheduleData>mySRGradedTimeSlotMap = myResultMatrix.ResourceIDToScheduleData;14for(Id thisresourceid : mySRGradedTimeSlotMap.keySet()){15 for(FSL.SchedulingOption thisso : mySRGradedTimeSlotMap.get(thisresourceid).SchedulingOptions){16 system.debug('***** Resource Id' + thisresourceid);17 system.debug('***** Start - ' + thisso.Interval.Start);18 system.debug('***** Finish - ' + thisso.Interval.Finish);19 system.debug('****** Grade - ' + thisso.Grade);20}21}