Loading
ただいま大変多くのお問い合わせをいただいており、ご連絡までにお時間を頂戴しております続きを読む

[SFS]-サービスリソースを共有する複数のテリトリーに対して最適化リクエストを同時に実行すると、サービス予定が重複して設定される

公開日: Jul 3, 2026
説明

シナリオ:

2 つの異なるサービステリトリーに対して、2 つの OR が同時にトリガーされます。これらのテリトリーに配置されているサービスリソースは次のとおりです。

 

サービスリソーステリトリー 1 (プライマリ)テリトリー 2 (セカンダリ)
サービスリソース Aプライマリセカンダリ
サービスリソース Bプライマリセカンダリ

両方の OR が同時に開始されます。

最適化リクエスト対象テリトリー開始時刻完了時刻重複発生の有無
OR 1テリトリー 101:00 AM01:14 AMなし
OR 2テリトリー 201:00 AM01:28 AMあり

根本原因

FSL 最適化エンジンでは、スケジュールされた実行を処理するときに楽観的並行性制御モデルが使用されます。

  1. データスナップショット: 実行の開始時に、各 OR は関連するすべてのリソースの対応可能状況と予定データについて、その時点でのスナップショットを取得します。

  2. 独立実行: 最適化エンジンは、この固定された独立スナップショットのみを参照して実行されます。

  3. コミットフェーズ: OR は処理を完了すると、処理の実行中に元となるデータが変更されたかどうかを再確認することなく、スケジュール結果をデータベースにコミットします。

OR 1 と OR 2 が同時に開始されると、それぞれが同一のデータスナップショットを取得します。最初に完了した OR (OR 1) は、有効な割り当てを正常にコミットします。ただし、2 番目の OR (OR 2) が完了すると、古くなったスナップショットに基づいて変更が書き込まれ、意図せず OR 1 の割り当てが上書きされ、重複する予定が作成されます。

# 「テリトリーを照合」でこれを防ぐことができない理由:

一般的に、システム管理者は「テリトリーを照合」の作業ルールによってテリトリーの最適化処理が分離されることを期待します。このルールは正しく動作するものの、データベーストランザクションではなくポリシー範囲を制御します。

 
「テリトリーを照合」の動作この問題を防げるか
テリトリー 2 の OR が、テリトリー 2 の SA をスケジュールするよう制限はい (正しく適用)
テリトリー 1 の OR が、テリトリー 1 の SA をスケジュールするよう制限はい (正しく適用)
テリトリーをまたいだ SA の割り当てを防止はい (正しく適用)
共有リソースを同時実行の OR 処理からロックいいえ (このルールの適用範囲外)
実行中にリソースの対応可能状況を更新いいえ (このルールの適用範囲外)
同時実行される OR 間の競合を検出いいえ (このルールの適用範囲外)

 

結果的に発生した重複は、ポリシー違反や設定ミスによるものではありません。これは、2 つの独立したプロセスが同じ物理リソースを同じ時間枠にスケジュール設定してしまうことで発生する、データの競合状態です。

解決策

サービスリソースのプールを共有するサービステリトリーでは、最適化リクエストのスケジュールをずらしてください

ステップごとの実装手順:

  1. 重複の特定: 同じサービスリソース (プライマリまたはセカンダリ) を共有するすべてのサービステリトリーを洗い出します。

  2. プライマリテリトリーの優先度付け: プライマリ/高優先度テリトリーの OR を最初に実行するようにスケジュール設定します。

  3. バッファの導入: 開始時刻の間に十分な間隔を確保します。最初の OR の一般的な完了時刻から 20 ~ 30 分後に、次の OR を開始するようにバッファを適用します。

スケジュールモデルOR 1 (テリトリー 1) の開始OR 2 (テリトリー 2) の開始結果
変更前 (問題あり)01:00 AM01:00 AM競合状態が発生し、予定が重複する。
変更後 (推奨)01:00 AM01:30 AM問題なく実行される。OR 2 のスナップショットに、OR 1のコミット済みの変更が反映される。

OR をずらすことで、2 番目の OR は最初の OR でコミットされた変更がすでに反映されたスナップショットを取得するため、競合状態が解消されます。


ナレッジ記事番号

005387523

 
読み込み中
Salesforce Help | Article