機械翻訳について

Groovyスクリプト・ベースの契約ルールの構成

この例では、重複として識別された特定のアカウントをマージすることが必ずしも適切ではない、複雑なビジネス・エコシステムが使用されています。

マージの実行を禁止する条件が発生した場合、データ・スチュワードは、どのレコードがどの理由のためにマージをブロックしたか、正確に説明する情報メッセージを確認する必要があります。 マージを回避できる条件は次のとおりです。

マージの実行を禁止する条件が発生した場合、データ・スチュワードは、どのレコードがどの理由のためにマージをブロックしたか、正確に説明する情報メッセージを確認する必要があります。 マージを回避できる条件は次のとおりです。

  • 非マスター・レコードが、法的保留システムと統合されます

  • 非マスター・レコードの認証スコア値が100です

実行ステップ

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

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

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

      • 機能領域: 顧客ハブ

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

    2. 「重複解決オプション」タブの「マージ動作」セクションで、「契約ルール・タイプ」フィールドの「デフォルト契約ルールおよびGroovyスクリプト」オプションを選択します。

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

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

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

    2. AccountMergeAgreementをクリックします。

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

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

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

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

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

スクリプトでは、まずgetNonMasters()入力関数をコールして、マージ要求内のマスター以外のレコードにアクセスします。 「マスターの設定」Groovyスクリプトの結果は、契約ルール・スクリプトおよび属性選択スクリプトのgetMaster()およびgetNonMasters()のレスポンスに表示されます。 次に、各行のレコードがスクリプトでループ処理されて、マージが拒否される2つの異なる条件がテストされます。 最初のテストでは、レコードのソース・システム参照割当を評価して、レコードがリーガル・ホールド・システムと統合されているかどうかが判断されます。 2番目のテストでは、非マスター・レコードの認証レベル値が確認されます。 特定のレコードがいずれかのテストに一致した場合は、vetoMessages配列に部分拒否メッセージが追加されます。

マージ要求で非マスター行がすべてテストされた後、vetoMessages配列にデータがあるかどうかがスクリプトで確認されます。 存在する場合は、vetoMessages配列のデータから最終拒否メッセージが作成され、マージは拒否されて、作成されたメッセージが重複解決UIのデータ・スチュワードに表示されます。

サンプル・コード

try {
  def rowNonMasters = getNonMasters();
  def sMsg = "";
  def rejectMsg = "";
  def vetoMessages = [];
  for (row in rowNonMasters){
    def OSRs = row.getAttribute("OriginalSystemReference");
    OSRs.reset();
    sMsg = "";
    while(OSRs.hasNext()) {
      def OS = OSRs.next();
      if (OS.getAttribute("OrigSystem") == "LEGAL_HOLD" && sMsg == "") {
        sMsg = "A legal hold has been placed on Account " + row.getAttribute("PartyNumber");
        vetoMessages.add(sMsg);}
      }
      sMsg = "";
      if (row.getAttribute("CertificationLevel") == "100") {
        sMsg = "A Certification Level of 100 was found on Account " + row.getAttribute("PartyNumber");
        vetoMessages.add(sMsg);}
  }

  if (vetoMessages.size()) {
    rejectMsg = "Merge rejection reasons: ";
    vetoMessages.eachWithIndex { item, index ->
       rejectMsg += ((index +1) + ") " + item + " ");
    }
    rejectRequest(rejectMsg);
  }
}

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