インスタンスデータレプリケーション (IDR)でのレプリケーション動作の変更
インスタンスデータレプリケーション (IDR) (IDR) でオプション設定を構成して、データの複製方法を変更します。
カスタム結合
コンシューマーインスタンスのレコードが、インスタンスデータレプリケーション (IDR) (IDR) のプロデューサーインスタンスの同じレコードとは異なる sys_id を持つ場合は、異なる列を使用してレコードを結合します。
デフォルトでは、IDR のレコードを結合するために [sys_id] フィールドが使用されます。San Diego リリースから、別のフィールドの使用を選択できます。
コンシューマーインスタンスのレコードが、プロデューサーインスタンスの同じレコードと異なる sys_id を持つ場合は、列結合機能を使用します。たとえば、レコードがディスカバリーによって作成され、複数のインスタンスにロードされた場合などは、sys_id が一致しなくなる可能性があります。このシナリオでは、[カスタム結合を有効にする] オプションを選択し、プロデューサーレプリケーションエントリーフォームで結合フィールドを選択することで、別の一意の識別子フィールドを使用できます。
[結合] フィールドを選択するときは、次のことを確認する必要があります。
- 選択したフィールドは、プロデューサーインスタンスのレプリケーションエントリーフォームの [含まれているフィールド (Included Fields)] にあります。
- フィールドは、コンシューマーインスタンス上で、同じ名前、長さ、およびタイプで存在します。 注:フィールドに有効な変換を作成する場合、[結合] フィールドはコンシューマーインスタンスで異なる場合があります。
- 選択したフィールドの [一意の列] の値は、辞書エントリ [sys_dictionary] テーブルで true に設定されます。
[結合] フィールドとして設定した後は、フィールドの値を変更しないでください。
設定後に [結合] フィールドを変更するには、プロデューサーインスタンスのレプリケーションエントリを削除し、新しいレプリケーションエントリを作成する必要があります。
[結合] フィールドがコンシューマーインスタンスに存在しない場合、コンシューマーレプリケーションセットフォームに次のエラーが表示されます。コンシューマーインスタンスは、<column_name> の結合フィールドを、<table_name> テーブルの有効なメンバーとして認識していません。プロデューサーテーブルからコンシューマーインスタンスへの更新を受信するには、このフィールドを作成するか、このテーブルでの変換を有効にします。
変換による結合の使用時にエラーが発生する
プロデューサーインスタンスで変換が有効になっている場合、ターゲットテーブルの [結合] フィールドの名前、タイプ、および長さが同じである必要があります。これらのパラメーターのいずれかが一致しない場合、エラーが表示されます。
プロデューサーインスタンスで変換が有効になっていて、[結合] フィールドのマッピングが無効であり、コンシューマーがエントリを同期している場合、コンシューマーレプリケーションセットフォームにエラーが表示されます。
[結合] フィールドの有効なマッピングを使用してレプリケーションエントリに対して変換が有効になっていて、マッピングが有効でなくなるようにターゲットテーブルのテーブルスキーマが更新された場合、レプリケーションエントリフォームにエラーが表示されます。
レプリケーションエントリが変換を有効にしようとして、 [結合] フィールドの有効なマッピングが、ソーステーブルからターゲットテーブルまで存在しない場合は、レプリケーションエントリフォームにエラーが表示されます。
システムフィールド値の保存
インスタンスデータレプリケーション (IDR) (IDR) でデータを複製するときに、システムフィールドのプロデューサー値を保持します。
アクティビティエントリのユーザー名を保持するには、コンシューマーレプリケーションセットの受信エントリフォームで [変更者を保持] オプションを選択します。
たとえば、[作業メモ] フィールドは、変更要求レコードのアクティビティタイプです。ユーザーが変更要求を更新すると、作業メモはアクティビティストリームに移動します。
- [変更者を保持] を選択しない場合、コンシューマーレコードのユーザー名の代わりに インスタンスデータレプリケーション (IDR) が表示されます。
- [変更者を保持] を選択すると、変更要求を更新したユーザーがエントリで識別され、名前の先頭に IDR が追加されます。
変更をレプリケートする場合、[変更者を保持] は [更新者]、[更新済み]、[作成済み]、[作成者] システムフィールドの値に影響します。
- [変更者を保持] を有効にして、プロデューサーレプリケーションエントリにシステムフィールドを含めると、プロデューサーシステムフィールドの値がコンシューマーレコードにレプリケートされます。プロデューサーレプリケーションエントリにシステムフィールドを含めない場合は、代わりにコンシューマーインスタンスのデフォルトシステム値が使用されます。
- [変更者を保持] が無効になっている場合、コンシューマーインスタンスのデフォルトシステムフィールド値が使用されます。つまり、プロデューサーレコードのシステムフィールド値と一致しない可能性があります。
データをシードするとき、[変更者を保持] 設定の影響はありません。
- プロデューサーレプリケーションエントリにシステムフィールドを含めると、シードされたレコードにプロデューサーシステムフィールドの値が表示されます。
- プロデューサーレプリケーションエントリにシステムフィールドを含めないと、シードされたレコードのシステムフィールドに null 値が表示されます。
レプリケーション後のワークフローのトリガー
レプリケーション後にプラットフォームのビジネスルールを使用してワークフローをトリガーします。
コンシューマーインスタンスにレプリケートされる挿入と更新により、ターゲットテーブルに構成されたビジネスルールがトリガーされる可能性があります。ビジネスルールは、テーブルに関連付けられたサーバー側のスクリプトです。ビジネスルールを使用して、通知の送信やレプリケートされたデータの検証など、レプリケーションに関連付けられたワークフローをトリガーします。
ビジネスルールは ServiceNow AI Platform の一部です。詳細については、「ビジネスルール」を参照してください。
レプリケーション後にビジネスルールを実行するには、コンシューマーレプリケーションセットの受信エントリフォームで [ビジネスルールを実行] オプションを選択します。IDR は、テーブルにデータをレプリケートした後、指定されたテーブルに関連付けられているビジネスルールを呼び出します。