17 コンポーネントKMの使用

この章では、ODIで12cのコンポーネント・ナレッジ・モジュール(KM)を作成および使用する方法について説明します。ナレッジ・モジュール(KM)とは、再利用可能な特定のコード・テンプレートのコレクションであり、データ統合のプロセス全体で特定のタスクを実行する際に指定されます。この機能には、SDKおよびUIインタフェースの使いやすいセットが用意されており、12cスタイルのコンポーネントKMを作成、編集するときに使用できます。

この章の詳細な内容は次のとおりです。

17.1 コンポーネントKMの概要

コンポーネントKMとは、ODIマッピングでコンポーネント・ノードに割り当てることができるKMです。コンポーネントKMは、ODIバージョン12cで新しくなりました。コンポーネントKMの機能は以前のKMと同じで、タスクとオプションが含まれます。それらのオプションに加えて、新しい機能も追加されています。現在使用可能なコンポーネントスタイルのKMは、ロードKM、統合KMおよび抽出KMです。

コンポーネントKMは、11gの一般的なIKM/LKMと似ていますが、次の点が異なります。

  • コンポーネント・タイプ(DATASTOREなど)

  • コンポーネントKM委譲クラスまたはGroovyスクリプト

  • KMおよびKMタスク・レベルのソースおよびターゲット言語フィールド

  • 一連のフロー制御コマンド

  • グローバルに共有可能なコード・テンプレート・スニペット(「グローバル・テンプレート」という)を含める機能

置換APIオブジェクトを作成できるスマートKMであり、odiRefと同じようにKM継承と呼ばれる独自のプロパティを持っています。

17.2 継承の理解

コンポーネントKMの継承は、どんなコンポーネントKMでもベースKMからタスクやオプション、フィールド値を継承できる独自のプロパティです。この機能を使用して、次の操作を実行できます。

  • 新しいコンポーネントKMを作成し、そのプロパティをベースKMから継承する

  • 特定のKMタスク・ラインをベースから継承する

  • ベースKMタスク・ラインのオーバーライド

17.3 旧式のKMの記述

旧式のKMとは、バージョン11gのODIで使用できたKM開発フレームワークを使用して作成したKMのことです。 11gスタイルのKMは、そのテンプレート・コマンドでモノリシックなodiRef substitution APIオブジェクトと構文を使用するように設計されています。 11gのLKMやIKMは、コード生成をカスタマイズするために11gインタフェース(12cのマッピングに類似)と組み合せて使用されるリポジトリ・オブジェクトです。ただし、11gのKMは12cマッピングでも動作します。LKMまたはIKMは基本的に、特定の接続およびトランザクション設定と、一連のKMタスク、さらにソースおよびターゲット・コマンド・テンプレートで構成されています。コマンド・テンプレートは、KMタスク機能の中心です。コード・ジェネレータは、KMタスク・コマンドごとにテンプレート・テキストの置換を実行し、実行可能なセッション・タスクに置換後のテキストを移動するので、ランタイム・エージェントによって処理できます。コードを生成する際、odiRefオブジェクトはAST(抽象構文ツリー)オブジェクトとして機能し、コード生成フレームワークによって自動的に構築されます。

17.4 KMのタイプ

KMは、リストされているカテゴリに基づいて、次のタイプに分類されます。

  1. 作成のモード

    作成のモードを基準にすると、KMは次の2タイプに分類されます。これらは次のとおりです。

    • シード済KM - シード済KMは、リポジトリのログイン時にODIリポジトリにプレインストールされるタイプのKMです。シード済KMは、UIでは読取り専用です。

    • シード以外のKM - 非シード済KMは、ユーザーが作成またはインポートするタイプのKMです。

  2. ターゲット言語とソース言語

    ターゲットとソースの言語を基準にすると、KMは次の2タイプに分類されます。

    • SQL KM - SQL KMは、ターゲットまたはソースの言語がSQLの場合のKMです。SQL構造化置換APIオブジェクトを生成し、最終的にLKMまたはIKMがSQLコードを生成します。

    • 非SQL KM - Spark KMなどの非SQL KMは、Pythonなど別の言語を生成し、それを使用してターゲットがSparkサービスにロードされます。

17.5 KMエディタを使用したコンポーネントKMの作成と編集

コンポーネントKMの作成、編集、コピーまたはカスタマイズには、ナレッジ・モジュール(KM)エディタを使用します。
新しいコンポーネントKMを使用するには、次のようにします。
  • 「グローバル・ナレッジ・モジュール」または「プロジェクト」ノードを展開し、作成しようとする必要なタイプのコンポーネントKMを右クリックして「新規」を選択します。

    たとえば、新しいIKMを作成する場合には、「IKM」を右クリックして「新規統合(IKM)」を選択します。

    新しいナレッジ・モジュールが作成されます。

    ノート:

    「プロジェクト」ノードから、抽出KM (XKM)は作成できません。

既存のコンポーネントKMを編集するには、次のようにします。

  • 編集しようとするKMをダブルクリックするか、右クリックして「開く」を選択します。

    KMエディタでは、選択したKMの定義と実装のあらゆる側面を完全に制御できます。これにより、作成したKMに関連する様々な操作を最大限の柔軟さで実行できます。

    ノート:

    シード済KMは、KMエディタで読取り専用で開くため、シード済KMのプロパティを編集することはできません。

KMエディタには、KMを簡単かつ効率的に管理するために次のタブがあります。これらは次のとおりです。

17.5.1 「定義」タブの使用

KMエディタの「定義」タブでは、新規に作成したKMまたは既存のKMが有効に機能するように、そのプロパティを定義または変更できます。これらは次のとおりです。

ノート:

