18 フレックスフィールドの使用

この章では、フレックスフィールドの概要およびOracle Data Integratorでのフレックスフィールドの使用方法について説明します。

フレックスフィールドの概要

フレックスフィールドは、ODIオブジェクトのプロパティをカスタマイズできるユーザー定義フィールドです。

フレックスフィールドは、各オブジェクトのウィンドウの「フレックスフィールド」タブで、オブジェクト・タイプごとに設定されます。フレックスフィールドは特定のオブジェクト・タイプのみに存在し、「フレックスフィールド」タブのないオブジェクトではサポートされていません。ODIの置換メソッドを使用してオブジェクト・プロパティにアクセスする場合、フレックスフィールドのコードを指定すると、ODIは、そのコードをオブジェクト・タイプのフレックスフィールド値で置き換えます。

フレックスフィールドの作成

このようなフレックスフィールドを作成するには、次のようにします。

  • 「オブジェクト」アコーディオンの下の「セキュリティ」モジュールにナビゲートします。

  • オブジェクトを選択し、右クリックして「開く」を選択して(オブジェクトをダブルクリックしてもかまいません)、オブジェクトのパラメータを編集します

  • 「フレックスフィールド」タブを選択して、右上の「ツールバー」ペインにある「追加」アイコン「追加」アイコンをクリックして、新しいフレックスフィールドを追加します

    注意:

    フレックスフィールドはテクノロジ固有にすることも、すべてのテクノロジで表示することもできます。例 - 次で強調表示されているフレックスフィールドは、フレックスフィールドを追加したオブジェクトがデータストアであり、このフレックスフィールドをOracleテクノロジに制限しているため、Oracleデータストアのみで表示されます。

    図18-1 フレックスフィールドの作成

    図18-1の説明が続きます
    「図18-1 フレックスフィールドの作成」の説明
  • 新しく作成されたフレックスフィールドについて、「名前」「コード」「テクノロジ」「タイプ」および「デフォルト」の値など、必要な詳細を入力して、「OK」をクリックします。

新しいフレックスフィールドが作成され、フレックスフィールドを作成した後は「デザイナ」モジュールで値を移入できます。

フレックスフィールドの値の設定

作成したフレックスフィールドに値を設定するには、次のようにします。
  1. 「デザイナ」モジュールにナビゲートして、新しく作成したフレックスフィールドに関連付けられたオブジェクトのパラメータを編集します。次のフィールドがあります。
    1. 名前 - 作成したフレックスフィールドの名前
    2. - この列には、初期状態では、「セキュリティ」モジュールで設定したデフォルト値(Helloなど)が表示されます。
    3. デフォルト値を変更する場合、編集すると、「デフォルト」チェック・ボックスの選択が自動的に解除されます。選択すると、構成されたデフォルト値(Helloなど)に値が再度設定されます。

    図18-2 フレックスフィールドの値の設定

    図18-2の説明が続きます
    「図18-2 フレックスフィールドの値の設定」の説明

    注意:

    編集するオブジェクトのテクノロジに固有のフレックスフィールドのみが、「フレックスフィールド」タブに表示されます(他のフレックスフィールドは表示されません)。例 - 編集するオブジェクトはOracleテクノロジを使用するため、図18-1に表示されているSAPとHiveのテクノロジに固有のフレックスフィールドは、図18-2には表示されません。

フレックスフィールドの値の取得

フレックスフィールドに割り当てられた値は、2つの異なる方法で取得できます。これらは次のとおりです。
  1. ステップ1 - フレックスフィールドの値を取得するオブジェクトがすでにわかっている場合は、そのオブジェクトのネイティブAPIを使用できます。たとえば、データストアの場合はステップ1で、フレックスフィールドの値を取得するオブジェクトがすでにわかっている場合は、そのオブジェクトのネイティブAPIを使用できます。たとえば、データストアの場合は、odiRef.getTable(<FlexField_code>)で適切な値が取得されます。そのため、ここで<%=odiRef.geTable('MYFLEX')%>を指定すると、表AGG_SALESHelloが返されます
  2. ステップ2 - 置換API getFlexFieldValue()を使用してフレックスフィールドの値を取得することもできます。この置換APIには、3つの属性を指定します。これらは次のとおりです。
    1. 1つ目の属性は、オブジェクト・タイプの内部識別子です。これは、「デザイナ」モジュールのオブジェクトの「定義」タブから取得できます。
      フレックスフィールドの値を取得するデータストアを編集して、このオブジェクトの「バージョン」タブに移動します。内部IDを確認できます(次のデータストアAGG_SALESの例では25)

      図18-3 フレックスフィールドの値を取得するための1つ目の属性

      図18-3の説明が続きます
      「図18-3 フレックスフィールドの値を取得するための1つ目の属性」の説明

      注意:

      このIDをプログラムで取得する必要がある場合は、オブジェクト固有の置換API - getTable('ID')を使用すると、選択したデータストアに固有のこのIDが返されます。
    2. 2つ目の属性は、オブジェクト・タイプの内部識別子です。これは、「セキュリティ」モジュールのオブジェクトの「定義」タブから取得できます。
      オブジェクトのパラメータを編集するための「デザイナ」モジュールにナビゲートして、オブジェクトの「バージョン」タブをクリックします。選択したオブジェクトの内部IDを取得できます(たとえば、次のデータストアの内部IDは2400です)

      図18-4 フレックスフィールドの値を取得するための2つ目の属性

      図18-4の説明が続きます
      「図18-4 フレックスフィールドの値を取得するための2つ目の属性」の説明
    3. 3つ目の属性はフレックスフィールドのコードで、前述の例ではMYFLEXです。たとえば、APIコール - <%=odiRef.getFlexFieldValue("25","2400","MYFLEX")%>では、値Helloが返されます。