機械翻訳について

Groovyスクリプト・ベースの属性値の設定ルールの構成

この例では、レコードの分類コード割当てに基づいてGroovyスクリプトを使用して標準属性ソース確度ベースの生存処理をオーバーライドするために、属性値設定ルールを作成する方法について学習します。

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

  • マージにOFN Category One accountとして分類されたレコードが含まれる場合、属性ソースの確度スコアに関係なく、そのOFN Category One record's valueをキー・フィールドのセットに使用します。

  • マージの複数の行がOFN Category Oneとして分類されている場合は、最も最近更新された行の属性値を使用します。

実行ステップ

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

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

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

      • 機能領域: 顧客ハブ

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

    2. 「重複解決オプション」タブの「マージ動作」セクションで、次のオプションを選択します。

      • 「属性選択タイプ」フィールドのタイ・ブレーカとして、「最新レコードをタイ・ブレーカとしてソース確度を使用」または「最も古いレコードをタイ・ブレーカとしてソース確度を使用」のいずれかを選択します。

      • 「Groovyを属性選択に追加」フィールドで「はい」を選択します。

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

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

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

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

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

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

  4. 属性値ルールの結果に満足したら、コードを配置します。 「生存ルールおよび契約ルールの構成の配置」のトピックを参照してください。

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

getRows()input functionを呼び出してマージ要求のレコードにアクセスすることによって、スクリプトが開始されます。 次に、スクリプトが各行レコードをループし、そのコード割当てコレクションにアクセスします。 その後、スクリプトはコード割当てをループして、指定したコード割当て値が存在するかどうかをテストします。 指定したコード割当てを持つ行が識別されると、その行は、後続の処理のために優先されるレコードの配列にコピーされます。

マージ要求のすべての行がそのコード割当て値に対してテストされると、優先されるレコードのリストは、レコードの最終更新日に基づいてソートされます。 最後に、スクリプトによって、指定したコード割当て値が含まれる最も最近更新された行が識別されます。 この行が識別されると、スクリプトはselectAttribute() output functionを呼び出して、定義された属性セットの属性値ソースとしてその優先行を指定します。

サンプル・コード

try {
  def rowDuplicates = getRows();
  def rowPriorities = [];
  def exceptionAttributes = ['BusinessScope', 'CeoTitle'];
  def CAs;
  def CAi;
  for(row in rowDuplicates){
    CAs = row.getAttribute("CodeAssignment");
    if(CAs){
      for(CA in CAs){
          CA.reset();
          while(CA.hasNext()) {
            CAi = CA.next();
            if(CAi.ClassCategory == "OFN" && CAi.ClassCode == "OFN1") {
              rowPriorities.add(row);}
          }
       }
    }
  }

  if(rowPriorities.size()){
    def rowPriority = rowPriorities[0];
    for (row in rowPriorities){
      if (row.LastUpdateDate > rowPriority.LastUpdateDate){
        rowPriority = row;}
    }

    for (a in exceptionAttributes){
      selectAttribute(a, rowPriority);
    }
  }
}

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