Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド 12c (12.2.1.1) E77236-01 |
|
前 |
次 |
この章では、Oracle Data IntegratorでのOracle SOA Suite相互参照の使用方法について説明します。
この章には次の項が含まれます:
Oracle Data Integratorの機能(複数のソース表から1つのターゲット表へのロードおよび相互参照の処理を行うマッピングなど)は、Oracle SOA Suite相互参照を使用した場合に最良の動作が得られるように設計されています。
相互参照は、サービス指向アーキテクチャに基づいて構築されたOracle Fusion Middlewareの機能で、Oracle BPEL Process ManagerおよびOracle Mediator(以前はEnterprise Service Bus (ESB))を介して使用できます。通常、疎結合の統合で利用されます。統合の様々な関連アプリケーションのランタイム相関を管理するために使用されます。
Oracle SOA Suiteの相互参照機能では、異なるアプリケーションで作成された対応するエンティティの識別子を関連付けることができます。たとえば、相互参照を使用して、あるアプリケーションで作成された顧客エンティティ(ネイティブIDはCust_100)を、別のアプリケーションにおける同一顧客のエンティティ(ネイティブIDはCT_001)に関連付けることができます。
相互参照(XREF)機能を使用すると、エンティティのネイティブ・キーのアプリケーション間でのマッピングが簡単になります。たとえば、異なるERPシステムの同じ注文を相互に関連付けます。
相互参照の実装では、データベース・スキーマを使用して、システムとデータストアの間でレコードを参照するための相互参照情報を格納します。
相互参照の詳細は、『Oracle SOA Suite開発者ガイド』の相互参照の使用に関する項を参照してください。
データのターゲット表へのロード後にソース表データを更新または削除するオプション機能も統合に必要です。これによって、ステータス・フィールドなどの一部の属性の更新またはターゲット・システムへ正常に処理された後のソース・レコードのパージがバルク統合でサポートされることが必要になります。
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は、汎用表において、次のようにマップされます。
カスタム(新規)表構造 - この表は1つのエンティティに固有であり、カスタム構造を持ちます。次に例を示します。
ROW_ID VARCHAR2(48) NOT NULL PK, APP1 VARCHAR2(100), APP2 VARCHAR2(100), ... COMMON VARCHAR2(100), LAST_MODIFIED TIMESTAMP NOT NULL
説明:
APP1
やAPP2
などの列は、異なるアプリケーションのPK値を格納し、同じソース・レコードにリンクするために使用されます。
ROW_ID
(行番号)は、XREFデータ表内のレコードを一意に識別するために使用されます。
COM
には統合レイヤーに共通の値が保持され、相互参照を確立するために関連アプリケーション間で渡されます。
SIEBELとEBSの両方に存在するORDERは、カスタムXREF_ORDER表に次のようにマップされます。
詳細は、25.3.3項「相互参照KMによるマッピングの設計」および25.4項「ナレッジ・モジュール・オプションの参照情報」を参照してください。
IKM SQL Control Append (SOA XREF)には、これらの2つの構造を処理するための、次のパラメータがあります。
XREF_DATA_STRUCTURE: XREF_DATA汎用表を使用する場合はこのオプションをlegacy
に設定し、カスタム表構造を使用する場合はnew
に設定します。
汎用表構造を使用する場合は、次のオプションを設定する必要があります。
XREF_TABLE_NAME: XREF_DATA表のXREF_TABLE_NAME列に挿入される値。前述の例(表25-1を参照)では、このオプションはORDER
です。
XREF_COLUMN_NAME: XREF_DATA表のXREF_COLUMN_NAME列に挿入される値。この値は、現在のマッピングのターゲットであるアプリケーションに対応します。前述の例(表25-1を参照)では、ターゲット設定されているシステムに応じて、このオプションの値はSIEBEL
またはEBS
のいずれかとなります。
カスタム表構造を使用する場合は、次のオプションを使用する必要があります。
Oracle Data Integratorには、SOA相互参照(XREF)を処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを表25-3に示します。
これらの新しいナレッジ・モジュールでは、SOA相互参照をサポートするためのパラメータが導入されています。これらのパラメータの詳細は、25.1.1.2項「相互参照表の構造」および25.3.3項「相互参照KMによるマッピングの設計」を参照してください。
表25-3 SOA XREF KM
ナレッジ・モジュール | 説明 |
---|---|
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)と組み合せて使用する必要があります。 |
Oracle Data Integratorとの統合の実行中に相互参照表をロードするには、SOA XREFナレッジ・モジュールを使用する必要があります。これらのナレッジ・モジュールでは、システム間での情報の抽出またはロード中に相互参照表がロードされます。
注意: ソース・システムとターゲット・システム間の相互参照を保持するには、LKMとIKMによってサポートされている相互参照を組み合せて使用するする必要があります。 |
全プロセスは次の3つの主なフェーズに分けられます。
ロード・フェーズでは、ソース表からの列を使用してソース主キーが作成されます。このソース主キーは、VARCHAR値を返すユーザー定義のSQL式を使用して導出されます。この式はSRC_PK_EXPRESSION KMオプションで指定されます。
たとえば、ソースの注文明細表(マッピングではOLINEという別名)に次の式を使用できます。
TO_CHAR(OLINE.ORDER_ID) || '-' || TO_CHAR(OLINE.LINE_ID)
この値を最終的に使用して相互参照表に対する移入が行われます。
統合フェーズでは、ターゲット表に対して共通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が再利用されます(再導出されません)。これによって、一意のソース行と異なるターゲット行との間の相互参照を作成できます。
オプションのこのフェーズ(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: この表の別名
SOA XREFナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。
インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。
サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network (OTN)からアクセスできます。
http://www.oracle.com/technology/products/oracle-data-integrator/index.html
Oracle Data IntegratorでOracle SOA Suite相互参照を使用するためのテクノロジ要件はありません。Oracle DatabaseおよびMicrosoft SQl Serverの要件がOracle SOA Suite相互参照にも適用されます。詳細は、次の情報を参照してください:
Oracle Data IntegratorでOracle SOA Suite相互参照を使用するための接続性要件はありません。Oracle DatabaseおよびMicrosoft SQl Serverの要件がOracle SOA Suite相互参照にも適用されます。詳細は、次の情報を参照してください:
この項の内容は次のとおりです。
SOA XREF KMを使用したプロジェクトに固有のOracle Data Integratorでのトポロジの作成手順は、次のとおりです。
ソースおよびターゲットに対応するデータ・サーバー、物理スキーマおよび論理スキーマを作成します。
次の項の説明に従って、OracleまたはMicrosoft SQL Serverテクノロジのデータ・サーバーおよび物理スキーマを作成します。
このデータ・サーバーとこの物理スキーマは、相互参照表を含むOracleインスタンスおよびスキーマまたはMicrosoft SQL Serverデータベースを指し示す必要があります。
相互参照表を含む物理スキーマを指し示す、XREFと呼ばれる論理スキーマを作成します。
詳細は、『Oracle Data Integratorの管理』の論理スキーマの作成に関する項を参照してください。
使用するプロジェクトに次のKMがまだインポートされていない場合は、これらをインポートします。
IKM SQL Control Append (SOA XREF)
Microsoft SQL Serverを使用する場合は、LKM SQL to SQL (SOA XREF)またはLKM MSSQL to SQL (SOA XREF)
複数のソース表からターゲット表へのロードとソースの1つとターゲットとの間の相互参照の処理の両方を行うマッピングを作成するには、次のようにします。
相互参照を持つソースとターゲット・データストアとのマッピングを作成します。
通常どおり結合、フィルタおよびマッピングを作成します。
共通IDのマッピング: ターゲット列で相互参照表の生成された共通IDをマップする場合は、この列のUD1フラグをチェックし、ダミーのマッピングを入力します。たとえば、'X'
などの定数値です。
マッピングの物理ダイアグラムで、相互参照するソース表を含む実行ユニットに対するアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが開きます。
ソース・データストアがMicrosoft SQL Serverにある場合は、「ロード・ナレッジ・モジュール」タブで、LKM SQL to SQL (SOA XREF)またはLKM MSSQL to SQL (SOA XREF)を選択します。
次のようにKMのオプションを指定します。
SRC_PK_EXPRESSIONで、XREF表に格納するソース主キー値を表す式を指定します。
ソース表に1つの属性のみがキーとして定義されている場合は、属性名(たとえばSEQ_NO
)を入力します。
ソース・キーに複数の属性が含まれる場合は、キー値の導出に使用する式を指定します。たとえば、表にSEQ_NO
とDOC_DATE
の2つのキー属性があり、これらの属性を連結した値をソース値としてXREF表に格納する場合、SEQ_NO || DOC_DATE
と入力します。このオプションは必須です。
必要な場合は、25.1.3.3項「処理済レコードの更新/削除(LKM)」の説明に従って、ソース表に影響を与えるSRC_UPDATE_DELETE_ACTIONを設定します。
マッピングの物理ダイアグラムで、ステージング領域に対するアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが開きます。
「統合ナレッジ・モジュール」タブで、IKM SQL Control Append (SOA XREF)を選択します。
次のようにKMのオプションを指定します。
XREF_DATA_STRUCTURE: 新しいXREF_DATA表構造を使用する場合は、New
を入力します。それ以外の場合は、Legacy
を入力してレガシーXREF_DATA表を使用します。デフォルトはNew
です。25.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フラグを必ず設定します。 |
この項では、次のナレッジ・モジュールに関するKMオプションをリストします。
表25-4 LKM SQL to SQL (SOA XREF)
オプション | 値 | 必須 | 説明 |
---|---|---|---|
SRC_UPDATE_DELETE_ACTION |
NONE|UPDATE|DELETE |
はい |
データのターゲットへの統合後ソース・レコードに対して行うアクションを示します。詳細は、25.1.3.3項「処理済レコードの更新/削除(LKM)」を参照してください。 |
SRC_PK_EXPRESSION |
連結式 |
はい |
1つの大きなvarchar列に合うようPKからの値を連結する式。例: ソースの注文明細表(マッピングではOLINEという別名)に次の式を使用できます。
|
SRC_PK_LOGICAL_SCHEMA |
ソース表の論理スキーマの名前 |
いいえ |
ソース表の論理スキーマの名前を示します。ソース表は、処理後レコードを削除または更新する表です。論理スキーマは、実行時にコンテキストに従って実際の物理スキーマを解決するために使用されます。例: |
SRC_PK_TABLE_NAME |
ソース表名。デフォルトはMY_TABLE。 |
いいえ |
処理後にレコードを削除または更新するソース表名を示します。例: |
SRC_PK_TABLE_ALIAS |
ソース表の別名。デフォルトは MY_ALIAS |
いいえ |
このマッピング内でのソース表の別名を示します。ソース表は、処理後レコードを削除または更新する表です。例: |
SRC_UPD_COL |
別名が付けられたソース列名 |
いいえ |
更新フラグ・インジケータを保持し、別名が付けられたソース列名。SRC_UPDATE_DELETE_ACTIONが式リテラルSRC_UPD_EXPRESSIONで |
SRC_UPD_EXPRESSION |
リテラルまたは式 |
いいえ |
SRC_UPD_COLの更新に使用されるリテラルまたは式。この値は、SRC_UPDATE_DELETE_ACTIONが |
DELETE_TEMPORARY_OBJECTS |
Yes|No |
はい |
一時オブジェクト(ファイルおよびスクリプト)を統合後保持する場合、このオプションを |
LKM MSSQL to SQL (SOA XREF)
LKM MSSQL to SQL (SOA XREF)オプションの詳細は、表25-4を参照してください。
表25-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 |
はい |
一時オブジェクト(表、ファイルおよびスクリプト)を統合後保持する場合、このオプションを |
XREF_TABLE_NAME |
XREF表名 |
レガシーXREF表構造を使用する場合は、はい。 |
XREF表で使用する表名。例: |
XREF_COLUMN_NAME |
列名 |
レガシーXREF表構造を使用する場合は、はい。 |
XREF表でリテラルとして使用する主キー列名。詳細は、25.1.1.3項「相互参照表の構造の処理」を参照してください。 |
XREF_SYS_GUID_EXPRESSION |
SYS_GUID() |
はい |
XREF表(列名"VALUE")の共通IDの移入に使用される式を入力します。有効な例: |
XREF_ROWNUMBER_EXPRESSION |
SYS_GUID() |
はい |
XREF表の行番号の移入に使用される式を入力します。Oracleの例: |
XREF_DATA_STRUCTURE |
New|Legacy |
はい |
新しいXREF_DATA表構造を使用する場合は、 |
XREF_DATA_TABLE |
XREF表名 |
いいえ。カスタムXREF表構造で使用できます。 |
相互参照情報を格納する表の名称を入力します。デフォルトは |
XREF_DATA_TABLE_COLUMN |
XREFデータ表の列名 |
カスタムXREF表構造を使用する場合は、はい。 |
新しいXREFデータ構造のみ: ソース・キー値を格納するXREFデータ表の列名を入力します。詳細は、25.1.1.3項「相互参照表の構造の処理」を参照してください。 |