Oracle® Fusion Middleware Oracle Data Integratorでのナレッジ・モジュールの開発 12c (12.2.1.1) E77238-01 |
|
前 |
次 |
この章では、カスタマイズされたリバースエンジニアリングのプロセスと、高度なメタデータを取得するためにリバースエンジニアリング・ナレッジ・モジュールで使用される戦略について説明します。
この章では、次の項目について説明します。
Oracle Data Integratorの標準リバースエンジニアリングでは、指定されたデータ・サーバーへの接続に使用されるドライバの機能に依存して、データ構造を記述したリッチ・メタデータを返します。
このメタデータが正確でないか、データ・サーバーから特定のメタデータを取得してリッチ化する必要がある場合は、カスタマイズ・リバースエンジニアリングを使用します。
Oracle Data Integratorリポジトリには、SNP_REV表と呼ばれるメタデータ・ステージング表のセットが含まれています。
これらのSNP_REV表の内容は、次のツールを使用して管理されます。
OdiReverseResetTableは、指定されたモデルに対してこれらの表の内容をリセットします。
OdiReverseGetMetadataは、標準のJDBCリバースエンジニアリングと同じプロセスを使用してこれらの表をロードします。
OdiReverseSetMetadataは、これらのステージング表の内容を、データストア、列、制約などを記述するリポジトリ表に適用します。このアクションによってOracle Data Integratorモデルが変更されます。
SNP_REV表の詳細は付録B「SNP_REV表のリファレンス」を、リバースエンジニアリング・ツールの詳細は『Oracle Data Integrator開発者ガイド』を参照してください。
カスタマイズ・リバースエンジニアリング戦略は、すべてのRKMで共通のパターンに従います。
このパターンには次の手順が含まれます。
OdiReverseResetTableツールをコールし、SNP_REV表の前の実行結果をリセットします。
SNP_REV表をロードします。これは次の3つの主要パターンを使用して実行されます。
メタデータ・プロバイダからメタデータを取得し、それらをSNP_REV表にロードします。これはRKM Oracleの例に使用されるパターンです。
サードパーティ・プロバイダからメタデータを取得します。これはRKM File (FROM EXCEL)の例に使用されるパターンです。メタデータは、モデルに記述されたファイルからではなく、これらのファイルの記述を含むMicrosoft Excelスプレッドシートから抽出されます。
OdiReverseGetMetadataを使用してSNP_REV表を事前にロードし、これらの表をターゲットとする問合せを使用してメタデータを修正/リッチ化します。
OdiReverseSetMetaDataツールをコールして、現在のOracle Data Integratorモデルに変更を適用します。
RKMでは、ソース・コマンドとターゲット・コマンドは次のように機能します。
「自動コミット」トランザクションで「未定義」テクノロジにより指定された「ターゲットに対するコマンド」は、リポジトリのSNP_REV表をターゲットとします。
「自動コミット」トランザクションで「未定義」スキーマにより指定された「ソースに対するコマンド」は、リバースエンジニアリングのデータ構造を含むデータサーバーからデータを取得します。メタデータ・プロバイダ(たとえば、Excelスプレッドシート)を使用する場合は、特定のテクノロジと論理スキーマを指定する必要があります。
ツール(OdiReverseSetMetadataなど)のコールは、ODIツール・テクノロジにより、「ターゲットに対するコマンド」で指定されます。
この項では、リバースエンジニアリング戦略の例を示します。
RKM Oracleは、データベース・ディクショナリをメタデータ・プロバイダとして使用するリバースエンジニアリング・プロセスの一般的な例です。
次のコマンドは、OracleのRKMから抽出したもので、ここに例として示します。このナレッジ・モジュールのコードはOracle Data Intagrator Studioで編集して確認できます。
このタスクは、現在のモデルに対してSNP_REV表の内容をリセットします。
ターゲットに対するコマンド(ODIツール)
OdiReverseResetTable -MODEL=<%=odiRef.getModel("ID")%>
このタスクは、Oracleシステム表から表のリストを取得し、その内容をSNP_REV表にロードします。
ソースに対するコマンド
Select t.TABLE_NAME TABLE_NAME, t.TABLE_NAME RES_NAME, replace(t.TABLE_NAME,'<%=odiRef.getModel("REV_ALIAS_LTRIM")%>','') TABLE_ALIAS, substr(tc.COMMENTS,1,250) TABLE_DESC, 'T' TABLE_TYPE, t.NUM_ROWS R_COUNT, SUBSTR(PARTITIONING_TYPE ,1,1) PARTITIONING_TYPE, SUBSTR(SUBPARTITIONING_TYPE,1,1) SUBPARTITIONING_TYPEFrom ALL_TABLES t, ALL_TAB_COMMENTS tc, ALL_PART_TABLES tp
Where ... ...
ターゲットに対するコマンド
insert into SNP_REV_TABLE( I_MOD, TABLE_NAME, RES_NAME, TABLE_ALIAS, TABLE_TYPE, TABLE_DESC, IND_SHOW, R_COUNT, PARTITION_METH, SUB_PARTITION_METH)values( <%=odiRef.getModel("ID")%>, :TABLE_NAME, :RES_NAME, :TABLE_ALIAS, 'T', :TABLE_DESC, '1', :R_COUNT, :PARTITIONING_TYPE, :SUBPARTITIONING_TYPE)