機械翻訳について

リンク・リクエストのGroovyスクリプトの構成のベスト・プラクティス

このトピックでは、Groovyスクリプトを構成するベスト・プラクティスについて説明します。

  • リンクにGroovyスクリプトを使用するように実装を構成した場合、有効なリンク管理スクリプトがデプロイされるまで、重複解決リクエストは処理されません。
  • リンク・リクエスト処理では非常に大量のレコードを処理できるため、groovyスクリプトはできるだけ高速で効率的です。 絶対に必要な場合を除き、newView()関数およびwebサービス・コールの使用は避けてください。また、必要に応じて、これらのタイプの操作が高速で信頼性が高いことを確認します。

Groovyスクリプト関数の概要

リンク・リクエストを構成するためのGroovyスクリプトのサポートは、重複データ・レコードを操作できる特定の機能セットに基づいています。 これらの関数には、次のカテゴリがあります。
  • リンク・リクエスト内のレコードを検査できる機能
  • リンク・リクエストの結果を定義できる機能

これらの特殊関数のカテゴリは、標準のGroovyスクリプト構文および操作を使用してリンク・リクエストを処理するのに役立ちます。

入力関数

これらの関数は、ロジックによって評価されるデータを提供します。 通常、これらの関数は、適切なリンク・プロセスの出力を決定するために必要な情報をインスタンス化するために、スクリプトの最初に呼び出されます。

getObjectType()

この機能を使用すると、リンク・リクエストが処理しているパーティのタイプを決定できます。 この関数は、どのタイプのスクリプトで呼び出されるかに応じて、PERSONまたはORGANIZATIONを返します。 一般に、個人および組織のスクリプトはアプリケーション・コンポーザの「データ品質ルール」タスク内で個別の関数として明確に区別されるため、プログラムでオブジェクト・タイプを決定する必要はありません。 ただし、ロギングやテストに役立つ場合もあります。

getMaster()

この機能を使用すると、リンク・リクエストのマスター・レコードとして識別されたデータ・レコードにアクセスできます。 関数はパラメータなしで呼び出され、マスター・レコードの詳細を含む単一の行オブジェクトを返します。 次の例は、この関数の一般的な使用方法を示しています。
Copy
 def rowMaster = getMaster();
  def masterName = rowMaster.getAttribute("OrganizationName");
  // etc...

getNonMasters()

この機能を使用すると、リンク・リクエストの非マスター・レコードとして識別されたデータ・レコードのセットにアクセスできます。 この関数は、パラメータなしで呼び出され、各非マスター・レコードに対して1つのリスト・エントリで構成される行オブジェクトのリストを返します。 getNonMastersリストはADF recordset objectではないことに注意してください。 reset()やfirst()などのADF recordset functionsは、リストでは機能しません。 次の例は、この関数の一般的な使用方法を示しています。

Copy
 getNonMasters()
def rowNonMasters = getNonMasters();
   def nonmasterName;
   for (nonmaster in rowNonMasters) {
       nonmasterName = nonmaster.getAttribute("OrganizationName"); }
   // etc...

getRows()

この機能を使用すると、マスター行セットと非マスター行セットの結合であるリンク・リクエストの顧客レコードの全セットにアクセスできます。 この関数は、パラメータなしで呼び出され、各非マスター・レコードに対して1つのリスト・エントリで構成される行オブジェクトのリストを返します。 getNonMasters関数と同様に、getRowsリストがADF recordset objectではないことに注意してください。 reset()やfirst()などのADF recordset functionsは、リストでは機能しません。 次の例は、この関数の一般的な使用方法を示しています。

Copy
def rowDuplicates = getRows()
   def duplicateName;
   for (duplicate in rowDuplicates) {
      duplicateName = duplicate.getAttribute("OrganizationName"); }
    // etc...

getSourceInfo(Row row,String attributeName)

この関数を使用して、特定のマスター行または非マスター行の属性の現在の値を提供したソース・システムに関する情報にアクセスできます。 この関数は、次のパラメータを使用して呼び出されます。

  • 対象となる非マスターまたはマスター行の行オブジェクト
  • ソース確度構成済属性の名前

この関数は、問題の属性のソース情報レコードを返します。 ソース情報レコードの構造は次のとおりです。

属性 定義
RecordId 行オブジェクト・パラメータによって参照される個人または組織レコードのパーティID。 300100184760397
AttributeName 属性パラメータの名前。 OrganizationName
AttributeValue 行の属性の現在の値。 Pinnacle Systems
Source 属性値の登録済ソース・システムのコード。 RNOW
SourceConfidenceLevel 指定されたソース・システムの指定の属性の構成済属性ソース確度値。 90
SourceUpdateDate 個人または組織レコードが現在の値で更新されたときのタイムスタンプ。 1/24/2020 11:48:03 PM
次の例は、この関数の一般的な使用方法を示しています。
Copy
    def rowDuplicates = getRows();
    def rowSource;
    def bestSource;
    def bestValue;
    bestSource = getSourceInfo(rowDuplicates[0],"OrganizationName");
    for (row in rowDuplicates) {
      rowSource = getSourceInfo(row,"OrganizationName");
      if(rowSource.SourceConfidenceLevel > bestSource.SourceConfidenceLevel) {
        bestSource = rowSource;
      }  
    }
    bestValue = bestSource.AttributeValue;

出力関数

出力関数は、リンク・プロセス・スクリプトのロジックに基づいて、最終的な動作を作成します。 一般に、これらの関数は、入力関数で提供されたデータがスクリプト・ロジックで評価された後に、スクリプトの最後に呼び出されます。

selectMaster(Row row)

この機能は、担当者セット・マスターおよびアカウント・セット・マスター・スクリプトで使用され、リンク・リクエストからマスター・レコードとして選択するレコードを指定します。 この関数は、データ行インスタンスをその唯一のパラメータとして取り、関数に渡される行はマスターとして保持されるレコードです。 次の例は、この関数の一般的な使用方法を示しています。
Copy
...
    def masterRow = rowDuplicates[0];
    for (row in rowDuplicates) {
      if row.LastUpdateDate > masterRow.LastUpdateDate {
        masterRow = row;
      }
    }
    selectMaster(masterRow);

データの評価

適切な関数を呼び出すと、スクリプトでデータを評価して正しいリンク結果を決定する必要があります。 この評価プロセスでは、標準のGroovyスクリプトの演算子および関数が使用されます。 Groovyスクリプトの詳細は、『Oracle Applications Cloud Groovyスクリプト・リファレンス』ガイドを参照してください。

まとめ

通常、Groovyスクリプトで次のパターンに従うことができます。
  1. コール入力関数
  2. データの評価
  3. コール出力関数
Copy
/* Input Functions: call getRows() to initialize a list of the party records in the merge request and then
define a variable to designate the Master record and set it to the first record in the list of Rows */
    def rowDuplicates = getRows();  
    def masterRow = rowDuplicates[0]; 
/* Evaluate the Data: iterate through the list of records to determine if the current list item 
was more recently updated than whatever record has been designated the master.  If the current record was more recently updated, 
promote it to become the new Master */
    for (row in rowDuplicates) {
      if (row.LastUpdateDate > masterRow.LastUpdateDate) {
        masterRow = row; 
      }
    }
/* Call Output Functions: use the selectMaster() function to dictate which record from the merge set 
should become the master */
    selectMaster(masterRow);