ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
11g リリース1(11.1.1)
B62261-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

30 Oracle SOA Suite相互参照

この章では、Oracle Data IntegratorでのOracle SOA Suite相互参照の使用方法について説明します。

この章には次の項が含まれます:

30.1 概要

Oracle Data Integratorの機能(複数のソース表から1つのターゲット表へのロードおよび相互参照の処理を行う統合インタフェースなど)は、Oracle SOA Suite相互参照を使用した場合に最良の動作が得られるように設計されています。

30.1.1 概念

相互参照は、サービス指向アーキテクチャに基づいて構築されたOracle Fusion Middlewareの機能で、Oracle BPEL Process ManagerおよびOracle Mediator(以前はEnterprise Service Bus (ESB))を介して使用できます。通常、疎結合の統合で利用されます。統合の様々な関連アプリケーションのランタイム相関を管理するために使用されます。

30.1.1.1 一般原理

Oracle SOA Suiteの相互参照機能では、異なるアプリケーションで作成された対応するエンティティの識別子を関連付けることができます。たとえば、相互参照を使用して、あるアプリケーションで作成された顧客エンティティ(ネイティブIDはCust_100)を、別のアプリケーションにおける同一顧客のエンティティ(ネイティブIDはCT_001)に関連付けることができます。

相互参照(XREF)機能を使用すると、エンティティのネイティブ・キーのアプリケーション間でのマッピングが簡単になります。たとえば、異なるERPシステムの同じ注文を相互に関連付けます。

相互参照の実装では、データベース・スキーマを使用して、システムとデータストアの間でレコードを参照するための相互参照情報を格納します。

相互参照の詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の相互参照の使用に関する項を参照してください。

データのターゲット表へのロード後にソース表データを更新または削除するオプション機能も統合に必要です。これによって、ステータス・フィールドなどの一部の属性の更新またはターゲット・システムへ正常に処理された後のソース・レコードのパージがバルク統合でサポートされることが必要になります。

30.1.1.2 相互参照表の構造

XREFデータは複数の相互参照表に次の2つの形式で格納されます。

  • 汎用(レガシー)表: 表名はXREF_DATAであり、表構造にすべてのエンティティの相互参照が格納されます。表形式は次のとおりです。

    XREF_TABLE_NAME  NOT NULL VARCHAR2(2000)
    XREF_COLUMN_NAME NOT NULL VARCHAR2(2000)
    ROW_NUMBER NOT NULL VARCHAR2(48)
    VALUE  NOT NULL VARCHAR2(2000)
    IS_DELETED  NOT NULL VARCHAR2(1)
    LAST_MODIFIED NOT NULL TIMESTAMP(6)
    

    この表には、複数のエンティティの相互参照が格納されます。この表では、

    • XREF_TABLE_NAMEは、相互参照表の名称です。

    • XREF_COLUMN_NAMEは、移入される列の名称です。この列名(アプリケーション名など)は、相互参照表の一意の識別子として使用されます。

    • ROW_NUMBERには、アプリケーションに関係なく、特定のエンティティ・インスタンスの一意の識別子(行番号)が格納されます。

    • VALUEは、アプリケーションの特定のエンティティのレコード識別子の値です。

    すべてのアプリケーションに共通の生成済識別子が格納される、COMMONと呼ばれる特定のXREF_COLUMN_NAMEエントリが存在します。

    たとえば、SIEBELとEBSの両方に存在するORDERは、汎用表において、次のようにマップされます。

    表30-1 XREF_DATAの例(一部)

    XREF_TABLE_NAME XREF_COLUMN_NAME ROW_NUMBER VALUE

    ORDER

    SIEBEL

    100012345

    SBL_101

    ORDER

    EBS

    100012345

    EBS_002

    ORDER

    COMMON

    100012345

    COM_100


  • カスタム(新規)表構造: この表は1つのエンティティに固有であり、カスタム構造を持ちます。次に例を示します。

    ROW_ID  VARCHAR2(48) NOT NULL PK, 
    APP1   VARCHAR2(100), 
    APP2   VARCHAR2(100), 
    ...
    COMMON   VARCHAR2(100), 
    LAST_MODIFIED  TIMESTAMP NOT NULL
    

    説明:

    • APP1APP2などの列は、異なるアプリケーションのPK値を格納し、同じソース・レコードにリンクするために使用されます。

    • ROW_ID(行番号)は、XREFデータ表内のレコードを一意に識別するために使用されます。

    • COMには統合レイヤーに共通の値が保持され、相互参照を確立するために関連アプリケーション間で渡されます。

    SIEBELとEBSの両方に存在するORDERは、カスタムXREF_ORDER表に次のようにマップされます。

    表30-2 カスタム表: XREF_ORDERSの例(一部)

    ROW_ID SIEBEL EBS COMMON

    100012345

    SBL_101

    EBS_002

    COM_100


    詳細は、30.3.3項「相互参照KMによるインタフェースの設計」および30.4項「ナレッジ・モジュール・オプションの参照情報」を参照してください。