これらのプロパティは、作成したKMのタイプによって異なります。
  • 名前 - 新規作成したナレッジ・モジュール(KM)の名前を表します。

  • タイプ - 作成中のKMのタイプに基づいて設定される、読取り専用のフィールドです。

  • LKMタイプ - あるサーバーから別のサーバーへのデータの移動に使用されるLKM処理の基本タイプを指定します。

    ノート:

    このフィールドは、選択したKMタイプがLKMの場合にのみインタフェースに表示されます。

    このフィールドに指定可能な値は次のとおりです。

    • なし— LKMタイプが定義されていません。

    • 永続データのステージング(PERSISTENT): データは、C$ステージング表などのある種の永続記憶域にステージングされます

    • 透過ソース・データ・アクセス (TRANSPARENT_SOURCE): なんらかのメカニズムを使用して、ソース・データにターゲット・サーバーから透過的にアクセスできるようにします。たとえば、dbリンクなどです。

    • 透過ターゲット・データ・アクセス (TRANSPARENT_TARGET): なんらかのメカニズムを使用してターゲット・データストアをソース・サーバーで透過的にロードできるようにします。たとえば、dbリンクなどです。

    • 透過ソースおよびターゲット・アクセス(TRANSPARENT_BOTH): ターゲットIKM委譲およびタスクが無視される点以外「透過ターゲット」と同様です。

  • 「一貫性セット・ジャーナル化」/「単純ジャーナル化」のオプション - 新規に作成したKMによって管理されるジャーナル化モードのタイプを示します。一貫性セット・ジャーナル化と単純ジャーナル化のいずれかのモードを選択できます。

    ノート:

    このフィールドは、選択したKMタイプがJKMの場合にのみインタフェースに表示されます。
  • コンポーネント・タイプ - コンポーネント・タイプを指定してKMを設定すると、12cのKMになります。11gのKMの場合、このプロパティは未定義になります。ただし、12cのKMでこのプロパティを未定義にすることはできません。

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • ベースKM - 新規に作成するKMのベースとして選択するKMを示します。新規に作成されるKMは、選択したベースKMからタスク、オプション、委譲クラスを継承します。ノート - KMの継承は複数レベル存在する場合があります。

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • このテクノロジのペアのデフォルトKM - このチェック・ボックスを選択すると、「ソース・テクノロジ」と「ターゲット・テクノロジ」のフィールドに表示されているテクノロジのデータ・サーバーに対して、新規に作成するKMがデフォルトで選択されます。

  • 複数接続 - このチェック・ボックスを選択すると、新規に作成されるKMは、ペアになったデータ・サーバーに対するアクセス権を取得し、必要な場合にはテクノロジの異なる2つのデータ・サーバー間でデータ・ロードを交換します。たとえば、プロシージャ・コマンドでは、あるデータベースで選択コマンドを指定し、別のデータベースに挿入するコマンドを指定して結果全体を転送できるようになります。

  • Oracle Golden Gate JKMとJAgent – JAgentの構成オプションが物理スキーマ、論理スキーマおよびモジュールに表示されるように、ナレッジ・モジュールをOracle GoldenGateナレッジ・モジュールとして指定します。

    ノート:

    このフィールドは、選択したKMタイプがJKMの場合にのみインタフェースに表示されます。
  • ソース・テクノロジ - プロシージャ・コマンドでデフォルトで使用されるソース・テクノロジを示します。

    ノート:

    このフィールドは、新規に作成するKMで「複数接続」フィールドが構成されている場合にのみ使用可能です。
  • ターゲット・テクノロジ - 新規に作成するKMのコマンドの宛先になるデフォルトのテクノロジを示します。

  • ソース言語 - XKMまたはLKMで、一部の抽出処理に使用される言語を示します。たとえば、SQLやPYTHONなどです。

    ノート:

    このフィールドは、新規に作成するKMで「複数接続」フィールドが構成されている場合にのみ使用可能で、JKM、SKM、RKMには適用されません。
  • ターゲット言語 - LKMまたはIKMで、ターゲット・ロード処理に使用される言語を示します。たとえば、SQLやPYTHONなどです

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • コマンド・テキスト - 新規に作成するKMの実際のコードを示します。

    ノート:

    このフィールドは、選択したKMタイプがSKMの場合にのみインタフェースに表示されます。
  • 生成タイプ - 新規に作成するKMによって実行されるコード生成処理のタイプを表します。KMによって使用されるジェネレータ委譲クラスの基本的な機能に対応します。たとえば、「SQLからSQLエージェントの行別処理」などです。これは、指定した方法でデータを処理する、生成されたコード・テキストのレンダリングに適するよう生成されるASTオブジェクトのタイプにも対応します。

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • ソース生成スタイル - 抽出ソースとして使用される場合にこのKMで行われる生成処理のスタイルを表します。このKMによってコード生成ソースASTオブジェクトが生成される際に呼び出されるAST生成メソッドに対応します。ASTオブジェクトは生成コードのテキストのレンダリングに使用されます。たとえば、INSERTやUPDATEなどです

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • ターゲット生成スタイル - ロードのターゲットとして使用される場合にこのKMで行われる生成処理のスタイルを表します。このKMによってコード生成ターゲットASTオブジェクトが生成される際に呼び出されるAST生成メソッドに対応します。ASTオブジェクトは生成コードのテキストのレンダリングに使用されます。例: INSERTまたはUPDATE

    ノート:

    このフィールドは、JKM、SKM、RKMには適用されません。
  • 説明- 新規に作成したKMの詳細な説明を表します。

17.5.2 「タスク」タブの使用

KMタスクは、KM機能の中心です。各KMタスク(またはKMライン)は、特定の接続設定と、ソースおよびターゲット・コマンド・テンプレートで構成されます。コマンド・テンプレートは、KMタスク機能の中心です。コード・ジェネレータは、KMタスク・コマンドごとにテンプレート・テキストの置換を実行し、セッション・タスクに置換後のテキストを移動します。これは、ランタイム・エージェントによって処理できる実行可能タスクです。

この項では、KMタスクについて次の詳細について説明します。

