Oracle® Fusion Middleware Oracle Data Integratorでのナレッジ・モジュールの開発 12c (12.2.1) E69913-01 |
|
![]() 前 |
![]() 次 |
この章では、例を使用してOracle Data Integratorの代替APIの概要を説明します。
この章では、次の項目について説明します。
KMは、Oracle Data Integratorの代替APIを使用してテンプレートとして記述されます。APIメソッドは、文字列値を返すjavaメソッドです。これらはすべて「odiRef」という名前の単一のオブジェクト・インスタンスに属します。同じメソッドでもそれを起動するKMのタイプに応じて異なる値を返すことがあります。この理由により、それらはKMのタイプによって分類されます。
このAPIの動作方法を理解できるように、次の例では、KMでのCREATE TABLE文の記述方法、および関連するデータストアに応じて生成されるコードについて説明します。
次のコードがKMに入力されます。
CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>(<%=odiRef.getColList("", "\t[COL_NAME] [DEST_CRE_DT]", ",\n", "", "")%>)
PRODUCT
表に対して生成されたコードは次のとおりです。
CREATE TABLE db_staging.I$_PRODUCT( P RODUCT_ID numeric(10), PRODUCT_NAME varchar(250), FAMILY_ID numeric(4), SKU varchar(13), LAST_DATE timestamp)
CUSTOMER
表に対して生成されたコードは次のとおりです。
CREATE TABLE db_staging.I$_CUSTOMER( CUST_ID numeric(10), CUST_NAME varchar(250), ADDRESS varchar(250), CITY varchar(50), ZIP_CODE varchar(12), COUNTRY_ID varchar(3))
適切なメタデータを使用してKM を実行した結果、商品および顧客の表に対して異なるコードが生成されたことがわかります。
次の各トピックでは、主要な代替API の一部について説明し、KM 内での使用方法を説明します。読みやすくするために、例ではタグ<% と%>、およびodiRefオブジェクト参照は省略しています。
ナレッジ・モジュールとプロシージャからアクセス可能なメソッドは、Javaで実装されているOracle Data Integratorのメソッドのダイレクト・コールです。これらのメソッドは通常、Oracle Data Integratorリポジトリに格納されているメタデータに対応するテキストの生成に使用されます。
置換メソッドは、ナレッジ・モジュールまたはプロシージャのタスクの任意のテキストで使用されます。
これらは次の構文を使用して任意のテキスト内で使用できます。
<%=java_expression%>
この構文では:
<%= %>
タグは、java_expression
で返されるテキストの出力に使用されます。この構文は、Java Server Pages (JSP)で使用される構文とほぼ同じです。
Java expression
は、文字列を返す任意のJava式です。
次の構文は、3つのパラメータを使用してodiRef
javaオブジェクトのgetTable
メソッドのコールを実行します。このメソッドのコールは文字列を返します。それがCREATE TABLE
テキストの後に書き込まれます。
CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>
Oracle Data Integratorの代替APIは、JavaクラスOdiReference
に実装されており、そのインスタンスOdiRef
はいつでも使用できます。たとえば、getFrom()
メソッドをコールするには、odiRef.getFrom()
と記述する必要があります。
注意: 下位互換性のために、odiRef APIはsnpRef APIとして参照することもできます。snpRefおよびodiRefオブジェクトのインスタンスは同義語で、前の構文snpRef.<method_name> はまだサポートされていますが、非推奨です。 |
次の構文は、チェック・プロシージャ(CKM)の実行をコールするために、IKMで使用されます。
この構文は、処理のこの段階で、すべてのCKMプロシージャ・コマンドを自動的に含めます。
<% @ INCLUDE (CKM_FLOW | CKM_STATIC) [DELETE_ERROR] %>
この構文のオプションは次のとおりです。
CKM_FLOW
: フロー制御をトリガーします。マッピングの物理ダイアグラムにある、ターゲット・データストアのプロパティの「チェック・ナレッジ・モジュール」タブでのCKMの選択内容に従ってトリガーされます。
CKM_STATIC
: ターゲット・データストアの静的管理をトリガーします。データストアに対して静的な制約として定義および選択された制約がチェックされます。
DELETE_ERROR
: このオプションは、検出されたエラーを検証済の表(CKM_FLOWの場合はフロー表、CKM_STATICの場合はターゲット表)から削除するようにCKMに指示します。より正確には、すべてのCKMコマンドがRemove Errors
というタグ付きで生成されます。
例: 次のコールはエラー検出によるフロー制御をトリガーします。
<% @ INCLUDE CKM_FLOW DELETE_ERROR %>
フレックスフィールドは、Oracle Data Integratorのオブジェクトのプロパティをカスタマイズ可能にするユーザー定義フィールドです。フレックスフィールドは「オブジェクト」ウィンドウの「フレックスフィールド」タブで定義され、「オブジェクト」ウィンドウの「フレックスフィールド」タブを使用して各オブジェクト・インスタンスに対して設定できます。
Oracle Data Integratorの置換メソッドを使用してオブジェクト・プロパティにアクセスする場合、フレックスフィールドのコードを指定すると、Oracle Data Integratorは、そのコードをオブジェクト・インスタンスのフレックスフィールド値で置き換えます。
例:
<%=odiRef.getTable("L", "MY_DATASTORE_FIELD", "W")%>
の場合、現在の表のフレックスフィールドMY_DATASTORE_FIELD
の値が返されます。
<%=odiRef.getSrcTableList("", "[MY_DATASTORE_FIELD] ", ", ", "")%>
の場合、マッピングの各ソース表のフレックスフィールド値が返されます。
フレックスフィールド値は、getFlexFieldValue()メソッドを使用して取得することもできます。
注意: フレックスフィールドは特定のオブジェクト・タイプにのみ存在します。「フレックスフィールド」タブのないオブジェクトではサポートされていません。 |
次のコード生成タグを使用できます。
<%... %>: このタグは、シナリオ生成時またはセッション作成時に評価されます。テキスト内のメタデータ情報を置換するために使用されます。PRODUCT
表の例を次に示します。
CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "A")%>
これは次のように変換されます。
CREATE TABLE db_staging.I$_PRODUCT
<?...?>: このタグはセッション実行時に評価され、実行コンテキストに基づいて物理トポロジ情報が置換されます。このタグの評価後に、セッション・タスク・ログが作成されます。ターゲット・データ・サーバー・ユーザー'TargetName'
の例を次に示します。
"<?=snpRef.getInfo("DEST_USER_NAME")?>"
これは次のように変換されます。
'TargetName'
<@...@>: このタグはセッション・ログの作成後に評価されるため、セッション・タスク・ログに含めない置換に対して使用する必要があります。セキュリティ上の理由でセッション・タスク・ログに記録されないようにするクリア・テキスト・パスワードを置換する場合に使用できます。たとえば、次のようなメカニズムがあります。
<@=snpRef.getInfo("SRC_PASS") @>
アクションはDDL操作(表の作成、参照の削除など)に対応しています。この操作を使用して、Data Integratorモデルで実行する変更をデータベースに実装するための手順を生成します(DDLの生成操作)。各アクションには、DDL操作を実行するために必要なコマンドに対応する、いくつかのアクション行が含まれます(たとえば、表を削除するには、先にその制約をすべて削除する必要があります)。
アクション行には、アクション・グループのテクノロジで有効な文が含まれます。プロシージャやナレッジ・モジュール・コマンドと異なり、これらの文は1つの接続を使用します(SELECT ... INSERT文は使用できません)。ナレッジ・モジュールのスタイルでは、アクションは置換メソッドを使用してDDLコードを汎用にします。
たとえば、アクション行に、表のチェック制約を削除するための次のコードが含まれることがあります。
ALTER TABLE <%=odiRef.getTable("L", "TARG_NAME", "A") %> DROP CONSTRAINT <%=odiRef.getCK("COND_NAME") %>
アクション・コール・メソッドは、アクション行でのみ使用できます。他の置換メソッドと異なり、テキストの生成には使用されず、コンテキストに適切なアクションを生成するために使用されます。
たとえば、Drop Table DDL操作を実行するためには、まず表を参照している外部キーをすべて削除する必要があります。
表の削除アクションでは、最初のアクション行はdropReferringFKs()アクション・コール・メソッドを使用して、現在の表の各外部キーについて外部キーの削除アクションを自動的に生成します。このコールは、次のコードでアクション行を作成することによって実行されます。
<% odiRef.dropReferringFKs(); %>
アクション・コール・メソッドをコールするための構文は次のとおりです。
<% odiRef.method_name(); %>
注意: アクション・コール・メソッドは、アクション行1行に1つのみにする必要があります。=記号を前に付けずにコールしてください。また、最後にセミコロンが必要です。 |
アクションでは、次のアクション・コール・メソッドを使用できます。
addAKs(): 現在の表のすべての代替キーに対して、代替キーの追加アクションをコールします。
dropAKs(): 現在の表のすべての代替キーに対して、代替キーの削除アクションをコールします。
addPK(): 現在の表の主キーに対して、主キーの追加アクションをコールします。
dropPK(): 現在の表の主キーに対して、主キーの削除アクションをコールします。
createTable(): 現在の表に対して表の作成アクションをコールします。
dropTable(): 現在の表に対して表の削除アクションをコールします。
addFKs(): 現在の表のすべての外部キーに対して、外部キーの追加アクションをコールします。
dropFKs(): 現在の表のすべての外部キーに対して、外部キーの削除アクションをコールします。
enableFKs(): 現在の表のすべての外部キーに対して、外部キーの有効化アクションをコールします。
disableFKs(): 現在の表のすべての外部キーに対して、外部キーの無効化アクションをコールします。
addReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの追加アクションをコールします。
dropReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの削除アクションをコールします。
enableReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの有効化アクションをコールします。
disableReferringFKs(): 現在の表を参照しているすべての外部キーに対して、外部キーの無効化アクションをコールします。
addChecks(): 現在の表のすべてのチェック制約に対して、チェック制約の追加アクションをコールします。
dropChecks(): 現在の表のすべてのチェック制約に対して、チェック制約の削除アクションをコールします。
addIndexes(): 現在の表のすべての索引に対して、索引の追加アクションをコールします。
dropIndexes(): 現在の表のすべての索引に対して、索引の削除アクションをコールします。
modifyTableComment(): 現在の表に対して表のコメントの変更をコールします。
AddColumnsComment(): 現在の表のすべての列に対して列のコメントの変更をコールします。
デザイナで作業する場合、実行コンテキストによって変化するデータベース名やスキーマ名などの物理情報は指定しないようにする必要があります。正しい物理情報は、実行時にOracle Data Integratorによって提供されます。
代替APIには、実行時のコンテキストを考慮してオブジェクトまたはデータストアの完全修飾名を算出するメソッドが備わっています。これらのメソッドを次の表に示します。
必要な完全修飾名 | メソッド | 次で使用可能 |
---|---|---|
OBJ_NAMEという名前のすべてのオブジェクト | getObjectName("L", "OBJ_NAME", "D") | すべて |
現在のマッピングのターゲット・データストア | getTable("L", "TARG_NAME", "A") | LKM、CKM、IKM、JKM |
現在のマッピングの統合(I$)表 | getTable("L", "INT_NAME", "A") | LKM、IKM |
現在のロード・フェーズのロード表(C$) | getTable("L", "COLL_NAME", "A") | LKM |
チェックされたデータストアのエラー表(E$) | getTable("L", "ERR_NAME", "A") | LKM、CKM、IKM |
チェックされたデータストア | getTable("L", "CT_NAME", "A") | CKM |
外部キーによって参照されるデータストア | getTable("L", "FK_PK_TABLE_NAME", "A") | CKM |
多くの場合、項目のリストからコードを生成するには、whileループまたはforループが必要になります。Oracle Data Integratorは、リストに基づいてコードを生成できる強力なメソッドを提供することでこの問題に対処しています。これらのメソッドはイテレータとして機能します。代替マスクまたはパターンおよびセパレータを提供すると、メソッドによって、すべての解決済パターンがセパレータで区切られた単一の文字列が戻されます。
すべてのメソッドは1つの文字列を戻し、少なくとも次の4つのパラメータを受け入れます。
開始: 作成される文字列を開始するための文字列。
パターン: リストの各項目の値にバインドされる属性を使用した代替マスク。
セパレータ: 置き換えられた各パターンと後続のパターンを区切るための文字列。
終了: 作成される文字列の最後に追加される文字列。
一部のメソッドは、リストの一部の項目のみを取得するためのフィルタとして機能する、追加のパラメータ(セレクタ)を受け入れます。たとえば、マッピングのターゲット・データストアのマップされた属性のみをリストする場合です。
これらのメソッドの一部について、次の表に要約を示します。
メソッド | 説明 | 次で使用可能 |
---|---|---|
getColList() | Oracle Data Integratorで最も頻繁に使用されるメソッドです。使用されたコンテキスト内で実行する必要がある列および式のリストを返します。たとえば、次のようなリストの生成に使用できます。
このメソッドでは、5番目のパラメータとしてセレクタが受け入れられるため、必要に応じて項目をフィルタ処理できます。 |
LKM、CKM、IKM、JKM、SKM |
getTargetColList() | ターゲット・データストアの属性のリストを返します。
このメソッドでは、5番目のパラメータとしてセレクタが受け入れられるため、必要に応じて項目をフィルタ処理できます。 |
LKM、CKM、IKM、JKM、SKM |
getAKColList() | 代替キー用に定義された列のリストを返します。 | CKM、SKM |
getPKColList() | 主キーの列のリストを返します。かわりに、セレクタ・パラメータをPKに設定してgetColListを使用することもできます。 | CKM、SKM |
getFKColList() | 現在の外部キーの、参照する列および参照される列のリストを返します。 | CKM、SKM |
getSrcTablesList() | マッピングのソース表のリストを返します。できるかぎり、getFromメソッドをかわりに使用してください。getFromメソッドについては後述します。 | LKM、IKM |
getFilterList() | マッピングのフィルタ式のリストを返します。通常はgetFilterメソッドの方が適しています。 | LKM、IKM |
getJoinList() | マッピングの結合式のリストを返します。通常はgetJoinメソッドの方が適しています。 | LKM、IKM |
getGrpByList() | マッピングのマッピングで集計関数が検出されると、GROUP BY句に表示される式のリストを返します。通常はgetGrpByメソッドの方が適しています。 | LKM、IKM |
getHavingList() | マッピングのフィルタで集計関数が検出されると、HAVING句に表示される式のリストを返します。通常はgetHavingメソッドの方が適しています。 | LKM、IKM |
getSubscriberList() | サブスクライバのリストを返します。 | JKM |
次の項では、これらのメソッドを使用したコードの生成方法を示します。
次の例は、列リストを使用して表を作成する方法を示しています。
KMコード
Create table MYTABLE <%=odiRef.getTargetColList("(\n", "\t[COL_NAME] [DEST_WRI_DT]", ",\n", "\n)")%>
次の文を生成します。
Create table MYTABLE ( CUST_ID numeric(10), CUST_NAME varchar(250), ADDRESS varchar(250), CITY varchar(50), ZIP_CODE varchar(12), COUNTRY_ID varchar(3) )
この例では:
開始は"(\n"に設定されています。生成されるコードはカッコで始まり、その後に改行(\n)が続きます。
パターンは"\t[COL_NAME] [DEST_WRI_DT]"に設定されています。生成されるコードは、各ターゲット列に対してループ処理を行い、タブ文字(\t)、列名([COL_NAME])、空白および変換先の書込み可能データ型([DEST_WRI_DT])の順に生成します。
セパレータは",\n"に設定されています。生成される各パターンはカンマ(,)および改行(\n)によって後続のパターンと区切られます。
終了は"\n)"に設定されています。生成されるコードは改行(\n)およびその後に続くカッコで終わります。
次の例は、列リストを使用して表に値を挿入する方法を示しています。
次のKMコードの場合:
insert into MYTABLE ( <%=odiRef.getColList("", "[COL_NAME]", ", ", "\n", "INS AND NOT TARG")%> <%=odiRef.getColList(",", "[COL_NAME]", ", ", "", "INS AND TARG")%> ) Values ( <%=odiRef.getColList("", ":[COL_NAME]", ", ", "\n", "INS AND NOT TARG")%> <%=odiRef.getColList(", ", "[EXPRESSION]", ", ", "", "INS AND TARG")%> )
次の文を生成します。
insert into MYTABLE ( CUST_ID, CUST_NAME, ADDRESS, CITY, COUNTRY_ID , ZIP_CODE, LAST_UPDATE ) Values ( :CUST_ID, :CUST_NAME, :ADDRESS, :CITY, :COUNTRY_ID , 'ZZ2345', current_timestamp )
この例では、MYTABLEに挿入する必要がある値は、ターゲット列と同じ名前のバインド変数または定数式(ターゲット上で実行される場合)のどちらかです。これらの2つの異なる項目セットを取得するために、セレクタ・パラメータを使用してリストが分割されています。
"INS AND NOT TARG": まず、文の"value"部分にあるバインド変数(:[COL_NAME])にマップされる、カンマ区切りの列のリスト([COL_NAME])を生成します。INSERT文に含めるフラグが設定されており、ターゲット上で実行されない列のみを取得するようにフィルタ処理します。
"INS AND TARG": 次に、INSERT文に含めるフラグが設定されており、ターゲット上で実行される式([EXPRESSION])に対応する、カンマ区切りの列のリスト([COL_NAME])を生成します。項目が1つでも検出された場合、リストの開始文字はカンマになります。
次の例では、ログ目的でマッピングのソース表のリストを連結しています。
次のKMコードの場合:
insert into MYLOGTABLE ( MAPPING_NAME, DATE_LOADED, SOURCE_TABLES ) values ( '<%=odiRef.getPop("POP_NAME")%>', current_date, '' <%=odiRef.getSrcTablesList("|| ", "'[RES_NAME]'", " || ',' || ", "")%> )
次の文を生成します。
insert into MYLOGTABLE ( MAPPING_NAME, DATE_LOADED, SOURCE_TABLES ) values ( 'Int. CUSTOMER', current_date, '' || 'SRC_CUST' || ',' || 'AGE_RANGE_FILE' || ',' || 'C$0_CUSTOMER' )
この例では、getSrcTableListによって、マッピングのソースとして使用されるリソース名のリストを含むメッセージが生成されます。このリストはMYLOGTABLEに追加されます。使用されるセパレータは、連結演算子(||)、引用符で囲まれたカンマ(',')、再び同じ連結演算子の順序で構成されます。表のリストが空の場合は、MYLOGTABLEのSOURCE_TABLES列が空の文字列('')にマップされます。
LKMおよびIKMは、両方ともソースの結果セットを操作します。LKMの結果セットは、ソース上で実行する必要があるマッピング、フィルタ処理および結合に従って事前変換されたレコードを表します。一方、IKMの結果セットは、ステージング領域で実行されるマッピング、フィルタ処理および結合と一致する変換レコードを表します。
これらの結果セットを作成するには、通常はKMでSELECT文を使用します。Oracle Data Integratorには、このコードを生成するための高度な置換メソッド(getColListを含む)が用意されています。
メソッド | 説明 | 次で使用可能 |
---|---|---|
getFrom() | 適切なソース表、左側外部結合、右側外部結合および完全外部結合を含む、SELECT文のFROM句を返します。このメソッドでは、トポロジからの情報を使用して、ソースまたはターゲットのテクノロジのSQL機能を判別します。テクノロジでサポートされている場合、FROM句は、適切なキーワード(INNER、LEFTなど)およびカッコを使用して適宜作成されます。
|
LKM、IKM |
getFilter() | AND演算子で区切られたフィルタ式を返します。
|
LKM、IKM |
getJrnFilter() | ジャーナル化されたソース・データストア用の特別なジャーナル・フィルタ式を返します。このメソッドは、CDCフレームワークとともに使用する必要があります。 | LKM、IKM |
getGrpBy() | マッピングで集計関数が検出されると、GROUP BY句を返します。
GROUP BY句には、集計関数を含まない列を参照するすべてのマッピング式が含まれます。集計関数のリストは、トポロジに含まれるテクノロジの言語によって定義されます。 |
LKM、IKM |
getHaving() | フィルタで集計関数が検出されると、HAVING句を返します。
HAVING句には、集計関数を含むすべてのフィルタ式が含まれます。集計関数のリストは、トポロジに含まれるテクノロジの言語によって定義されます。 |
LKM、IKM |
任意のSQL RDBMSソース・サーバーから結果セットを取得するには、次のSELECT文をLKMで使用します。
select <%=odiRef.getPop("DISTINCT_ROWS")%> <%=odiRef.getColList("", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", "")%> from <%=odiRef.getFrom()%> where (1=1) <%=odiRef.getFilter()%> <%=odiRef.getJrnFilter()%> <%=odiRef.getJoin()%> <%=odiRef.getGrpBy()%> <%=odiRef.getHaving()%>
最終フロー・データを作成するために、任意のSQL RDBMSステージング領域サーバーから結果セットを取得するには、次のSELECT文をIKMで使用します。ターゲット上で実行されず、書込み可能な列にマップされている式のみを取得するために、getColListはフィルタ処理されています。
select <%=odiRef.getPop("DISTINCT_ROWS")%> <%=odiRef.getColList("", "[EXPRESSION]", ",\n\t", "", "(not TRG) and REW")%> from <%=odiRef.getFrom()%> where (1=1) <%=odiRef.getJoin()%> <%=odiRef.getFilter()%> <%=odiRef.getJrnFilter()%> <%=odiRef.getGrpBy()%> <%=odiRef.getHaving()%>
すべてのフィルタおよび結合はANDで始まり、SELECT文のWHERE句は常にtrue (1=1)の条件で始まります。
Oracle Data Integratorはデータセットをサポートしています。各データセットは結合またはフィルタされたソース表のグループとそのマッピングを表します。データセットは、セットベースの演算子(UNION、INTERSECTなど)を使用して、統合フェーズでターゲット・データストアにマージされます。
ロード・フェーズ中には、LKMは常に1つのデータセット上で動作します。統合フェーズ中にすべてのデータセットをマージする必要がある場合は、データセットを識別するインデックスを使用して、特定のデータセット上での動作をサポートするodiRef APIがコールされます。
次の例で、このデータセットのマージ方法について説明します。
<%for (int i=0; i < odiRef.getDataSetCount(); i++){%> <%=odiRef.getDataSet(i, "Operator")%> select <%=odiRef.getUserExit("OPTIMIZER_HINT")%> <%=odiRef.getPop("DISTINCT_ROWS")%> <%=odiRef.getColList(i,"", "[EXPRESSION]", ",\n\t", "", "(((INS or UPD) and !TRG) and REW)")%>, <% if (odiRef.getDataSet(i, "HAS_JRN").equals("1")) { %> JRN_FLAG IND_UPDATE <%} else {%> 'I' IND_UPDATE <%}%> from <%=odiRef.getFrom(i)%> where (1=1) <%=odiRef.getJoin(i)%> <%=odiRef.getFilter(i)%> <%=odiRef.getJrnFilter(i)%> <%=odiRef.getGrpBy(i)%> <%=odiRef.getHaving(i)%> <%}%>
Java Forループはデータセットを繰り返します。データセットの数は、getDataSetCountメソッドを使用して取得されます。各データセットに対してSELECT文が発行され、各文は、getDataSetメソッドを使用して取得されたデータセットのセットベースの演算子によって前の文と区切られます。
SELECT文は、各メソッドのコールがi(処理されるデータセットのインデックス)を使用してパラメータ設定されている場合を除いて、ソースのSELECT文の生成で生成されます。たとえば、getFrom(i)では、値iで特定されるデータセットに対してFROM文が生成されます。
データセット・インデックスのパラメータをサポートするすべてのメソッドは、このインデックス値のない構文もサポートします。IKM以外では、データセット・インデックスなしで使用する必要があります。IKM内では、これらのメソッドをデータセット・インデックスなしで使用すると、最初のデータセットが処理されます。この構文は、以前のOracle Data Integratorマッピングおよびナレッジ・モジュールと下位互換性があります。
次に示すメソッドは、有用な追加情報を提供します。
メソッド | 説明 | 次で使用可能 |
---|---|---|
getPop() | 現在のマッピングに関する情報を返します。 | IKM, LKM, CKM, JKM |
getInfo() | ソース・サーバーまたはターゲット・サーバーに関する情報を返します。 | 任意のプロシージャまたはKM |
getSession() | 現在実行中のセッションに関する情報を返します。 | 任意のプロシージャまたはKM |
getOption() | 特定のオプションの値を返します。 | 任意のプロシージャまたはKM |
getFlexFieldValue() | フレックス・フィールド値に関する情報を返します。フレックス・フィールドの値は、リスト・メソッドを使用してパターン・パラメータの一部に指定できます。 | 任意のプロシージャまたはKM |
getJrnInfo() | CDCフレームワークに関する情報を返します。 | JKM、LKM、IKM |
getTargetTable() | マッピングのターゲット表に関する情報を返します。 | LKM、IKM、CKM |
getModel() | リバースエンジニアリングの処理中に現在のモデルに関する情報を返します。 | RKM |
getPop() | 現在のマッピングに関する情報を返します。 | LKM、IKM |
条件分岐および高度なプログラミング技術を使用してコードを生成できます。Oracle Data Integratorでのコード生成は、<%および%>のタグで囲んだすべてのJavaコードを解釈できます。
次に示す例は、これらの高度な技術の使用方法を説明しています。
Java変数およびString関数の使用
次のKMコードは、String変数を作成し、それを置換メソッドのコールで使用します。
<% String myTableName; myTableName = "ABCDEF"; %> drop table <%=odiRef.getObjectName(myTableName.toLowerCase())%>
次を生成します。
drop table SCOTT.abcdef
KMオプションを使用した条件付きのコード生成
次のKMコードは、OPT001オプション値に応じてコードを生成します。
<% String myOptionValue=odiRef.getOption("OPT001"); if (myOption.equals("TRUE")) { out.print("/* Option OPT001 is set to TRUE */"); } else { %> /* The OPT001 option is not properly set */ <% } %>
OPT001がTRUEに設定された場合は、次が生成されます。
/* Option OPT001 is set to TRUE */
その他の場合は、次が生成されます。
/* The OPT001 option is not set to TRUE */