OAAS クラス
名前空間
OAAS のメソッド
OAAS には次のメソッドが含まれます。
optimize(request)
署名
public static Id optimize(FSL.OAASRequest request)
パラメータ
- request
- 型: FSL.OAASRequest
- 最適化リクエスト。
例
この例は、開始される最適化コールのすべての詳細を保持する OAASRequest クラスのインスタンスを作成した後、optimize メソッドをコールし、要求に渡します。
1DateTime start=Datetime.now();
2DateTime finish=Datetime.now().addDays(3);
3
4LIST<Id> lstServiceTerritories = new List<Id>();
5lstServiceTerritories.add('0Hh0b000000cIwsCAE');
6
7FSL.OAASRequest oaasRequest = new FSL.OAASRequest();
8oaasRequest.allTasksMode = true;
9oaasRequest.filterFieldAPIName = null;
10oaasRequest.start = start;
11oaasRequest.finish = finish;
12oaasRequest.includeServicesWithEmptyLocation = false;
13oaasRequest.locations = lstServiceTerritories;
14oaasRequest.schedulingPolicyID = 'a0N4E0000031HKkUAM';
15
16FSL.OAAS oaas = new FSL.OAAS();
17id optRequest = oaas.optimize(oaasRequest);reshuffle(serviceId, policyId)
署名
public static Id reshuffle(Id serviceId, Id policyId)
パラメータ
使用方法
入れ替えアクションは、優先度の高いサービス予定を過密なスケジュール内でスケジュールする必要がある場合に使用されます。予定に対応するためにスケジュールの入れ替えを試みる「ミニ最適化」が実行されます。
入れ替えアクションについての詳細は、「サービス予定の再スケジュール」を参照してください。
例
1FSL.OAAS oaas = new FSL.OAAS();
2id optRequest = oaas.reshuffle('08p4E000000M21CQAS', 'a0N4E0000031HKkUAM');resourceDayOptimization(resourceId, policyId, horizon, includeAllTasks, includeOnlyResourceFutureSA, radius, candidateSasFields, unschedulableServicesField, maxOptRuntime)
署名
public static Id resourceDayOptimization(Id resourceId, Id policyId, FSL.TimeInterval horizon, Boolean includeAllTasks, Boolean includeOnlyResourceFutureSA, Decimal radius, String candidateSasFields, String unschedulableServicesField, Decimal maxOptRuntime)
パラメータ
- resourceId
- 型: Id
- 最適化されるスケジュールのサービスリソースのレコード ID。
- policyId
- 型: Id
- サービス予定をスケジュールするために使用されるスケジュール設定ポリシーのレコード ID。
- horizon
- 型: FSL.TimeInterval
- リソーススケジュールの最適化を実行するために使用される期間。
- includeAllTasks
- 型: Boolean
- true の場合、期間内のすべての関連サービス予定が最適化時に考慮されます。false の場合、スケジュールされていないサービス予定のみが考慮され、スケジュール済みのサービス予定はすべて固定されます (移動不可)。
- includeOnlyResourceFutureSA
- 型: Boolean
- true の場合、サービスリソースにすでに割り当て済みのサービス予定のみが最適化時に考慮されます。false の場合、他のサービスリソースに割り当てられているサービス予定も考慮されます。
- radius
- 型: Decimal
- 必須のサービス予定と隣接する予定の間の推奨距離。必須の予定は、unschedulableServicesField パラメータで定義されます。リソーススケジュールの最適化では、必須の予定からの距離がこの半径未満となるように、サービス予定がグループされます。必須の予定からより離れた場所の予定をスケジュールすることはできますが、優先度は低くなります。null の場合、データは radius (半径) に基づいては絞り込まれません。
- candidateSasFields
- 型: String
- スケジュールする候補である予定を示すサービス予定の Boolean 項目。
- unschedulableServicesField
- 型: String
- サービス予定が必須 (固定)、つまりリソーススケジュールの最適化時にスケジュールに残しておく必要があるかどうかを示すサービス予定の Boolean 項目。
- maxOptRuntime
- 型: Decimal
- この合計時間 (秒) 内に最適化の結果が返される必要があります。このパラメータは最適化時間を適用するだけで、最適化キュー時間または Apex ジョブキュー時間は含まれません。null の場合、デフォルト値の 30 秒が使用されます。
使用方法
resourceDayOptimization(resourceId, policyId, horizon, includeAllTasks, includeOnlyResourceFutureSA, radius, candidateSasFields, unschedulableServicesField, maxOptRuntime, nowTimeOnSchedule)
署名
public static Id resourceDayOptimization(Id resourceId, Id policyId, FSL.TimeInterval horizon, Boolean includeAllTasks, Boolean includeOnlyResourceFutureSA, Decimal radius, String candidateSasFields, String unschedulableServicesField, Decimal maxOptRuntime, Datetime nowTimeOnSchedule)
パラメータ
- resourceId
- 型: Id
- 最適化されるスケジュールのサービスリソースのレコード ID。
- policyId
- 型: Id
- サービス予定をスケジュールするために使用されるスケジュール設定ポリシーのレコード ID。
- horizon
- 型: FSL.TimeInterval
- リソーススケジュールの最適化を実行するために使用される期間。
- includeAllTasks
- 型: Boolean
- true の場合、期間内のすべての関連サービス予定が最適化時に考慮されます。false の場合、スケジュールされていないサービス予定のみが考慮され、スケジュール済みのサービス予定はすべて固定されます (移動不可)。
- includeOnlyResourceFutureSA
- 型: Boolean
- true の場合、サービスリソースにすでに割り当て済みのサービス予定のみが最適化時に考慮されます。false の場合、他のサービスリソースに割り当てられているサービス予定も考慮されます。
- radius
- 型: Decimal
- 必須のサービス予定と隣接する予定の間の推奨距離。必須の予定は、unschedulableServicesField パラメータと nowTimeOnSchedule パラメータで定義されます。リソーススケジュールの最適化では、必須の予定からの距離がこの半径未満となるように、サービス予定がグループされます。必須の予定からより離れた場所の予定をスケジュールすることはできますが、優先度は低くなります。null の場合、データは radius (半径) に基づいては絞り込まれません。
- candidateSasFields
- 型: String
- スケジュールする候補である予定を示すサービス予定の Boolean 項目。
- unschedulableServicesField
- 型: String
- サービス予定が必須 (固定)、つまりリソーススケジュールの最適化時にスケジュールに残しておく必要があるかどうかを示すサービス予定の Boolean 項目。
- maxOptRuntime
- 型: Decimal
- この合計時間 (秒) 内に最適化の結果が返される必要があります。このパラメータは最適化時間を適用するだけで、最適化キュー時間または Apex ジョブキュー時間は含まれません。null の場合、デフォルト値の 30 秒が使用されます。
- nowTimeOnSchedule
- 型: Datetime
- スケジュールされた開始時刻がこの時刻より早い予定は必須とみなされ、リソーススケジュールの最適化時には更新されません。リソーススケジュールの最適化は非同期なので、このパラメータは最適化がいつ開始されたのかを示します。たとえば、nowTimeOnSchedule が 2018 年 4 月 17 日の 10 時 30 分に設定されている場合、スケジュールされた開始日時がそれよりも早い予定は必須とみなされ、リソーススケジュールの最適化から除外されます。
使用方法
例
このコードサンプルを使用するには、ID プレースホルダ (例: Service Appointment ID) を組織のレコード ID に置き換えます。ID は '08p4E00000017Gq' のように単一引用符で囲みます。
1FSL.OAAS a = new FSL.OAAS();
2
3//SET the horizon interval
4DateTime start = DateTime.newInstanceGmt(DateTime.Now().dateGmt(), Time.newInstance(0,0,0,0));
5DateTime finish = start.addDays(3);
6FSL.TimeInterval horizon = new FSL.TimeInterval(start,finish);
7
8//SELECT the candidatesServices
9List<ServiceAppointment> services = [SELECT Id FROM ServiceAppointment WHERE Id IN
10 (Service Appointment ID,Service Appointment ID) ];
11SET<Id> candidatesIds = new SET<Id>();
12FOR(ServiceAppointment service : services) {
13 candidatesIds.add(service.Id);
14}
15
16//SET the RSO required appointment services
17Set<Id> requiredSaIds = new Set<Id>();
18List<ServiceAppointment> services2 = [SELECT Id FROM ServiceAppointment WHERE Id=Service Appointment ID];
19FOR(ServiceAppointment service : services2) {
20 requiredSaIds.add(service.Id);
21}
22
23//START the RSO process
24Id requestId = a.resourceDayOptimization(Service Resource ID,Scheduling Policy ID,
25 horizon,false,true,50,candidatesIds,requiredSaIds,60,DateTime.newInstance(2018,1,0,0,0,0));resourceDayOptimization(resourceId, policyId, horizon, includeAllTasks, includeOnlyResourceFutureSA, radius, candidateSas, unschedulableServices, maxOptRuntime)
署名
public static Id resourceDayOptimization(Id resourceId, Id policyId, FSL.TimeInterval horizon, Boolean includeAllTasks, Boolean includeOnlyResourceFutureSA, Decimal radius, Set<String> candidateSas, Set<String> unschedulableServices, Decimal maxOptRuntime)
パラメータ
- resourceId
- 型: Id
- 最適化されるスケジュールのサービスリソースのレコード ID。
- policyId
- 型: Id
- サービス予定をスケジュールするために使用されるスケジュール設定ポリシーのレコード ID。
- horizon
- 型: FSL.TimeInterval
- リソーススケジュールの最適化を実行するために使用される期間。
- includeAllTasks
- 型: Boolean
- true の場合、期間内のすべての関連サービス予定が最適化時に考慮されます。false の場合、スケジュールされていないサービス予定のみが考慮され、スケジュール済みのサービス予定はすべて固定されます (移動不可)。
- includeOnlyResourceFutureSA
- 型: Boolean
- true の場合、サービスリソースにすでに割り当て済みのサービス予定のみが最適化時に考慮されます。false の場合、他のサービスリソースに割り当てられているサービス予定も考慮されます。
- radius
- 型: Decimal
- 必須のサービス予定と隣接する予定の間の推奨距離。必須の予定は、unschedulableServices パラメータで定義されます。リソーススケジュールの最適化では、必須の予定からの距離がこの半径未満となるように、サービス予定がグループされます。必須の予定からより離れた場所の予定をスケジュールすることはできますが、優先度は低くなります。null の場合、データは radius (半径) に基づいては絞り込まれません。
- candidateSas
- 型: Set<Id>
- スケジュールする候補となるサービス予定の ID のセット。
- unschedulableServices
- 型: Set<Id>
- リソーススケジュールの最適化時にスケジュールに残しておく必要がある、必須 (固定) のサービス予定の ID のセット。
- maxOptRuntime
- 型: Decimal
- この合計時間 (秒) 内に最適化の結果が返される必要があります。このパラメータは最適化時間を適用するだけで、最適化キュー時間または Apex ジョブキュー時間は含まれません。null の場合、デフォルト値の 30 秒が使用されます。
使用方法
resourceDayOptimization(resourceId, policyId, horizon, includeAllTasks, includeOnlyResourceFutureSA, radius, candidateSas, unschedulableServices, maxOptRuntime, nowTimeOnSchedule)
署名
public static Id resourceDayOptimization(Id resourceId, Id policyId, FSL.TimeInterval horizon, Boolean includeAllTasks, Boolean includeOnlyResourceFutureSA, Decimal radius, Set<String> candidateSas, Set<String> unschedulableServices, Decimal maxOptRuntime, Datetime nowTimeOnSchedule)
パラメータ
- resourceId
- 型: Id
- 最適化されるスケジュールのサービスリソースのレコード ID。
- policyId
- 型: Id
- サービス予定をスケジュールするために使用されるスケジュール設定ポリシーのレコード ID。
- horizon
- 型: FSL.TimeInterval
- リソーススケジュールの最適化を実行するために使用される期間。
- includeAllTasks
- 型: Boolean
- true の場合、期間内のすべての関連サービス予定が最適化時に考慮されます。false の場合、スケジュールされていないサービス予定のみが考慮され、スケジュール済みのサービス予定はすべて固定されます (移動不可)。
- includeOnlyResourceFutureSA
- 型: Boolean
- true の場合、サービスリソースにすでに割り当て済みのサービス予定のみが最適化時に考慮されます。false の場合、他のサービスリソースに割り当てられているサービス予定も考慮されます。
- radius
- 型: Decimal
- 必須のサービス予定と隣接する予定の間の推奨距離。必須の予定は、unschedulableServices パラメータと nowTimeOnSchedule パラメータで定義されます。リソーススケジュールの最適化では、必須の予定からの距離がこの半径未満となるように、サービス予定がグループされます。必須の予定からより離れた場所の予定をスケジュールすることはできますが、優先度は低くなります。null の場合、データは radius (半径) に基づいては絞り込まれません。
- candidateSas
- 型: Set<Id>
- スケジュールする候補となるサービス予定の ID のセット。
- unschedulableServices
- 型: Set<Id>
- リソーススケジュールの最適化時にスケジュールに残しておく必要がある、必須のサービス予定の ID のセット。これらの予定は、別の時間枠に移動できますが、[許容最早開始日] と [期日] の値に引き続き準拠します。
- maxOptRuntime
- 型: Decimal
- この合計時間 (秒) 内に最適化の結果が返される必要があります。このパラメータは最適化時間を適用するだけで、最適化キュー時間または Apex ジョブキュー時間は含まれません。null の場合、デフォルト値の 30 秒が使用されます。
- nowTimeOnSchedule
- 型: Datetime
- 省略可能。スケジュールされた開始時刻がこの時刻より早い予定は必須とみなされ、リソーススケジュールの最適化時には更新されません。リソーススケジュールの最適化は非同期なので、このパラメータは最適化がいつ開始されたのかを示します。たとえば、nowTimeOnSchedule が 2018 年 4 月 17 日の 10 時 30 分に設定されている場合、スケジュールされた開始日時がそれよりも早い予定は必須とみなされ、リソーススケジュールの最適化から除外されます。
使用方法
例
1FSL.OAAS a = new FSL.OAAS();
2
3//SET the horizon interval
4DateTime start = DateTime.newInstanceGmt(DateTime.Now().dateGmt(), Time.newInstance(0,0,0,0));
5DateTime finish = start.addDays(3);
6FSL.TimeInterval horizon = new FSL.TimeInterval(start,finish);
7
8//SELECT the candidatesServices
9List<ServiceAppointment> services = [SELECT Id FROM ServiceAppointment WHERE Id IN ('08p4E00000017Gp','08p4E00000017Go') ];
10SET<Id> candidatesIds = new SET<Id>();
11FOR(ServiceAppointment service : services) {
12 candidatesIds.add(service.Id);
13}
14
15//SET the RSO required appointment services
16Set<Id> requiredSaIds = new Set<Id>();
17List<ServiceAppointment> services2 = [SELECT Id FROM ServiceAppointment WHERE Id='08p4E00000017Gq'];
18FOR(ServiceAppointment service : services2) {
19 requiredSaIds.add(service.Id);
20}
21
22//START the RSO process
23Id requestId = a.resourceDayOptimization('0Hn4E0000004JRS','a1w4E000000Ac6S',horizon,false,true,50,
24 candidatesIds,requiredSaIds,60,DateTime.newInstance(2018,1,0,0,0,0));