17.5.2.1 「タスク」タブのツールバーの使用
「タスク」タブのツールバーでは、KMタスクの作成と管理を効果的に行うことができます。このツールバーには次のオプションが含まれています。
  • 「検索」ダイアログ - 「検索」ダイアログ「検索」ダイアログに必要なタスク名を入力し、タスク表で検索します。

  • すべて展開 - 「すべて展開」アイコンすべて展開をクリックすると、タスク階層に存在するすべてのタスク・グループが展開して表示されます。

  • すべて閉じる - 「すべて閉じる」アイコンすべて閉じるをクリックすると、タスク階層に存在するすべてのタスク・グループが折りたたんで表示されます。

  • 追加 - 「追加」アイコン追加をクリックして、新しいタスクを追加します。

  • 「タスクを含める」 - 「タスクを含める」アイコンタスクを含めるを使用すると、必要なラインをベースKMに追加できます。「タスクを含める」アイコンをクリックすると、追加ダイアログが開いて、含めるベースKMタスクで使用可能なラインが表示され、必要なラインを追加できるようになります。

    ノート:

    「タスクを含める」アイコンは、ライン・タイプが選択されており、KMにベースKMが設定されていて、ベースKMに選択したライン・タイプのラインがある場合に使用できます。
  • 削除 - 新しく追加したタスクを削除する場合は、「削除」アイコン削除をクリックします。

  • すべてのタスクを除外 - 「すべてのタスクを除外」アイコンすべてのタスクを除外を使用すると、選択したライン・タイプについて、含まれるベース・タスクすべてを削除できます。「すべてのタスクを除外」アイコンをクリックすると、特定ライン・タイプのベース・タスクはすべて削除されます。

    ノート:

    タスク除外のボタンが有効になるのは、手動で含めたタスク、または自動的に含められたタスクが存在し、タスクにベースKMを設定しているときだけです。
  • 上に移動 - 「上に移動」アイコン上に移動をクリックすると、選択したタスクが階層リストで上に移動します。

  • 下に移動 - 「下に移動」アイコン下に移動をクリックすると、選択したタスクが階層リストで下に移動します。

  • タスクを最上位に移動 - 「タスクを最上位に移動」アイコンタスクを最上位に移動をクリックすると、選択したタスクが階層リストで最上位に移動します。

  • タスクを最下位に移動 - 「タスクを最下位に移動」アイコンタスクを最下位に移動をクリックすると、選択したタスクが階層リストで最下位に移動します。

  • 列の選択 - 「列の選択」アイコン列の選択をクリックすると、選択したタスクのプロパティが、表示されているタスク表に追加されます。

