機械翻訳について

Groovyスクリプト・ベースのマスター・レコードの設定ルールの構成

この例では、解決リクエストがマージ・リクエストであるかどうかに応じて異なるロジックを使用して、解決リクエストでマスター・レコードを選択するマスター・レコード・ルールの設定を作成する方法を学習します。

シナリオの論理要件は次のとおりです。

  • RNOWソース・システムと統合されたレコードは、マスター・レコードにする優先度が最も高くなります。
  • 優先されるソース・システムに複数のレコードが存在する場合は、最も最近更新されたレコードをタイ・ブレーカとして使用します。
  • RNOW統合レコードがマージに存在しない場合は、アップストリーム・プロセスによりマスターとして指定されているレコードを使用します。

実行ステップ

  1. Groovyスクリプトを有効にしてマスター・レコードを選択します。

    1. 「設定および保守」作業領域で、次の項目に移動します。

      • オファリング: 顧客データ管理

      • 機能領域: 顧客ハブ

      • タスク: 顧客データ管理オプションの管理

    2. 「マージ動作」セクションで、「マスター・レコード選択」フィールドの「Groovyスクリプトを使用してマスター・レコードを選択」オプションを選択します。

  2. アプリケーション・コンポーザ・サンドボックスを作成します。 ステップについては、「アプリケーション・コンポーザのサンドボックスの作成」のトピックを参照してください。

  3. AccountSetMasterテンプレートにサンプル・スクリプトを移入します。

    • 「共通設定」にナビゲートし、「データ品質ルール」をクリックします。

    • 「AccountSetMaster」をクリックします。

    • 「データ品質ルールの編集」ページのサンプル・コード・セクションで指定されたコードをコピーしてペーストします。

    • 「保存してクローズ」をクリックします。

  4. コードをテストします。 コードをテストするには、「生存ルールおよび契約ルールの構成のテスト」のトピックを参照してください。

  5. 「マスター・レコードの設定」ルールの結果に満足したら、コードを配置します。 「生存ルールおよび契約ルールの構成の配置」のトピックを参照してください。

サンプル・スクリプトの機能

getRows()入力関数を呼び出して解決要求のレコードにアクセスすることによって、スクリプトが開始されます。 追加の変数を初期化した後、スクリプトによってgetAttribute("ResolutionType")がコールされ、どのタイプの解決要求が処理されているかが判別されます。

解決タイプがMERGEの場合、スクリプトが解決要求のレコードをループして、各レコードに存在するソース・システム参照割当を検査します。 RNOWソース・システム参照があるレコードが見つかると、その行は指定されたソース・システム参照割当を持つレコードのリストに追加されます。

解決要求のすべての行がソース・システム参照値に対してテストされると、スクリプトによって、優先されるソース・システム参照のレコードが検出されたかどうかがテストされます。 最上位優先度リストに見つかったレコードは、最終更新日でテストされます。 その結果、最も高い優先度のソース・システム参照を持つ最新の更新レコードがマスター・レコードに指定されます。

最後に、スクリプトによってselectMaster()出力関数が呼び出され、マスター・レコードが指定されます。 スクリプトで前に最上位優先度または第2優先度のレコードが識別された場合、そのレコードはselectMaster()関数に提供されます。 優先度レコードが識別されなかった場合、アップストリーム・プロセスによって指定されたデフォルトのマスター・レコードは、解決リクエストのマスター・レコードとして保持されます。

サンプル・コード

try {
  def requestRows = getRows();
  def rowMaster = false;
  def osrMap = ['RNOW': []];
  def rowDefaultMaster = getMaster();
  def iHighestAccountScore = 0;
  def resolutionType = getAttribute("ResolutionType");

  if (resolutionType == "MERGE") {
    for (row in requestRows) {
      def osrRows = row.getAttribute("OriginalSystemReference");
      osrRows.reset();
      while (osrRows.hasNext()) {
        def osrRow = osrRows.next()
        if (osrRow.OrigSystem == "RNOW") {
          osrMap['RNOW'].add(row);
        }
      }
    }

    if (rowMaster == false && osrMap['RNOW'].size() > 0) {
      rowMaster = osrMap['RNOW'][0];
      for (row in osrMap['RNOW']) {
        if (row.LastUpdateDate > rowMaster.LastUpdateDate) {
          rowMaster = row;
        }
      }
    }
  }

  if (rowMaster) {
    selectMaster(rowMaster);
  } else {
    selectMaster(rowDefaultMaster);
  }

} catch (Exception e) {
  def sMsg = "Exception in Account Set Master: " + e.getMessage();
  println(sMsg);
}