30.1.1.3 相互参照表の構造の処理

IKM SQL Control Append (SOA XREF)には、これらの2つの構造を処理するための、次のパラメータがあります。

  • XREF_DATA_STRUCTURE: XREF_DATA汎用表を使用する場合はこのオプションをlegacyに設定し、カスタム表構造を使用する場合はnewに設定します。

汎用表構造を使用する場合は、次のオプションを設定する必要があります。

  • XREF_TABLE_NAME: XREF_DATA表のXREF_TABLE_NAME列に挿入される値。前述の例(表30-1を参照)では、このオプションはORDERです。

  • XREF_COLUMN_NAME: XREF_DATA表のXREF_COLUMN_NAME列に挿入される値。この値は、現在のインタフェースのターゲットであるアプリケーションに対応します。前述の例(表30-1を参照)では、ターゲット設定されているシステムに応じて、このオプションの値はSIEBELまたはEBSのいずれかとなります。

カスタム表構造を使用する場合は、次のオプションを使用する必要があります。

  • XREF_DATA_TABLE: 相互参照表の名称。デフォルトはXREF_DATAです。前述の例(表30-2を参照)では、この表名はXREF_ORDERです。

  • XREF_DATA_TABLE_COLUMN: 現在のインタフェースのターゲットであるアプリケーションの相互参照を格納する列の名称。前述の例(表30-2を参照)では、ターゲット設定されているシステムに応じて、このオプションの値はSIEBELまたはEBSのいずれかとなります。

30.1.2 ナレッジ・モジュール

Oracle Data Integratorには、SOA相互参照(XREF)を処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを表30-3に示します。

これらの新しいナレッジ・モジュールでは、SOA相互参照をサポートするためのパラメータが導入されています。これらのパラメータの詳細は、30.1.1.2項「相互参照表の構造」および30.3.3項「相互参照KMによるインタフェースの設計」を参照してください。

表30-3 SOA XREFナレッジ・モジュール

ナレッジ・モジュール 説明

LKM SQL to SQL (SOA XREF)

このKMでは、LKM SQL to SQL (ESB XREF)が置き換えられます。

このKMでは、標準ISOソースから任意のISO-92データベースへのデータのロード中の相互参照がサポートされています。

オプションSRC_UPDATE_DELETE_ACTIONに応じて、このLKMでは、ソース・レコードのDELETEまたはUPDATEを実行できます。

LKM SQL to SQL (SOA XREF)は、同じインタフェースでIKM SQL Control Append (SOA XREF)と組み合せて使用する必要があります。

LKM MSSQL to SQL (SOA XREF)

このKMでは、LKM MSSQL to SQL (ESB XREF)が置き換えられます。

このKMは、Microsoft SQL Server用に最適化されたバージョンのLKM SQL to SQL (SOA XREF)です。

IKM SQL Control Append (SOA XREF)

このKMでは、IKM SQL Control Append (ESB XREF)が置き換えられます。