17.5.2.2 KMエディタの「タスク」タブのプロパティの理解
KMエディタの「タスク」タブでは、新規に作成したコンポーネントKMまたは既存のコンポーネントKMについて、次のプロパティを定義または変更できます。
  • タスク階層 - ツリー構造で定義されているKMタスクの階層配置を示します。

  • エラーの無視 - このオプションを有効にすると、無効なリターン・コードが返された場合に、構成されているタスクが中断されません。このチェック・ボックスを選択してtrueに設定した場合、KMタスクは「エラー」ではなく「警告」に分類され、タスクの実行は停止しません。

  • 実行オプション - タスクの実行可能なオプションを示します。このオプションの設定によって、次のようになります。
    • 常に実行 - このタスクは、常にセッションまたはシナリオ・タスクに生成され、常にセッションで実行されます。

    • 1回実行 - このタスクは、所有側KMが割り当てられている複数のコンポーネントが実行ユニットに含まれていても、マッピング実行ユニットごとに1回しか生成されません。したがって、たとえば、ある実行ユニットに3つのターゲット・データストア・コンポーネントがあり、すべてが「IKMマルチターゲット挿入」のKMに割り当てられている場合、かつこのIKMでの挿入タスクが「1回実行」のオプションに設定されている場合、最後に処理されるターゲット・データストアのみがタスクを生成します。

    • 条件付実行 - このタスクは、対応する条件付き実行KMのオプションがtrueに設定されている場合にのみ、セッションまたはシナリオ・タスクに生成されます。条件付き実行KMのオプションは、KMタスクのプロパティ・インスペクタ・ウィンドウで設定できます。

  • ソース・コマンド - ソースとして指定するコードの行を示します。

  • ターゲット・コマンド - ネイティブ言語または標準言語(Groovy、SQL、PL/SQL、Transact-SQL、シェルなど)生成されたコードの行を表します。テンプレート式エディタを使用すると、ソースおよびターゲット・コマンドをカスタマイズできます。

  • ソース・テクノロジ - ソース・コマンドが実行されるテクノロジを示します。ノート: KMコマンドの実行でOracle Data Integrator(コマンド)を使用するには、テクノロジをODIツールに設定します。OSコマンドを使用する場合または外部プログラムを実行する場合は、テクノロジを「オペレーティング・システム」に設定します。

  • ターゲット・テクノロジ - ターゲット・コマンドが実行されるテクノロジを示します。ノート: KMコマンドの実行でOracle Data Integrator(コマンド)を使用するには、テクノロジをODIツールに設定します。OSコマンドを使用する場合または外部プログラムを実行する場合は、テクノロジを「オペレーティング・システム」に設定します。

  • ソース言語 - 「定義」タブで選択したソース言語を示します。このオプションを使用すると、すべてのKMタスクのプロパティ・インスペクタでソース言語を設定できます。選択したソース言語を、このオプションでオーバーライドすることもできます。

  • ターゲット言語 - 「定義」タブで選択したターゲット言語を示します。このオプションを使用すると、すべてのKMタスクのプロパティ・インスペクタでターゲット言語を設定できます。選択したターゲット言語を、このオプションでオーバーライドできます。

  • ソース・トランザクション - このオプションを使用すると、複数の同時ソース・トランザクション(0から9の番号が付けられています)上でコマンドを実行したり、オプション「自動コミット」を選択してトランザクション外で作業したりできます。

  • ターゲット・トランザクション - このオプションを使用すると、複数の同時ターゲット・トランザクション(0から9の番号が付けられています)上でコマンドを実行したり、オプション「自動コミット」を選択してトランザクション外で作業したりできます。

  • ソースのコミット – コマンドがトランザクション(0から9の番号が付けられています)で実行されている場合、続行するか現在のソース・トランザクションをコミットするかを次のモードに従って決定できます。

    • コミットなし: トランザクションがコミットされません。この場合、後のコマンドでコミットできます。セッションが正常終了すると、デフォルトですべてのトランザクションがコミットされます。

    • コミット: トランザクションがコミットされます。

    • 1000行をコミット: 1000件のレコードを処理するたびにOracle Data Integratorによってコミットされます。このモードを選択できるのは、ロード・プロシージャ・コマンド、つまり結果を返すソース・コマンドとInsertを実行する宛先コマンドを含むコマンドに対してのみです。

  • ターゲット・コミット – コマンドがトランザクション(0から9の番号が付けられています)で実行されている場合、続行するか現在のターゲット・トランザクションをコミットするかを次のモードに従って決定できます。

    • コミットなし: トランザクションがコミットされません。この場合、後のコマンドでコミットできます。セッションが正常終了すると、デフォルトですべてのトランザクションがコミットされます。

    • コミット: トランザクションがコミットされます。

    • 1000行をコミット: 1000件のレコードを処理するたびにOracle Data Integratorによってコミットされます。このモードを選択できるのは、ロード・プロシージャ・コマンド、つまり結果を返すソース・コマンドとInsertを実行する宛先コマンドを含むコマンドに対してのみです。

  • ソース・コンテキスト - 所有側KMのデフォルト・コンテキスト設定をオーバーライドするとき、このフィールドを使用します。問合せのソース実行コンテキストを表します。「実行コンテキスト」オプションを選択した場合、コマンドは起動時またはそのステップで選択された実行コンテキストで実行されます。

  • ターゲット・コンテキスト - 所有側KMのデフォルト・コンテキスト設定をオーバーライドするとき、このフィールドを使用します。KMタスクにターゲット・コンテキスト設定がある場合は、そのコンテキストを実行の論理スキーマと組み合せて使用して、物理スキーマが決定され、そこからターゲット・コマンドの実行に使用される接続情報が決定します。

  • ソース論理スキーマ - 実行の論理スキーマ。ソース・コンテキストにリンクされたこの論理スキーマを使用すると、物理実行スキーマを定義できます。

  • ターゲット論理スキーマ - 実行の論理スキーマを表します。ターゲット・コンテキストにリンクされたこの論理スキーマを使用すると、物理実行スキーマを定義できます。

  • ソース・トランザクション分離 - 選択したオーダーのソース・トランザクション分離レベルを表します。表示される分離レベルはSQL ISOのレベルです。すべてのデータ・サーバーでサポートされているわけではありません。分離レベルは次のとおりです。

    • デフォルト: トランザクションは接続の分離レベルを維持します。

    • 未コミット読取り: トランザクションは、別のトランザクションがコミットしていないデータを読み取ることができます。

    • コミット読取り: トランザクションは、他のトランザクションがコミットしたデータのみを読み取ることができます(通常、これは多くのデータ・サーバーのデフォルト・モードです)。

    • 反復可能読取り: トランザクションが同じSQL問合せを複数回実行する場合、その間にその行が別のトランザクションによって変更およびコミットされていても、同じ情報を読み取ります。

    • シリアル化可能: トランザクションが同じSQL問合せを複数回実行する場合、実行と実行の間にその行が別のトランザクションによって変更、削除、作成およびコミットされていても、必ず同じ情報を読み取ります。

  • ターゲット・トランザクション分離 - 選択したオーダーのターゲット・トランザクション分離レベルを表します。表示される分離レベルはSQL ISOのレベルです。すべてのデータ・サーバーでサポートされているわけではありません。分離レベルは次のとおりです。

    • デフォルト: トランザクションは接続の分離レベルを維持します。

    • 未コミット読取り: トランザクションは、別のトランザクションがコミットしていないデータを読み取ることができます。

    • コミット読取り: トランザクションは、他のトランザクションがコミットしたデータのみを読み取ることができます(通常、これは多くのデータ・サーバーのデフォルト・モードです)。

    • 反復可能読取り: トランザクションが同じSQL問合せを複数回実行する場合、その間にその行が別のトランザクションによって変更およびコミットされていても、同じ情報を読み取ります。

    • シリアル化可能: トランザクションが同じSQL問合せを複数回実行する場合、実行と実行の間にその行が別のトランザクションによって変更、削除、作成およびコミットされていても、必ず同じ情報を読み取ります。

  • ログ・カウンタ – このコマンドによって処理される行の数をどのカウンタ(「挿入」、「更新」、「削除」または「エラー」)が記録するかを記録します。

  • ログ・レベル - コマンドのロギング・レベルを表します。実行時に、コマンドのログ・レベルに基づいてコマンドをログに保存できます。

  • ログの最終コマンド - ソースおよびターゲット・コマンドの最終的なコードを記録する場合に選択します。これにより、多数のランタイム・パラメータが含まれるログの可読性が向上します。このオプションは、パスワードやその他の機密データが含まれていないタスクに対してのみ使用してください。

  • 所有者 - 編集可能なタスクの派生元であるKMの名前を表すフィールドです。「所有者」がベースKMの場合、タスクは読取り専用になります。ベースKMタスクが、継承するKMをオーバーライドする場合、「所有者」は継承するKMになります。

17.5.2.3 ソース/ターゲット・コマンド・エディタの詳細

ソース/ターゲット・コマンド・エディタは、KMをカスタマイズするうえで重要な要素のひとつです。

ノート:

ソース/ターゲット・コマンド・エディタは、タスクをハイライトしたときと、タスクのソースまたはターゲット・コマンドを編集するときに呼び出されます。

エディタを起動するには、次のようにします。

階層から必要なタスクを選択し、選択したタスクのエディタ・アイコン「エディタ」アイコンをクリックします。

「ソース・コマンドの編集」/「ターゲット・コマンドの編集」エディタを起動すると、ソース/ターゲット・コマンドで必要な変更点を編集できるようになります。

