標準属性スキーマのロード

ここでは、標準属性スキーマを作成するためにプロパティ詳細レコード(PDR)をロードするグラフの実装に関する詳細を説明します。

標準属性スキーマをロードするには、CSVベースの構成グラフを使用します。「CSVベースの構成グラフ」を参照してください。

入力ファイル

PDR入力ファイルでは、必須およびオプションのPDRプロパティの特定の設定で、1つ以上のEndeca標準属性を定義します。入力ファイルは、次の図のようなものです。

入力ファイルの例。このファイルの詳細は、本文で説明しています。

サンプル・ファイルの1行目は、入力ファイルで定義されたプロパティを指定するヘッダー行です。mdex-property_Keyの値を指定する必要があります。その他のmdex-*およびシステム・ナビゲーション・プロパティはオプションです。指定しない属性プロパティでは、デフォルトが使用されるか、または定義されません。標準属性のシステム・デフォルト値の詳細は、「標準属性のデフォルト値」を参照してください。

この例では、次のプロパティが定義されています。
Key,DisplayName,TextSearch,SortOrder

これらのプロパティの名前は任意です。入力ファイルでは、選択する様々な名前を使用できます(たとえば、KeyではなくAttrNameを使用してもかまいません)。各プロパティは、たとえばCSVファイルのカンマ、テキスト・ファイルのパイプ文字などによって区切られます。

注意: 標準属性名にハイフンを使用することはできません。データ・ドメインではハイフンを含む標準属性名が受け入れられますが、Integrator ETLでは受け入れられません。ハイフンを含む名前の属性が入力に含まれる場合は、入力ファイル内の該当する名前を変更します。たとえば、Sales-Typeという名前の属性を入力する場合は、入力ファイル内でSales_Typeなどの名前に変更します。
ヘッダー・プロパティは、次のPDRプロパティにマップします。
入力ヘッダー・プロパティ PDRプロパティへのマップ
Key mdex-property_Key
DisplayName mdex-property_DisplayName
TextSearch mdex-property_IsTextSearchable
SortOrder system-navigation_Sorting

入力ファイルの2行目以降には、構成プロパティの値が含まれます。

標準属性Transformer

構成グラフでは、Reformatコンポーネントを使用して、標準属性スキーマを定義するためにサーバーに送信するXMLを作成します。XMLは、PDRセット(<mdex:record>)から構成され、各PDRは属性プロパティ(たとえば<mdex-property_Key><mdex-property_DisplayName>など)から構成されます。

次のコードは、前記の入力ファイルからXMLを作成します。
integer n = 1;
integer aggrKey = 0;

// Transforms input record into output record.
function integer transform() {
  string searchBool = "";
  string saRecord = "<mdex:record xmlns=\"\">";
  saRecord = saRecord + "<mdex-property_Key>" + $0.Key + "</mdex-property_Key>";
  saRecord = saRecord + "<mdex-property_DisplayName>" + $0.DisplayName + "</mdex-property_DisplayName>";

  // Lower case the boolean in the CSV file
  searchBool = lowerCase($0.TextSearch);
  saRecord = saRecord + "<mdex-property_IsTextSearchable>" + searchBool + "</mdex-property_IsTextSearchable>";

  saRecord = saRecord + "<system-navigation_Sorting>" + $0.SortOrder + "</system-navigation_Sorting>";

  $0.xmlString = saRecord + "</mdex:record>";

  // Batch up the web service requests.
  $0.singleAggregationKey = aggrKey;
  n++;
  if (n % 15 == 0) {
    aggrKey++;
  }

  return ALL;
}

まず、このコードは2つの整数変数を(第1の変数はループ・カウンタとして、第2の変数は集約キー(aggKey)として)定義します。

次に、transform()関数が、<mdex:record>コンテナを作成し、入力ファイルで定義されたプロパティに対応するノード(<mdex-property_Key><mdex-property_DisplayName>)をそのコンテナに移入することにより、PDRを作成します。各ノードの値は、入力ファイルの対応する値から導出されます。

この例では、すべて大文字で指定されたテキスト検索フィールドの値は、XMLに追加される前に小文字に変換されることに注意してください。

最後に、レコードはサーバーへの送信のために15のバッチにグループ化されます。バッチで送信することにより、グラフ内のすべてのコンポーネントを通じて連続的な処理ストリームが保証され、Integrator ETLとEndeca Serverの両方のパフォーマンスが向上します。

Webサービス リクエスト

Endeca ServerにPDR構成をロードするには、構成WebサービスのupdateProperties操作を使用します。この操作により新しい標準属性が作成され、影響を受けるすべての既存の標準属性が新しいデータにより更新されます。次のコードは、PDRをロードするための一般的なupdateProperties操作を示しています。

<config-service:configTransaction 
  xmlns:config-service="http://www.endeca.com/MDEX/config/services/types/3/0">
  <config-service:OuterTransactionId>${OUTER_TRANSACTION_ID}</config-service:OuterTransactionId>
    <config-service:updateProperties 
      xmlns:mdex="http://www.endeca.com/MDEX/XQuery/2009/09">
        $xmlString
    </config-service:updateProperties>
</config-service:configTransaction>

この例には、次の2つの変数が含まれます。

  • OUTER_TRANSACTION_ID

    この変数は、リクエストの外部トランザクションIDを指定します。変数とその値は、Integrator ETLプロジェクトのworkspace.prmファイルに格納されます。

  • $xmlString

    この変数には、グラフ内のReformatコンポーネントによって構築されたPDRが含まれます。

このコードは、構成グラフ内のWeb Services Clientコンポーネントに追加されます。