このKMでは、任意のISO-92準拠データベース・ターゲット表における、切捨て/挿入(追加)モードでのデータ統合中の相互参照がサポートされています。また、このKMではデータ制御も提供されます。無効なデータはエラー表に分離され、リサイクルできます。ターゲットにデータをロードするとき、このKMでは、別のデータベース上のPK/GUID XREF表への移入も行います。

このIKM SQL Control Append (SOA XREF)は、LKM SQL to SQL (SOA XREF)またはLKM MSSQL to SQL (SOA XREF)と組み合せて使用する必要があります。


30.1.3 SOA XREF KMプロセスの概要

Oracle Data Integratorとの統合の実行中に相互参照表をロードするには、SOA XREFナレッジ・モジュールを使用する必要があります。これらのナレッジ・モジュールでは、システム間での情報の抽出またはロード中に相互参照表がロードされます。


注意:

ソース・システムとターゲット・システム間の相互参照を保持するには、LKMとIKMによってサポートされている相互参照を組み合せて使用するする必要があります。


全プロセスは次の3つの主なフェーズに分けられます。

  1. ロード・フェーズ(LKM)

  2. 統合および相互参照フェーズ(IKM)

  3. 処理済レコードの更新/削除(LKM)

30.1.3.1 ロード・フェーズ(LKM)

ロード・フェーズでは、ソース表からの列を使用してソース主キーが作成されます。このソース主キーは、VARCHAR値を返すユーザー定義のSQL式を使用して導出されます。この式はSRC_PK_EXPRESSION KMオプションで指定されます。

たとえば、ソースの注文明細表(インタフェースではOLINEという別名)に次の式を使用できます。

TO_CHAR(OLINE.ORDER_ID) || '-' || TO_CHAR(OLINE.LINE_ID)

この値を最終的に使用して相互参照表に対する移入が行われます。

30.1.3.2 統合および相互参照フェーズ(IKM)

統合フェーズでは、ターゲット表に対して共通IDが作成されます。共通IDの値は、XREF_SYS_GUID KMオプションの式から導出されます。この式の例は次のとおりです。

  • データベース順序(<SEQUENCE_NAME>. NEXTVAL)

  • グローバル一意IDを戻す関数(Oracleの場合はSYS_GUID()、SQL Serverの場合はNewID() )

この共通IDは、UD1フラグでマークされたターゲット表のターゲット列にも自動的にプッシュされます。

共通IDソース主キーも相互参照表にプッシュされます。さらに、IKMによって、ソース主キーおよび共通IDの間の相互参照を作成する一意の行番号値が相互参照表にプッシュされます。この行番号値は、XREF_ROWNUMBER_EXPRESSION KMオプションから導出されます。このオプションでは通常、共通IDと同様の式を使用して一意の識別子が生成されます。

相互参照KMの複数インタフェースで同一ソース行が複数ターゲット表のロードに使用される場合、同じ共通IDが再利用されます(再導出されません)。これによって、一意のソース行と異なるターゲット行との間の相互参照を作成できます。

30.1.3.3 処理済レコードの更新/削除(LKM)

オプションのこのフェーズ(SRC_UPDATE_DELETE_ACTION KMオプションでパラメータ化)では、正常に処理されたソース・レコードを基にソース・レコードの削除または更新を行います。

  • SRC_UPDATE_DELETE_ACTIONがDELETE値をとる場合、インタフェースで処理されたソース・レコードは削除されます。

  • SRC_UPDATE_DELETE_ACTIONがUPDATE値をとる場合、ソース表のソース列は、すべての処理済のソース・レコードの式で更新されます。この動作は次のKMオプションによってパラメータ化されます。

    • SRC_UPD_COL: 更新するソース列の名称

    • SRC_UPD_COL_EXPRESSION: 列で更新する値の生成に使用される式

ソース表とは異なる表から、削除および更新操作を実行できます。このことを行うには、LKMで次のKMオプションを設定する必要があります。

  • SRC_PK_LOGICAL_SCHEMA: 影響を与えるソース表が含まれているOracle Data Integrator論理スキーマ

  • SRC_PK_TABLE_NAME: 影響を与えるソース表の名称

  • SRC_PK_TABLE_ALIAS: この表の別名