ソース/ターゲット・コマンド・エディタを使用するメリットは、次のとおりです。
  • 自動 - コード補完 -ジェネレータ・テキストを生成するためにコード・ジェネレータによって使用される完全なテンプレート・コマンドを表示します。

  • 有効範囲内オブジェクト・ツリー - テンプレート・コマンド全体で使用される再利用可能なテンプレートを表示し、テンプレートを再利用しやすくします。

  • 置換APIの機能強化

  • 新しいフロー制御構文

  • ユーザー定義のGroovy置換変数定義スクリプト

ソース/ターゲット・コマンド・エディタの機能

エディタで特に重要な機能は、次のとおりです。
  1. コードの展開と縮小 - コードの一部を展開または縮小表示できる独自の機能です。エディタに表示されるテキストの左端で、マージン領域に表示される展開/縮小ボタンを使用します。テンプレート・コマンドで、グローバルに再利用可能なテンプレートを使用する場合は、エディタの展開可能なセクションとして表示され、対応する展開/縮小ボタンで操作します。

    ノート:

    グローバルに再利用可能なテンプレートを使用するには、#INCLUDEコマンドを使用して、テンプレート・コマンドで使用します。
    コード展開/縮小機能にはもうひとつ、不要になったサブ・テンプレート・インクルードを削除したり、オーバーライドしたサブテンプレートを元のグローバル・サブテンプレート・テキストに戻したりできる下位機能もあります。
    • これを操作するには、次に示すように、「拡張」ボタンまたは「閉じる」ボタンを含んだ」コードにマウスをかざすと使用できるポップアップ・メニューを右クリックします。図template_expression_editor-right_click.pngの説明が続きます
      図template_expression_editor-right_click.pngの説明

    • インクルードの削除 - インクルードの削除オプションを選択すると、選択したサブテンプレートのINCLUDE文が親のサブテンプレートから削除され、親のサブテンプレートは、ローカルKMによってオーバーライド済とマークされます。削除したINCLUDE文はもう含まれないからです。

      INCLUDE文を含むサブテンプレート・テキストを縮小していると、エディタでは編集も選択もできません。別のサブテンプレートを含めるなどでINCLUDE文を変更する場合は、右クリック・メニューでインクルードの削除を右クリックして現在のINCLUDE文を削除してから、新しくINCLUDE文を追加します。新しいINCLUDE文は、エディタを閉じてもう一度開くまで、展開できません。

    • ローカル・オーバーライドを戻す - ローカル・オーバーライドを戻すオプションを選択すると、選択したサブテンプレート・テキストは、オーバーライドされていた場合、インクルードされたグローバル共有テンプレートのテンプレート・テキストに戻されます。

    ノート:

    このメニュー項目を使用できるのは、選択したテンプレートが変更され、ローカルKMタスクによってオーバーライドされている場合だけです。
  2. テキストのハイライト- 展開したテンプレートでは、2レベルのハイライト機能があります。これらは次のとおりです。

    • 黄色のハイライト - 黄色は言語のハイライト機能で、この場合はSQL言語のキーワードがハイライトされます。

    • 青のハイライト - 青は、12cの新しいテンプレート・フロー制御構文のハイライトです。

      これらのコマンドで、条件付きのテキストを生成したり、テキスト生成をループしたりできます。11gではJavaコードで実現していたものと似ています。

  3. 新しいテンプレート・コマンド(NL) - エディタには、12cの新しいテンプレート・コマンドとして#NL#が追加され、ジェネレータで改行文字を生成できます。このコマンドを使用すると、テンプレートの改行が無視されるため、生成されるコードを配慮せずにテンプレートのフォーマットを整えることができます。

ソース/ターゲット・コマンド・エディタのタブについて

ソース/ターゲット・コマンド・エディタの左ペインには、Groovy変数置換スクリプトと構文検証結果を操作できる4つのタブがあります。各タブで、固有の機能を実行できます。これらは次のとおりです。
  1. コマンド・テキスト: このタブには、コードの生成に使用されるメインのテンプレート・コマンドが表示されます。

  2. Groovyタスク・ローカル: このタブには、このタスクでのみ使用できる置換変数定義を含むGroovyスクリプトが表示されます。

  3. Groovy KMローカル: このタブには、このKMに存在するどのタスクでも使用できる置換変数定義を含むGroovyスクリプトが表示されます。

    KMタスクのGroovy変数定義テキストは、テンプレート・テキストのエディタ・パネルに専用のパネルがあります。Groovy言語のハイライトは、Groovyパネルに適用されます。ユーザーは新しい変数をテキスト内に定義でき、それをテンプレート・テキスト内で置換変数として使用できます。そこから抽象構文ツリー(AST)にナビゲートして、ソースまたは中間のASTオブジェクトを検索し、これらのオブジェクトに新しいメソッドを追加することもできます。

  4. 検証結果: このタブには、最新の構文検証を実行した結果が表示されます。テンプレートとGroovy置換変数定義スクリプトの両方について、構文検証が表示されます。

ソース/ターゲット・コマンド・エディタのツールバーの使用

ソース/ターゲット・コマンド・エディタの「タスク」ペインには次のアイコンがあり、コード編集上の様々な操作を実行できます。
  • 元に戻す

  • やり直し

  • 切取り

  • コピー

  • 貼付け

  • 言語選択リスト - 言語選択のリスト・ボックスです。エディタの内容は、選択した言語でハイライト表示されます。

    ノート:

    「タスク」タブでターゲット言語が設定されていない場合、「検証結果」には使用可能な言語がすべて表示されます。
  • 式全体のハイライトのリスト・ボックス - 次のように、各種のコード式をハイライトするために使用されます。

    • 式全体

    • % フェーズ

    • ? フェーズ

    • $ フェーズ

    • @ フェーズ

  • すべて展開

  • すべて閉じる

  • 構文の検証 - コードの構文を検証できます

  • 「検索」テキスト・ボックスの「検索」アイコン - 入力したキーワードで、目的のコード行を検索できます

17.5.3 「オプション」タブの使用

