この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

AppointmentBookingService クラス

フィールドサービスの予定予約のスケジュール処理を表します。予定の予約は、スケジュール設定ポリシー、作業ルール、サービス内容を考慮して、サービス予定に使用可能な時間枠を返します。たとえば、明日の午前 9 時~ 11 時、または次の月曜日の午後 4 時~ 6 時に予定をスケジュールできます。

名前空間

FSL

使用方法

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)

FSL.AppointmentBookingSlot レコードのリストを返します。

署名

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。

業務時間レコードの TimeZone は無視されます。

メモ

tz
型: System.TimeZone
必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
exactAppointment
型: Boolean
必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。

使用方法

このメソッドは指定されたサービス予定を予約可能な時間枠のリストを返します。結果は元の要求で送信されたタイムゾーンで返されます。

予定の時間枠は、コールで提供された operatingHoursId 値によって異なります。operatingHoursId は、予定の予約時に顧客に提示されたさまざまな時間枠を表します (月曜日の午前 9 時~ 11 時、午前 11 時~午後 1 時、午後 1 時~ 3 時、火曜日の午前 9 時~ 11 時、正午~午後 4 時など)。

このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。エンドユーザが希望する時間枠を選択したら、サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。

データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。

この例は、[顧客優先] スケジュール設定ポリシーと [ゴールド予定カレンダー] 業務時間を、希望する予定時間枠として使用して 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)

FSL.AppointmentBookingSlot レコードのリストを返します。

署名

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 は、時間枠の間隔を決定するために使用されます。

業務時間レコードの TimeZone は無視されます。

メモ

tz
型: System.TimeZone
必須。時間枠が返されるタイムゾーン。このタイムゾーンは通常、サービス予定が行われるサービステリトリー、つまり顧客のロケーションのタイムゾーンです。予定の予約枠は、顧客のロケーションのタイムゾーンで表示する必要があります。
exactAppointment
型: Boolean
必須。結果で正確な予定または到着期間を使用するかを指定します。getSlots() メソッドがコールされると、作業種別の exactAppointment 値は無視されます。

使用方法

このメソッドは指定されたサービス予定を予約可能な時間枠のリストを返します。結果は元の要求で送信されたタイムゾーンで返されます。予定の時間枠 (9 時~ 11 時、11 時~ 1 時、1 時~ 3 時など) は、OperatingHours オブジェクトのサブクエリで返された時間枠によって異なります。

このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSL.ScheduleService メソッドをコールします。

データベースで日時が更新される前に、���イムゾーン変換を実行して dateTime 値を UTC に変換します。

次の例では、サブクエリを使用して 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)

並べ替えられた FSL.AppointmentBookingSlot レコードのリストを返します。

署名

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 は、時間枠の間隔を決定するために使用されます。

業務時間レコードの TimeZone は無視されます。

メモ

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 に変換します。

次の例では、返された時間枠を評価によって並べ替えています。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)

並べ替えられた FSL.AppointmentBookingSlot レコードのリストを返します。

署名

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 は、時間枠の間隔を決定するために使用されます。

業務時間レコードの TimeZone は無視されます。

メモ

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 に変換します。

getABSlots(serviceID, policyId, calendar, tz, sortBy, exactAppointment)

2 つのサービス予定のチェーンの複雑な作業連動関係を反映した FSL.AppointmentBookingSlot レコードのリストを返します。

署名

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 は、時間枠の間隔を決定するために使用されます。

業務時間レコードの TimeZone は無視されます。

メモ

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 (関連する予定のスケジュールはすべてスケジュールするかまったくスケジュールしない)] を反映します。

このメソッドは非同期です。このメソッドが返す結果を調べるために、ストリーミング API を使用して、Field Service 管理パッケージのチャネルである MstCompletedChannel に登���できます。

このメソッドは空き時間枠を返すだけで、サービス予定のスケジュールは行いません。サービス予定の ArrivalWindowStartTime 項目と ArrivalWindowEndTime 項目を更新し、FSLScheduleService クラスの scheduleExtended メソッドをコールします。

データベースで日時が更新される前に、タイムゾーン変換を実行して dateTime 値を UTC に変換します。