28 Oracle SOA Suite相互参照
この章の内容は次のとおりです。
28.1 概要
Oracle Data Integratorの機能(複数のソース表から1つのターゲット表へのロードおよび相互参照の処理を行うマッピングなど)は、Oracle SOA Suite相互参照を使用した場合に最良の動作が得られるように設計されています。
28.1.1 概念
相互参照は、サービス指向アーキテクチャに基づいて構築されたOracle Fusion Middlewareの機能で、Oracle BPEL Process ManagerおよびOracle Mediator(以前はEnterprise Service Bus (ESB))を介して使用できます。通常、疎結合の統合で利用されます。統合の様々な関連アプリケーションのランタイム相関を管理するために使用されます。
28.1.1.1 一般原理
Oracle SOA Suiteの相互参照機能では、異なるアプリケーションで作成された対応するエンティティの識別子を関連付けることができます。たとえば、相互参照を使用して、あるアプリケーションで作成された顧客エンティティ(ネイティブIDはCust_100)を、別のアプリケーションにおける同一顧客のエンティティ(ネイティブIDはCT_001)に関連付けることができます。
相互参照(XREF)機能を使用すると、エンティティのネイティブ・キーのアプリケーション間でのマッピングが簡単になります。たとえば、異なるERPシステムの同じ注文を相互に関連付けます。
相互参照の実装では、データベース・スキーマを使用して、システムとデータストアの間でレコードを参照するための相互参照情報を格納します。
相互参照の詳細は、『Oracle SOA Suite開発者ガイド』の相互参照の使用に関する項を参照してください。
データのターゲット表へのロード後にソース表データを更新または削除するオプション機能も統合に必要です。これによって、ステータス・フィールドなどの一部の属性の更新またはターゲット・システムへ正常に処理された後のソース・レコードのパージがバルク統合でサポートされることが必要になります。
28.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は、汎用表において、次のようにマップされます。
表28-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
説明:
-
APP1
やAPP2
などの列は、異なるアプリケーションのPK値を格納し、同じソース・レコードにリンクするために使用されます。 -
ROW_ID
(行番号)は、XREFデータ表内のレコードを一意に識別するために使用されます。 -
COM
には統合レイヤーに共通の値が保持され、相互参照を確立するために関連アプリケーション間で渡されます。
SIEBELとEBSの両方に存在するORDERは、カスタムXREF_ORDER表に次のようにマップされます。
表28-2 カスタム表: XREF_ORDERSの例(一部)
ROW_ID SIEBEL EBS COMMON 100012345
SBL_101
EBS_002
COM_100
詳細は、「相互参照KMによるマッピングの設計」および「ナレッジ・モジュール・オプションの参照情報」を参照してください。
-
28.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列に挿入される値。前述の例(表28-1を参照)では、このオプションは
ORDER
です。 -
XREF_COLUMN_NAME: XREF_DATA表のXREF_COLUMN_NAME列に挿入される値。この値は、現在のマッピングのターゲットであるアプリケーションに対応します。前述の例(表28-1を参照)では、ターゲット設定されているシステムに応じて、このオプションの値は
SIEBEL
またはEBS
のいずれかとなります。
カスタム表構造を使用する場合は、次のオプションを使用する必要があります。
28.1.2 ナレッジ・モジュール
Oracle Data Integratorには、SOA相互参照(XREF)を処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを表28-3に示します。
これらの新しいナレッジ・モジュールでは、SOA相互参照をサポートするためのパラメータが導入されています。これらのパラメータの詳細は、「相互参照表の構造」および「相互参照KMによるマッピングの設計」を参照してください。
表28-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)と組み合せて使用する必要があります。 |
28.1.3 SOA XREF KMプロセスの概要
Oracle Data Integratorとの統合の実行中に相互参照表をロードするには、SOA XREFナレッジ・モジュールを使用する必要があります。これらのナレッジ・モジュールでは、システム間での情報の抽出またはロード中に相互参照表がロードされます。
ノート:
ソース・システムとターゲット・システム間の相互参照を保持するには、LKMとIKMによってサポートされている相互参照を組み合せて使用する必要があります。
全プロセスは次の3つの主なフェーズに分けられます。
28.1.3.1 ロード・フェーズ(LKM)
ロード・フェーズでは、ソース表からの列を使用してソース主キーが作成されます。このソース主キーは、VARCHAR値を返すユーザー定義のSQL式を使用して導出されます。この式はSRC_PK_EXPRESSION KMオプションで指定されます。
たとえば、ソースの注文明細表(マッピングではOLINEという別名)に次の式を使用できます。
TO_CHAR(OLINE.ORDER_ID) || '-' || TO_CHAR(OLINE.LINE_ID)
この値を最終的に使用して相互参照表に対する移入が行われます。
28.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が再利用されます(再導出されません)。これによって、一意のソース行と異なるターゲット行との間の相互参照を作成できます。
28.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: この表の別名
28.2 インストールおよび構成
SOA XREFナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。
28.2.1 システム要件および動作要件
インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。
サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network (OTN)からアクセスできます。
http://www.oracle.com/technetwork/middleware/data-integrator/documentation/index.html。
28.2.2 テクノロジ固有の要件
Oracle Data IntegratorでOracle SOA Suite相互参照を使用するためのテクノロジ要件はありません。Oracle DatabaseおよびMicrosoft SQl Serverの要件がOracle SOA Suite相互参照にも適用されます。詳細は、次を参照してください。
28.3 SOA相互参照KMを使用したXREFの利用
この項は次のトピックで構成されています:
28.3.2 プロジェクトの設定
使用するプロジェクトに次のKMがまだインポートされていない場合は、これらをインポートします。
-
IKM SQL Control Append (SOA XREF)
-
Microsoft SQL Serverを使用する場合は、LKM SQL to SQL (SOA XREF)またはLKM MSSQL to SQL (SOA XREF)
28.4 ナレッジ・モジュール・オプションの参照情報
この項では、次のナレッジ・モジュールに関するKMオプションをリストします。
表28-4 LKM SQL to SQL (SOA XREF)
オプション | 値 | 必須 | 説明 |
---|---|---|---|
SRC_UPDATE_DELETE_ACTION |
NONE|UPDATE|DELETE |
はい |
データのターゲットへの統合後ソース・レコードに対して行うアクションを示します。詳細は、「処理済レコードの更新/削除(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)オプションの詳細は、表28-4を参照してください。
表28-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表でリテラルとして使用する主キー列名。詳細は、「相互参照表の構造の処理」を参照してください。 |
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データ表の列名を入力します。詳細は、「相互参照表の構造の処理」を参照してください。 |