KMエディタでは、拡張KMでベースKMのオプションを柔軟に使用できます。KMエディタの「オプション」タブには、ベースKMで使用可能なオプションがすべて表示され、その継承階層に基づいてグループ化されます。したがって、ベースKMのオプションが階層内で先に表示され、導出されたオプションが次に表示されます。

ノート:

「オプション」タブは、SKMでは使用できません。

「オプション」タブのプロパティ

KMエディタの「オプション」タブでは、新規に作成したコンポーネントKMまたは既存のコンポーネントKMについて、次のプロパティを定義または変更できます。
  • 名前 - オプションの名前を表します。

    ノート:

    オプションには、大文字とアンダースコアを組み合せた名前を付けることをお薦めします。たとえば、「CREATE_TARGET_TABLE」などです。
  • タイプ - オプションのデータ型を表します。このフィールドで有効な値は次のとおりです。

    • ブール - 「ブール」のオプションは、trueまたはfalseに設定できます。

    • 選択肢 - 選択肢オプションでは、オプション値の事前定義済リストからオプション値を選択できます。この値は、「選択肢の編集」ダイアログで編集できます。参照アイコンをクリックして、「選択肢の編集」ダイアログを開きます。必要な選択項目を追加または削除できるようになります。

    • テキスト - テキスト・オプションは、長さ無制限で英数値を指定でき、変数と順序変数が解析されます。

    • - 「値」オプションには、最大250文字までの英数値を指定できます。

  • デフォルト値 - 選択したオプションのデフォルト値を表します。

  • 条件式 - 選択したオプションに、必要な条件を設定できます。選択したオプションの条件式を編集するときは、フィールドをダブルクリックします。参照アイコン「参照」アイコンをクリックして「式の編集」エディタを開くと、ナレッジ・モジュールの有効/無効、表示/非表示を決定する既存のGroovyスクリプトを作成または編集できます。

    次に例を示します。

    return options.getValue("Cache").equals("true")?"show=true,enable=true":"show=false,enable=false";

    これは"Cache"とよばれる別のKMオプションの値を表示します。この値が"false"の場合、KMオプションは関係がないため非表示です。

    return (isStreaming)?"show=false,enable=false":"show=true,enable=true";

    これはMapping isStreamingプロパティを表示します。これがtrueの場合、このオプションは非表示です。

  • 所有者 - 作成したオプションの所有者であるKMの名前を表します。ベース・オプションは編集できないため、このフィールドを使用するとベース・オプションを識別しやすくなります。

  • 説明 - 作成するオプションを1行で表す説明。この説明が、ODIユーザー・インタフェースに表示されます。

  • ヘルプ - オプションを操作しているときに役立つキーワードを作成できます。選択したオプションの値を変更するには、フィールドをダブルクリックします。参照アイコン「参照」アイコンをクリックして「値の変更」ダイアログを開くと、選択したオプションについてヘルプ・コンテンツを作成または編集することができます。

「オプション」タブのツールバーの使用

「オプション」タブのツールバーでは、次のオプションで必須の操作を実行できます。
  • 「検索」ダイアログ - 「検索」ダイアログ「検索」ダイアログに必要なオプション名を入力し、「オプション」表に表示されるオプションを検索します。

  • すべて展開 - 「すべて展開」アイコンすべて展開をクリックすると、「オプション」階層に存在するすべてのオプション・グループが展開して表示されます。

  • すべて閉じる - 「すべて閉じる」アイコンすべて閉じるをクリックすると、「オプション」階層に存在するすべてのオプション・グループが折りたたんで表示されます。

  • 追加 - 「追加」アイコン「追加」アイコンをクリックして、新しいオプションまたはオプション・グループを追加します。

  • 削除 - 新しく追加したオプションまたはオプション・グループを削除する場合は、「削除」アイコン「削除」アイコンをクリックします。

  • 上に移動 - 「上に移動」アイコン「上に移動」アイコンをクリックすると、選択したオプションが階層リストで上に移動します。

  • 下に移動 - 「下に移動」アイコン「下に移動」アイコンをクリックすると、選択したオプションが階層リストで下に移動します。

    ノート:

    ベース・オプションは、「オプション」階層表で上下に移動できません。
  • 外に移動 - 「外に移動」アイコン「外に移動」アイコンをクリックすると、選択したオプションが選択したオプション・グループの外に移動します。

  • 内に移動 - 「内に移動」アイコン「内に移動」アイコンをクリックすると、選択したオプションが選択したオプション・グループの中に移動します。

    ノート:

    オプションをベース・グループに移動することはできません。移動矢印が無効になります。
  • オプションを最上位に移動 - 「オプションを最上位に移動」アイコン「オプションを最上位に移動」アイコンをクリックすると、選択したオプションが階層リストで最上位に移動します。

  • オプションを最下位に移動 - 「オプションを最下位に移動」アイコン「オプションを最下位に移動」アイコンをクリックすると、選択したオプションが階層リストで最下位に移動します。

  • 列の選択 - 「列の選択」アイコン「列の選択」アイコンをクリックすると、選択したオプションのプロパティが、表示されている「オプション」表に追加されます。

17.5.4 「バージョン」タブの使用

KMエディタでは、後で利用できるように、作成したナレッジ・モジュールの複数のバージョンを保存できます。1つのバージョンは、いずれかの時点で作成したコードをカスタマイズしたもので、保存しておいて、いつでも必要なときに再利用することができます。バージョンは、あらゆる変更点の追跡記録として機能し、必要な変更を再利用または回復することも可能です。複数のバージョンが、ODIオブジェクトのマスター・リポジトリに保存されます。

「バージョン」タブのプロパティ