30.2 インストールおよび構成

SOA XREFナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。

30.2.1 システム要件および動作要件

インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。

サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network (OTN)からアクセスできます。

http://www.oracle.com/technology/products/oracle-data-integrator/index.html

30.2.2 テクノロジ固有の要件

Oracle Data IntegratorでOracle SOA Suite相互参照を使用するためのテクノロジ要件はありません。Oracle DatabaseおよびMicrosoft SQl Serverの要件がOracle SOA Suite相互参照にも適用されます。詳細は、次の情報を参照してください:

30.2.3 接続性要件

Oracle Data IntegratorでOracle SOA Suite相互参照を使用するための接続性要件はありません。Oracle DatabaseおよびMicrosoft SQl Serverの要件がOracle SOA Suite相互参照にも適用されます。詳細は、次の情報を参照してください:

30.3 SOA相互参照KMを使用したXREFの利用

この項の内容は次のとおりです。

30.3.1 トポロジの定義

SOA XREF KMを使用したプロジェクトに固有のOracle Data Integratorでのトポロジの作成手順は、次のとおりです。

  1. ソースおよびターゲットに対応するデータ・サーバー、物理スキーマおよび論理スキーマを作成します。

  2. 次の項の説明に従って、OracleまたはMicrosoft SQL Serverテクノロジのデータ・サーバーおよび物理スキーマを作成します。

    このデータ・サーバーとこの物理スキーマは、相互参照表を含むOracleインスタンスおよびスキーマまたはMicrosoft SQL Serverデータベースを指し示す必要があります。

  3. 相互参照表を含む物理スキーマを指し示す、XREFと呼ばれる論理スキーマを作成します。

    詳細は、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の論理スキーマの作成に関する項を参照してください。

30.3.2 プロジェクトの設定

使用するプロジェクトに次のKMがまだインポートされていない場合は、これらをインポートします。

  • IKM SQL Control Append (SOA XREF)

  • Microsoft SQL Serverを使用する場合は、LKM SQL to SQL (SOA XREF)またはLKM MSSQL to SQL (SOA XREF)

30.3.3 相互参照KMを使用したインタフェースの設計

複数のソース表からターゲット表へのロードとソースの1つとターゲットとの間の相互参照の処理の両方を行う統合インタフェースを作成するには、次のようにします。

  1. 相互参照を持つソースとターゲット・データストアとのインタフェースを作成します。

  2. 通常どおり結合、フィルタおよびマッピングを作成します。

    共通IDのマッピング: ターゲット列で相互参照表の生成された共通IDをマップする場合は、この列のUD1フラグをチェックし、ダミーのマッピングを入力します。たとえば、'X'などの定数値です。

  3. インタフェースの「フロー」タブで、相互参照のソース表を含むソース・セットを選択し、LKM SQL to SQL (SOA XREF)(ソース・データストアがMicrosoft SQL Serverにある場合はLKM MSSQL to SQL (SOA XREF))を選択します。

  4. 次のようにKMのオプションを指定します。

    • SRC_PK_EXPRESSIONで、XREF表に格納するソース主キー値を表す式を指定します。

      キーとして定義された1列のみがソース表に含まれる場合、列名(SEQ_NOなど)を入力します。

      ソース・キーに複数の列が含まれる場合、キー値の導出に使用する式を指定します。たとえば、表にSEQ_NODOC_DATEの2つのキー列があり、これらの列を連結した値をソース値としてXREF表に格納する場合、SEQ_NO || DOC_DATEと入力します。このオプションは必須です。

    • 必要な場合は、30.1.3.3項「処理済レコードの更新/削除(LKM)」の説明に従って、ソース表に影響を与えるSRC_UPDATE_DELETE_ACTIONを設定します。

  5. インタフェースの「フロー」タブでステージング領域を選択し、IKM SQL Control Append (SOA XREF)を選択します。

  6. 次のようにKMのオプションを指定します。

    • XREF_DATA_STRUCTURE: 新しいXREF_DATA表構造を使用する場合は、Newを入力します。それ以外の場合は、Legacyを入力してレガシーXREF_DATA表を使用します。デフォルトはNewです。30.1.1.3項「相互参照表の構造の処理」の説明に従って、使用している表の構造に応じてオプションを構成します。

    • XREF_SYS_GUID_EXPRESSION: 共通IDの導出に使用される式を入力します。この式の例は次のとおりです。

      • データベース順序(<SEQUENCE_NAME>.NEXTVAL)

      • グローバル一意IDを戻す関数(Oracleの場合はSYS_GUID()、SQL Serverの場合はNewID() )

    • XREF_ROWNUMBER_EXPRESSION: これは、行番号列にプッシュされる値です。順序に変更する必要がない場合、デフォルト値GUIDを使用します。

    • FLOW_CONTROL: CKM Oracleを使用できるようにする場合、YESに設定します。


    注意:

    ターゲット表に共通IDのプレースホルダがなく、たとえば、ターゲット列の1つにソース識別子を移入する場合、どのソース識別子をどの列に移入するかを示すには、ODIの標準マッピング・ルールを使用する必要があります。

    共通IDをロードするターゲット列がターゲット表の一意キーの場合、マップされる必要があります。その列にダミーのマッピングを設定する必要があります。実行時、このダミー・マッピングは、統合ナレッジ・モジュールで生成された共通識別子で上書きされます。このターゲット列にUD1フラグを必ず設定します。


