AppointmentBookingService クラス
名前空間
使用方法
AppointmentBookingService クラスをコールする前に、親作業指示とサービス予定がすでに存在することを確認してください。
タイムゾーンは通常、サービスを依頼する顧客のロケーションに基づきます。ベストプラクティスとして、サービステリトリーの業務時間で指定されたタイムゾーンを使用してください。
時間枠を評価や日付で並べ替えて返したい場合は、getSlots() メソッドで sort パラメータの sortResultsBy または sortBy を使用してください。
AppointmentBookingService クラスがコールされると、関連付けられた作業種別の ExactAppointment 値は無視されます。正確な予定が必要な場合は、パラメータでこの値を true に設定します。作業種別の ExactAppointment を優先する場合は、作業種別から直接照会します。
時間枠を取得した後、開発者は時間枠の表示方法または管理方法を決めることができます。通常、時間枠は顧客に表示され、顧客が時間枠を選択します。時間枠が選択されたら、サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目が時間枠の開始時刻と終了時刻で更新されます。例:
1FSL.AppointmentBookingSlot slot = slots[0];
2sa.ArrivalWindowStartTime = slot.Interval.Start.addSeconds(tz.getOffset(slot.Interval.Start) / -1000);
3sa.ArrivalWindowEndTime = slot.Interval.Finish.addSeconds(tz.getOffset(slot.Interval.Finish) / -1000);
4
5update sa;サービス予定が選択された時間枠内に正しくスケジュールされるように、FSL.ScheduleService メソッドがコールされます。
AppointmentBookingService のメソッド
AppointmentBookingService には、次の静的メソッドが含まれます。
getSlots(serviceID, policyId, operatingHoursId, tz, exactAppointment)
署名
public static List<FSL.AppointmentBookingSlot> getSlots(Id serviceID, Id policyId, Id operatingHoursId, System.TimeZone tz, Boolean exactAppointment)
パラメータ
- serviceID
- 型: Id
- 必須。スケジュールされるサービス予定の ID。
- policyId
- 型: Id
- 必須。使用されるスケジュール設定ポリシーの ID。
- operatingHoursId
- 型: Id
-
必須。時間枠の間隔を決定するために使用される業務時間レコードの ID。
- tz
- 型: System.TimeZone
- 必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
- exactAppointment
- 型: Boolean
- 必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。
戻り値
使用方法
このメソッドは指定されたサービス予定を予約可能な時間枠のリストを返します。結果は元の要求で送信されたタイムゾーンで返されます。
予定の時間枠は、コールで提供された operatingHoursId 値によって異なります。operatingHoursId は、予定の予約時に顧客に提示されたさまざまな時間枠を表します (月曜日の午前 9 時~ 11 時、午前 11 時~午後 1 時、午後 1 時~ 3 時、火曜日の午前 9 時~ 11 時、正午~午後 4 時など)。
このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。エンドユーザが希望する時間枠を選択したら、サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。
データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。
拡張されたスケジュール設定および最適化 (ESO) が有効な場合、このメソッドは同期して実行されます。ESO が有効ではない場合、このメソッドのコールでは、一度に 1 つのサービス予定しか使用できず、非同期的に実行されます。この非同期メソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登録できます。
例
この例は、[顧客優先] スケジュール設定ポリシーと [ゴールド予定カレンダー] 業務時間を、希望する予定時間枠として使用して AppointmentBookingService クラスをコールします。
1// FSL.AppointmentBookingService
2// The getSlots method returns a list of AppointmentBookingSlot objects.
3
4ServiceAppointment sa = [SELECT Id, EarliestStartTime, DueDate FROM ServiceAppointment
5 WHERE Id='07r3F0000009dTSGEC'];
6Id schedulingPolicyId = [SELECT Id FROM FSL__Scheduling_Policy__c
7 WHERE Name='Customer first' LIMIT 1].Id;
8Id operatingHoursId = [SELECT id FROM OperatingHours
9 WHERE name='Gold Appointments Calendar' LIMIT 1].Id;
10Timezone tz = UserInfo.getTimeZone();
11
12List<FSL.AppointmentBookingSlot> slots = FSL.AppointmentBookingService.GetSlots(sa.Id, schedulingPolicyId, operatingHoursId, tz, false);
13
14System.debug('Returned ' + slots.size() + ' appointment slots');
15for(integer i=0; i<slots.size(); i++){
16 system.debug('Slot:'+i+' Start: '+slots[i].Interval.Start+' Finish:'+ slots[i].Interval.Finish+' Grade: '+slots[i].Grade);
17}getSlots(serviceID, policyId, calendar, tz, exactAppointment)
署名
public static List<FSL.AppointmentBookingSlot> getSlots(Id serviceID, Id policyId, OperatingHours calendar, System.TimeZone tz, Boolean exactAppointment)
パラメータ
- serviceID
- 型: Id
- 必須。スケジュールされるサービス予定の ID。
- policyId
- 型: Id
- 必須。使用されるスケジュール設定ポリシーの ID。
- calendar
- 型: OperatingHours オブジェクト
-
必須。calendar は、時間枠の間隔を決定するために使用されます。
- tz
- 型: System.TimeZone
- 必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
- exactAppointment
- 型: Boolean
- 必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。
戻り値
使用方法
このメソッドは指定されたサービス予定を予約可能な時間枠のリストを返します。結果は元の要求で送信されたタイムゾーンで返されます。予定の時間枠 (9 時~ 11 時、11 時~ 1 時、1 時~ 3 時など) は、OperatingHours オブジェクトのサブクエリで返された時間枠によって異なります。
このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。
データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。
拡張されたスケジュール設定および最適化 (ESO) が有効な場合、このメソッドは同期して実行されます。ESO が有効ではない場合、このメソッドのコールでは、一度に 1 つのサービス予定しか使用できず、非同期的に実行されます。この非同期メソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登録できます。
例
次の例では、サブクエリを使用して OperatingHours オブジェクトである calendar から時間枠を取得しています。
1// FSL.AppointmentBookingService
2// The getSlots method returns a list of AppointmentBookingSlot objects.
3
4ServiceAppointment sa = [SELECT Id, EarliestStartTime, DueDate FROM ServiceAppointment
5 WHERE Id='08p4F0000008sRMQAY'];
6Id schedulingPolicyId = [SELECT Id FROM FSL__Scheduling_Policy__c
7 WHERE Name='Customer First' LIMIT 1].Id;
8operatinghours oh = new operatinghours();
9oh = [SELECT id, (SELECT EndTime, StartTime, Type, DayOfWeek FROM TimeSlots) FROM OperatingHours
10 WHERE name='AB Slot: 2 Hour Slots' LIMIT 1];
11Timezone tz = UserInfo.getTimeZone();
12
13List<FSL.AppointmentBookingSlot> slots = FSL.AppointmentBookingService.GetSlots(sa.Id, schedulingPolicyId, oh, tz, false);
14
15System.debug('Returned ' + slots.size() + ' appointment slots');
16for(integer i=0; i<slots.size(); i++){
17 system.debug('Slot:'+i+' Start: '+slots[i].Interval.Start+' Finish:'+ slots[i].Interval.Finish+' Grade: '+slots[i].Grade);
18}getSlots(serviceID, policyId, calendar, tz, sortResults, exactAppointment)
署名
public static List<FSL.AppointmentBookingSlot> getSlots(Id serviceID, Id policyId, OperatingHours calendar, System.TimeZone tz, FSL.AppointmentBookingService.SortResultsBy sortResults, Boolean exactAppointment)
パラメータ
- serviceID
- 型: Id
- 必須。スケジュールされるサービス予定の ID。
- policyId
- 型: Id
- 必須。使用されるスケジュール設定ポリシーの ID。
- calendar
- 型: OperatingHours オブジェクト
-
必須。calendar は、時間枠の間隔を決定するために使用されます。
- tz
- 型: System.TimeZone
- 必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
- sortResults
- 型: FSL.AppointmentBookingService.SortResultsBy 列挙
- 必須。返される AppointmentBookingSlot の結果を並べ替えるために使用します。使用できる sort 値は、Grade、NoSort、SlotDateTime です。
- exactAppointment
- 型: Boolean
- 必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。
戻り値
使用方法
このメソッドは指定されたサービス予定を予約可能な時間枠のリストを並べ替えて返します。結果は元の要求で送信されたタイムゾーンで返されます。予定の時間枠 (9 時~ 11 時、11 時~ 1 時、1 時~ 3 時など) は、OperatingHours オブジェクトである calendar のサブクエリで返された時間枠によって異なります。
このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。
データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。
拡張されたスケジュール設定および最適化 (ESO) が有効な場合、このメソッドは同期して実行されます。ESO が有効ではない場合、このメソッドのコールでは、一度に 1 つのサービス予定しか使用できず、非同期的に実行されます。この非同期メソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登録できます。
例
次の例では、返された時間枠を評価によって並べ替えています。calendar パラメータを含む署名を使用する場合は、OperatingHours オブジェクトで時間枠のサブクエリを使用してください。
1// FSL.AppointmentBookingService
2// The getSlots method returns a list of AppointmentBookingSlot objects.
3
4ServiceAppointment sa = [SELECT Id, EarliestStartTime, DueDate FROM ServiceAppointment
5 WHERE Id='08p4F0000008sRMQAY'];
6Id schedulingPolicyId = [SELECT Id FROM FSL__Scheduling_Policy__c
7 WHERE Name='Customer First' LIMIT 1].Id;
8operatinghours oh = new operatinghours();
9oh = [SELECT id, (SELECT EndTime, StartTime, Type, DayOfWeek FROM TimeSlots) FROM OperatingHours
10 WHERE name='AB Slot: 2 Hour Slots' LIMIT 1];
11Timezone tz = UserInfo.getTimeZone();
12
13FSL.AppointmentBookingService.SortResultsBy sortResults = FSL.AppointmentBookingService.SortResultsBy.Grade;
14List<FSL.AppointmentBookingSlot> slots = FSL.AppointmentBookingService.GetSlots(sa.Id, schedulingPolicyId, oh, tz, sortResults, false);
15
16System.debug('Returned ' + slots.size() + ' appointment slots');
17for(integer i=0; i<slots.size(); i++){
18 system.debug('Slot:'+i+' Start: '+slots[i].Interval.Start+' Finish:'+ slots[i].Interval.Finish+' Grade: '+slots[i].Grade);
19}getSlots(serviceID, policyId, calendar, tz, sortBy, exactAppointment)
署名
public static List<FSL.AppointmentBookingSlot> getSlots(Id serviceID, Id policyId, OperatingHours calendar, System.TimeZone tz, String sortBy, Boolean exactAppointment)
パラメータ
- serviceID
- 型: Id
- 必須。スケジュールされるサービス予定の ID。
- policyId
- 型: Id
- 必須。使用されるスケジュール設定ポリシーの ID。
- calendar
- 型: OperatingHours オブジェクト
-
必須。calendar は、時間枠の間隔を決定するために使用されます。
- tz
- 型: System.TimeZone
- 必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
- sortBy
- 型: String
- 必須。AppointmentBookingSlot の結果を並べ替えるために使用します。使用できる値は、SORT_BY_GRADE、SORT_BY_DATE、SORT_BY_NO_SORT です。
- exactAppointment
- 型: Boolean
- 必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。
戻り値
使用方法
このメソッドは指定されたサービス予定を予約可能な時間枠のリストを並べ替えて返します。結果は元の要求で送信されたタイムゾーンで返されます。予定の時間枠 (9 時~ 11 時、11 時~ 1 時、1 時~ 3 時など) は、OperatingHours オブジェクトである calendar のサブクエリで返された時間枠によって異なります。
このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。
データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。
拡張されたスケジュール設定および最適化 (ESO) が有効な場合、このメソッドは同期して実行されます。ESO が有効ではない場合、このメソッドのコールでは、一度に 1 つのサービス予定しか使用できず、非同期的に実行されます。この非同期メソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登録できます。
getABSlots(serviceID, policyId, calendar, tz, sortBy, exactAppointment)
署名
public static FSL.ABSlotsResponse getABSlots(Id serviceID, Id policyId, OperatingHours calendar, System.TimeZone tz, String sortBy, Boolean exactAppointment)
パラメータ
- serviceID
- 型: Id
- 必須。スケジュールされるサービス予定の ID。
- policyId
- 型: Id
- 必須。使用されるスケジュール設定ポリシーの ID。
- calendar
- 型: OperatingHours オブジェクト
-
必須。calendar は、時間枠の間隔を決定するために使用されます。
- tz
- 型: System.TimeZone
- 必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
- sortBy
- 型: String
- 必須。結果を並べ替えるために使用します。使用できる値は、SORT_BY_GRADE、SORT_BY_DATE、SORT_BY_NO_SORT です。
- exactAppointment
- 型: Boolean
- 必須。結果で正確な予定または到着期間を使用するかを指定します。このメソッドがコールされると、作業種別の exactAppointment 値は無視されます。
戻り値
型: FSL.ABSlotsResponse
使用方法
このメソッドは、2 つのサービス予定の複雑な作業チェーンの予定の予約枠を取得します。このメソッドは、複雑な作業設定の [Use all-or-none scheduling for related appointments (関連する予定のスケジュールはすべてスケジュールするかまったくスケジュールしない)] を反映します。
拡張されたスケジュール設定および最適化 (ESO) が有効な場合、このメソッドは同期して実行されます。ESO が有効になっていないと、このメソッドは非同期になります。この非同期メソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登録できます。
このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSLScheduleService クラスの scheduleExtended メソッドをコールします。
データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。