「バージョン」タブでは、ODIに存在するナレッジ・モジュールの様々なバージョンを管理でき、次の詳細の表示と更新が可能です。
  1. 作成および更新情報 - このノードには、ナレッジ・モジュールを作成または更新したユーザーの情報と、作成または更新の日時が表示されます。

    • 作成者 - ナレッジ・モジュールを作成したユーザーの名前を表します。

    • 作成日 - ナレッジ・モジュールが作成された日時を表します。

    • 更新者 - ナレッジ・モジュールの詳細を前回更新したユーザーの名前を表します。

    • 更新日 - ナレッジ・モジュールが前回更新された日時を表します。

  2. 情報 - このノードには、次の情報が表示されます。

    • 内部ID - 内部IDは、リポジトリ内のオブジェクト・タイプごとに一意のプロパティです。一意のプロパティと呼ばれるのは、一意のリポジトリIDを持ち、オブジェクトの識別が可能なためです。

    • グローバルID - 作成/変更されたナレッジ・モジュールの一意のグローバルIDです。

    • ビルド番号 - 製品のリリースを内部的に追跡するためのビルド番号です

    • カスタマイズ・ステータス - 選択したナレッジ・モジュールに対して実行されたカスタマイズのステータスを表します。次に例を示します。

      1. Oracle純正 - 選択したナレッジ・モジュールが、オラクルから提供されたまま変更されていないオリジナルのナレッジ・モジュールであることを示すステータスです。

      2. ユーザーが変更済 - 選択したナレッジ・モジュールが、オラクルから提供されたオリジナルのナレッジ・モジュールで、ユーザーによって変更されていることを示すステータスです。

      3. Oracle以外 - 選択したナレッジ・モジュールが、Oracle以外のナレッジ・モジュールであることを示すステータスです。

  3. バージョン - このノードには、表に存在するナレッジ・モジュールの各バージョンについて完全な情報がリストされ、次の情報が含まれます。

    • バージョン - 作成したオブジェクトのバージョン番号を表します。

    • 日付 - 特定のバージョンが作成された日付を表します。

    • ユーザー - バージョンを作成したユーザーの名前。

    • 説明 - 作成したバージョンの詳細を表します。

「バージョン」表のタスク・アイコンの詳細

「タスク」ツールバーでは、ナレッジ・モジュールの使用可能なバージョンについて、次の操作を実行できます。

  • 新規バージョンを作成 - 選択したオブジェクトの新規バージョンをチェックインする際に使用します。「タスク」ツールバーにある「追加」アイコン「追加」アイコンをクリックすると、新しいバージョンのオブジェクトが追加されます。「バージョニング」ダイアログが開き、作成したバージョンについて次の詳細を更新できます。

    1. バージョン番号 - アプリケーションによって自動生成されます。

    2. 説明 – 作成したバージョンについて、簡単な説明を指定します

    3. 前のバージョン - 使用可能な以前のバージョンすべてについて、完全な詳細がリストされます。

  • バージョンを削除 - 不要になったバージョンを削除する際に使用します。オブジェクトの既存のバージョンを削除するには、「タスク」ツールバーにある「削除」アイコン「削除」アイコンをクリックします。

  • バージョンをリストア - オブジェクトを、存在した以前のバージョンにリストする場合に使用します。「タスク」ツールバーにある「リストア」アイコン「バージョンのリストア」アイコンをクリックすると、オブジェクトの以前のバージョンにリストアされます。

  • バージョンをエクスポート - オブジェクトの詳細をエクスポートする際に使用します。「タスク」ツールバーにある「エクスポート」アイコン「バージョンのエクスポート」アイコンをクリックすると、オブジェクトの既存のバージョンに関する詳細がエクスポートされます。

17.6 グローバル・テンプレートの理解

グローバル・テンプレートは、カスタマイズされた共有テンプレートで、新規作成されるか、ローカル・ナレッジ・モジュールのタスク・コマンド・テンプレートからコピーされます。任意のKMのKMタスクで使用でき、コンポーネントKMラインのソース式またはターゲット式の内部で使用できます。グローバル共有テンプレートは、ナビゲータの一連のグローバル・オブジェクト・ツリーの下にある「グローバル・テンプレート」ノードに表示されます。

グローバル・テンプレートには、次の2つのタイプがあります。

  • シード済グローバル・テンプレート — シード済のテンプレートは読取り専用です。ユーザーはそのままの状態で使用でき、必要に応じて複製と編集も可能です。

  • ユーザー作成テンプレート— 必要に応じてカスタマイズできます。

グローバル・テンプレートにアクセスするには、次のようにします。
  • 「デザイナ・ナビゲータ」 ->「グローバル・オブジェクト」に移動して「グローバル・テンプレート」ノードを開くと、そこにグローバル・テンプレートがすべてリストされます。簡単にアクセスできるように、グローバル・テンプレートはすべて言語によって識別され、次のようにグループごとにリストされています。

    global_objects.pngの説明が続きます
    図global_objects.pngの説明

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

17.6.1 グローバル・テンプレートの作成と編集

グローバル・テンプレートは、テンプレート・エディタを使用して操作します。新しいグローバル・テンプレートを作成するか、既存のグローバル・テンプレートの詳細を編集することができます。

新しいグローバル・テンプレートを作成するには、次のようにします。

  • 「グローバル・テンプレート」ノードを右クリックして、「新規テンプレート」オプションを選択します。

    新しいグローバル・テンプレートが作成されます。

既存のグローバル・テンプレートを編集するには、次のようにします。
  • 「グローバル・テンプレート」ノードを展開し、使用可能なグローバル・テンプレートのリストを表示します。

    使用可能なグローバル・テンプレートがすべて、言語グループごとにグループ化されてリストされます。

  • 必要な言語のノードを展開し、選択した言語で使用できるすべてのグローバル・テンプレートを表示します。たとえば、「Groovy」ノードを展開すると、Groovyに関連するグローバル・テンプレートがすべて表示されます。

    ノート:

    テンプレートの言語を変更してから保存すると、新しい言語グループに移動します。
  • 必要なグローバル・テンプレートをダブルクリックし、詳細を編集します。

    ノート:

    シード済のテンプレートは編集できず、読取り専用モードで開きます。

17.6.2 テンプレート・エディタの使用

テンプレート・エディタを使用すると、新しいグローバル・テンプレートを作成するか、既存のグローバル・テンプレートの詳細を編集することができます。テンプレート・エディタには基本的に次のタブがあります。

  • 「定義」タブ

  • 「バージョン」タブ

「定義」タブの使用