30.4 ナレッジ・モジュール・オプションの参照情報

この項では、次のナレッジ・モジュールに関するKMオプションをリストします。

表30-4 LKM SQL to SQL (SOA XREF)

オプション 必須 説明

SRC_UPDATE_DELETE_ACTION

NONE|UPDATE|DELETE

はい

データのターゲットへの統合後ソース・レコードに対して行うアクションを示します。詳細は、30.1.3.3項「処理済レコードの更新/削除(LKM)」を参照してください。

SRC_PK_EXPRESSION

連結式

はい

1つの大きなvarchar列に合うようPKからの値を連結する式。例: ソースの注文明細表(インタフェースではOLINEという別名)に次の式を使用できます。

TO_CHAR(OLINE.ORDER_ID) || '-' || TO_CHAR(OLINE.LINE_ID)

SRC_PK_LOGICAL_SCHEMA

ソース表の論理スキーマの名前

いいえ

ソース表の論理スキーマの名前を示します。ソース表は、処理後レコードを削除または更新する表です。論理スキーマは、実行時にコンテキストに従って実際の物理スキーマを解決するために使用されます。例: ORDER_BOOKING。このオプションは、SRC_UPDATE_DELETE_ACTIONがUPDATEまたはDELETEに設定されている場合にのみ必要です。

SRC_PK_TABLE_NAME

ソース表名。デフォルトはMY_TABLE。

いいえ

処理後にレコードを削除または更新するソース表名を示します。例: ORDERS。このオプションは、SRC_UPDATE_DELETE_ACTIONがUPDATEまたはDELETEに設定されている場合にのみ必要です。

SRC_PK_TABLE_ALIAS

ソース表の別名。デフォルトは

MY_ALIAS

いいえ

このインタフェース内でのソース表の別名を示します。ソース表は、処理後レコードを削除または更新する表です。例: ORD。このオプションは、SRC_UPDATE_DELETE_ACTIONがUPDATEまたはDELETEに設定されている場合にのみ必要です。

SRC_UPD_COL

別名が付けられたソース列名

いいえ

更新フラグ・インジケータを保持し、別名が付けられたソース列名。SRC_UPDATE_DELETE_ACTIONが式リテラルSRC_UPD_EXPRESSIONでUPDATEに設定されている場合、この列の値は、統合後更新されます。列に使用される別名は、ソース表に対して定義されているものと一致する必要があります。例: ORD.LOADED_FLAG。このオプションは、SRC_UPDATE_DELETE_ACTIONがUPDATEに設定されている場合にのみ必要です。

