Groovyスクリプト・ベースの属性値の設定ルールの構成
この例では、レコードの分類コード割当てに基づいてGroovyスクリプトを使用して標準属性ソース確度ベースの生存処理をオーバーライドするために、属性値設定ルールを作成する方法について学習します。
シナリオの論理要件は次のとおりです。
-
マージに
OFN Category One account
として分類されたレコードが含まれる場合、属性ソースの確度スコアに関係なく、そのOFN Category One record's value
をキー・フィールドのセットに使用します。 -
マージの複数の行が
OFN Category One
として分類されている場合は、最も最近更新された行の属性値を使用します。
実行ステップ
-
Groovyスクリプトを有効にしてマスター・レコードを選択します。
-
「設定および保守」作業領域で、次の項目に移動します。
-
オファリング: 顧客データ管理
-
機能領域: 顧客ハブ
-
タスク: 顧客データ管理オプションの管理
-
-
「重複解決オプション」タブの「マージ動作」セクションで、次のオプションを選択します。
-
「属性選択タイプ」フィールドのタイ・ブレーカとして、「最新レコードをタイ・ブレーカとしてソース確度を使用」または「最も古いレコードをタイ・ブレーカとしてソース確度を使用」のいずれかを選択します。
-
「Groovyを属性選択に追加」フィールドで「はい」を選択します。
-
-
アプリケーション・コンポーザ・サンドボックスを作成します。 ステップについては、「アプリケーション・コンポーザのサンドボックスの作成」のトピックを参照してください。
-
-
AccountSetAttribute
テンプレートにサンプル・スクリプトを移入します。-
「共通設定」にナビゲートし、「データ品質ルール」をクリックします。
-
「データ品質ルールの編集」ページのサンプル・コード・セクションで指定されたコードをコピーしてペーストします。
-
「保存してクローズ」をクリックします。
-
-
コードをテストします。 コードをテストするには、「生存ルールおよび契約ルールの構成のテスト」の項を参照してください。
-
属性値ルールの結果に満足したら、コードを配置します。 「生存ルールおよび契約ルールの構成の配置」のトピックを参照してください。
サンプル・スクリプトの機能
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);
}