テンプレート・エディタの「定義」タブでは、グローバル・テンプレートのキー・プロパティを定義または変更することができます。これらは次のとおりです。
  • 名前 - グローバル・テンプレートの名前を表します。

  • テクノロジ - 新規グローバル・テンプレートに使用できるテクノロジがすべてリストされます。必要なテクノロジをリストから選択することも、汎用オプションとして「任意のテクノロジ」を使用することもできます。

  • 言語 - 新規グローバル・テンプレートに対して選択したテクノロジから導出して使用可能な言語がすべてリストされます。必要な言語をリストから選択することも、汎用オプションとして「任意の言語」を使用することもできます。

    ノート:

    既存のテンプレートまたは言語名ノードから新しいテンプレートの作成を試みると、テンプレート・エディタの言語フィールドはデフォルトではその言語に設定されます。ただし、新規テンプレートをグローバル・レベルから作成する場合、言語はデフォルトではリストの最初の言語に設定されます。
  • テンプレート・テキスト - テンプレートの編集エリアで、テンプレート・コードを追加または編集できます。フォーマットはプレーン・テキストのみです。高度な編集オプションまたは構文の強調表示が必要で、組込み変数またはodiRef関数にアクセスする必要がある場合、「テンプレート・テキスト」ボックスの右上隅にある編集アイコン(「編集」アイコン)をクリックします。「テンプレート・テキストの編集」エディタが開き、必要な操作や機能を実行できます。このエディタには、次の2つのタブがあります。

    • コマンド・テキスト — このタブには、コードの生成に使用されるメインのテンプレート・コマンドが表示されます。

    • 検証結果 — このタブには、最新の構文検証を実行した結果が表示されます。

「バージョン」タブの使用

テンプレート・エディタの「バージョン」タブには、すべての言語について、エディタで発生した追跡記録があります。テンプレートの作成と変更の完全な詳細がバージョンごとに記録されているので、グローバル・テンプレートで実行された操作を追跡するのも、必要なバージョンにリストアするのも容易です。

「バージョン」タブでは、グローバル・テンプレートについて次の詳細を管理できます。
  1. 作成および更新情報 - このノードには、グローバル・テンプレートを作成または更新したユーザーの情報と、作成または更新の日時が表示されます。

    • 作成者 - グローバル・テンプレートを作成したユーザーの名前を表します。

    • 作成日 - グローバル・テンプレートが作成された日時を表します。

    • 更新者 - グローバル・テンプレートの詳細を前回更新したユーザーの名前を表します。

    • 更新日 - グローバル・テンプレートが前回更新された日時を表します。

  2. 情報 - このノードには、次の情報が表示されます。

    • 内部ID - 内部IDは、リポジトリ内のオブジェクト・タイプごとに一意のプロパティです。一意のプロパティと呼ばれるのは、一意のリポジトリIDを持ち、オブジェクトの識別が可能なためです。

    • グローバルID - 作成/変更されたグローバル・テンプレートの一意のグローバルIDです。

17.6.3 グローバル・テンプレートのコンテキスト・メニュー項目の使用

言語ノードの下にリストされている既存のグローバル・テンプレートを右クリックし、グローバル・テンプレートで次のコンテキスト・メニューを操作します。

ノート:

オプションは、テンプレートのタイプ(シード済か、ユーザー作成か)によって異なります。
  • 開く - 「開く」を選択すると、選択したグローバル・テンプレートがテンプレート・エディタで開き、次の操作に進むことができます。

  • 表示 - 「表示」を選択すると、選択したグローバル・テンプレートの詳細が読取り専用モードで表示されます。

  • 新規 - 「新規」を選択すると、選択したテンプレートと同じ言語で、新しいグローバル・テンプレートが作成されます。

  • 選択の複製 - 「選択の複製」を選択すると、選択したグローバル・テンプレートの詳細が複製されます。

  • 削除 - 「削除」を選択すると、不要なテンプレートを削除できます。

  • バージョン - 選択したグローバル・テンプレートについて、次のようにバージョニングします。

    • VCSに追加

    • バージョン履歴

    • VCSからリストア

    • VCSバージョンの作成

  • インポート - 他のテンプレートから目的のテンプレートに、必要な詳細をインポートするには、「インポート」 -> 「テンプレートのインポート」を選択します。「テンプレートのインポート」ダイアログが開き、次のインポート詳細を選択できます。

    • インポート・タイプ - 必要なインポートのタイプを「複製」、「シノニム・モードINSERT」、「シノニム・モードUPDATE」、「シノニム・モードINSERT-UPDATE」の中から選択します。

    • ファイル・インポート・ディレクトリ - テンプレート詳細をインポートする元のテンプレートの場所を、参照して選択します。

    選択したディレクトリにあるテンプレートが表示され、インポートに必要なテンプレートを選択できます。

  • エクスポート - 選択したテンプレートの既存の詳細を目的の場所にエクスポートするには、「エクスポート」を選択します。「エクスポート」ダイアログが開き、次のエクスポート詳細を選択できます。

    • ディレクトリにエクスポート - テンプレート詳細のエクスポート先

    • エクスポート名 - エクスポート後のテンプレートの名前

    • 暗号化情報 - エクスポート・キーの詳細

    • 拡張オプション - 「XMLバージョン」、「XML文字セット」、「Java文字セット」の各詳細

  • エクスポート・ファイルと比較 - エクスポートしたテンプレートを現在のテンプレートと比較する場合は、このオプションを選択します。

    ノート:

    このオプションは、XKMに対してのみ使用できます。
  • メモの編集 - 必要なグローバル・テンプレートの「メモ」タブで詳細を編集する場合は、このオプションを選択します。

  • 割当て先 - 選択したグローバル・テンプレートを他のユーザーに割り当てる場合は、「割当て先」を選択します。

  • ロック - 選択したグローバル・テンプレートを「ロック」または「ロック解除」します。

  • 拡張 - 「拡張」を選択すると、ノードの全要素が表示されます。

  • 縮小 - 「縮小」を選択すると、ノードに表示されている全要素が折りたたまれます。