SRC_UPD_EXPRESSION

リテラルまたは式

いいえ

SRC_UPD_COLの更新に使用されるリテラルまたは式。この値は、SRC_UPDATE_DELETE_ACTIONがUPDATEに設定されている場合、統合後のこの列の更新に使用されます。例: RECORDS PROCESSED。このオプションは、SRC_UPDATE_DELETE_ACTIONがUPDATEに設定されている場合にのみ必要です。

DELETE_TEMPORARY_OBJECTS

Yes|No

はい

一時オブジェクト(ファイルおよびスクリプト)を統合後保持する場合、このオプションをNOに設定します。デバッグに便利です。


LKM MSSQL to SQL (SOA XREF)

LKM MSSQL to SQL (SOA XREF)オプションの詳細は、表30-4を参照してください。

表30-5 IKM SQL Control Append (SOA XREF)

オプション 必須 説明

INSERT

Yes|No

はい

インタフェースのターゲット・データストアへのデータの挿入を自動的に試行します。

COMMIT

Yes|No

はい

ターゲット・データストアに挿入されたすべてのデータをコミットします。

FLOW_CONTROL

Yes|No

はい

フロー制御を行う場合、このオプションを選択します。

RECYCLE_ERRORS

Yes|No

はい

以前の制御から拒否されたデータをリサイクルする場合、このオプションを選択します。

STATIC_CONTROL

Yes|No

はい

ターゲット・データの挿入または更新後にターゲット表を制御する場合、このオプションを選択します。

TRUNCATE

Yes|No

はい

ターゲット・データストアを切り捨てる場合、このオプションを選択します。

DELETE_ALL

Yes|No

はい

ターゲット・データストアのすべての行を削除する場合、このオプションを選択します。

CREATE_TARG_TABLE

Yes|No

はい

ターゲット表を作成する場合、このオプションを選択します。

DELETE_TEMPORARY_OBJECTS

Yes|No

はい

一時オブジェクト(表、ファイルおよびスクリプト)を統合後保持する場合、このオプションをNOに設定します。デバッグに便利です。

XREF_TABLE_NAME

XREF表名

レガシーXREF表構造を使用する場合は、はい。

XREF表で使用する表名。例: ORDERS。詳細は、30.1.1.3項「相互参照表の構造の処理」を参照してください。

XREF_COLUMN_NAME

列名

レガシーXREF表構造を使用する場合は、はい。

XREF表でリテラルとして使用する主キー列名。詳細は、30.1.1.3項「相互参照表の構造の処理」を参照してください。

XREF_SYS_GUID_EXPRESSION

SYS_GUID()

はい

XREF表(列名"VALUE")の共通IDの移入に使用される式を入力します。有効な例: SYS_GUID()MY_SEQUENCE.NEXTVALなど。

XREF_ROWNUMBER_EXPRESSION

SYS_GUID()

はい

XREF表の行番号の移入に使用される式を入力します。Oracleの例: SYS_GUID()MY_SEQUENCE.NEXTVALなど。

XREF_DATA_STRUCTURE

New|Legacy

はい

新しいXREF_DATA表構造を使用する場合は、Newを入力します。それ以外の場合は、Legacyを入力してレガシーXREF_DATA表を使用します。デフォルトはNewです。詳細は、30.1.1.3項「相互参照表の構造の処理」を参照してください。

XREF_DATA_TABLE

XREF表名

いいえ。カスタムXREF表構造で使用できます。

相互参照情報を格納する表の名称を入力します。デフォルトはXREF_DATAです。詳細は、30.1.1.3項「相互参照表の構造の処理」を参照してください。

XREF_DATA_TABLE_COLUMN

XREFデータ表の列名

カスタムXREF表構造を使用する場合は、はい。

新しいXREFデータ構造のみ: ソース・キー値を格納するXREFデータ表の列名を入力します。詳細は、30.1.1.3項「相互参照表の構造の処理」を参照してください。