Warehouse Builderの知識がある場合は、ルーチン・タスクを簡略化して最優良用法を実装するソリューションを設計できます。エキスパートと呼ばれるこれらのソリューションは、エキスパート・エディタで開発できます。
この章の内容は次のとおりです。
エキスパートは、ルーチン・タスクまたは複雑なタスクを自動化するために、最優良用法を使用して上級ユーザーが開発するソリューションです。 エキスパートを開発するには、Warehouse Builder、Warehouse Builderスクリプト言語、およびオープン・ソースのプログラミング言語であるツール・コマンド言語(Tcl)に関する実用的な知識が必要です。
たとえば、共通アクティビティがフラット・ファイルからデータを抽出し、そのデータをOracleデータベースの表にロードしているとします。このアクティビティを完了するには、次のステップを実行する必要があり、Warehouse Builderの様々なユーザー・インタフェースをナビゲートします。
フラット・ファイル・モジュールを定義する。
ソース・ファイルを識別する。
データ・フォーマットを指定する。
外部表を定義する。
Oracleデータベース・モジュールおよびロケーションを定義する。
マッピングを定義する。
すべてのオブジェクトを検証、生成および配布する。
マッピングを実行する。
このアクティビティを実行するユーザーを支援するために、必要なすべてのインタフェースを呼び出し、カスタマイズ済の指示を提供し、入力用のプロンプトを表示するエキスパートを設計できます。エキスパートでは、ステップはタスクで定義され、実行の順序は推移で定義されます。
エキスパートは再利用および共有でき、また、ユーザー・インタフェースおよびOMB Plusスクリプト言語を含むWarehouse Builderのすべての領域にアクセスできます。エキスパートではJavaプログラムを呼び出すこともできます。
関連項目:
|
図35-1に、エキスパートがユーザーにどのように表示されるかを示します。次の3つの独立したウィンドウが表示されます。
進捗グラフ: エキスパートは編集キャンバスに表示されるのと同じフォーマットで表示されますが、実行された推移および現行タスクが強調表示されます。このウィンドウはパンくずリストと同じ目的で使用され、エキスパートでのユーザーの進捗を追跡できます。また、このウィンドウを便利なデバッグ・ツールとしても使用できます。進捗グラフを表示するかどうかを制御するプロパティをエキスパートに設定できます。
タスク・アシスタント: 現行タスクの名前、目的および使用方法が表示されます。この情報は、タスクの定義の一部としてプロパティ・シートに定義します。タスク・アシスタントを表示するかどうかを制御するプロパティをエキスパートに設定できます。
タスク表示: タスクがユーザーから取得した情報によって、様々なタイプのグラフィカル・ユーザー・インタフェースが表示されます。これらのタスクには、オブジェクト・エディタなどのWarehouse Builderコンポーネントを表示するものや、図に示すファイル・セレクタなどの基本機能を提供するものがあります。この例では、ユーザーがファイルを選択すると、そのファイル名が入力パラメータとして次のタスクに渡されます。この値を変数に保管して後で使用することもできます。
エキスパート・エディタには、エキスパートを作成、変更および配布するために必要なキャンバスとパレットが用意されています。
図35-2に、サンプル・エキスパートが表示されたエキスパート・エディタを示します。タスクはキャンバス上にアイコンとして表示されます。タスクを連結している矢印は推移です。推移はタスクが実行される順序を示します。
エキスパート・エディタは、プロセス・フロー・エディタとよく似ています。プロセス・フローを作成した経験がある場合は、エキスパートの開発に早く慣れることができます。ただし、重要な類似点と同様に、重要な相違点もあります。
作業単位: プロセス・フローでの作業単位はアクティビティです。エキスパートでの基本的な作業単位はタスクです。
推移: プロセス・フローもエキスパートも、推移を使用して基本的な作業単位を連結します。推移には条件を付けることができます。
変数: プロセス・フローにもエキスパートにも、タスク間の受け渡しが可能なローカル変数を定義できます。
終了タスク: プロセス・フローには、正常終了、警告および失敗の終了アクティビティがありますが、エキスパートには単一の終了タスクしかありません。
サブプロセス: 他のプロセス・フローをオープンするプロセス・フローを設計できるように、他のエキスパートをオープンするエキスパートを設計できます。このように使用される場合は、ネストされたエキスパートと呼ばれます。
コード: プロセス・フローではXPDLワークフロー規格に準拠したXMLが生成されます。エキスパートではTclが生成されます。
エキスパートの開発プロセスを開始する前に、次の問いに回答して計画を立てる必要があります。
エキスパートによって達成したいジョブは何ですか。
たとえば、スキーマのデータのリフレッシュなどです。
このジョブを達成するためにWarehouse Builderで実行するステップは何ですか。
たとえば、ソース・データ・ファイルおよびターゲット・スキーマのロケーションの識別や、マッピングまたはプロセス・フローの実行などです。
エキスパートをどの程度柔軟にしますか。つまり、ユーザーのエキスパートへの入力をどのように行いますか。
エキスパートは、ユーザー入力がまったくなくても実行することができます。または、ステップごとにユーザー入力のプロンプトを表示することもできます。たとえば、エキスパートは特定のスキーマまたはユーザーが選択したスキーマのどちらかをリフレッシュすることができます。
エキスパートを定義するには、次のタスクを実行します。
注意: 管理者は、グローバル・エクスプローラでエキスパートを直接開発できます。プロジェクト・エクスプローラのかわりに、グローバル・エクスプローラで次のステップを実行します。管理者は、「エキスパートの公開」で説明するように、エキスパートを公開することもできます。 |
次の手順でエキスパートを作成します。
プロジェクト・エクスプローラで、「エキスパート」を右クリックし、ポップアップ・メニューから「新規」を選択します。
「エキスパート・モジュールの作成」ダイアログ・ボックスが表示されます。
モジュールの名前と説明を入力します。
詳細は、「ヘルプ」をクリックしてください。
ウィザードに進むボックスを選択します。
「エキスパートの作成」ダイアログ・ボックスが表示されます。
モジュールの名前と説明を入力します。
エキスパート・エディタが表示されます。エキスパートの開発を開始できます。
次の手順でエキスパート・モジュールを編集します。
プロジェクト・エクスプローラで、「エキスパート」フォルダを展開表示し、エキスパートのモジュールを展開表示します。
エキスパートをダブルクリックします。
エキスパート・エディタが表示されます。
タスクは、エキスパートの作業の単位を表します。Warehouse Builderでエキスパートを設計する場合、エキスパート・エディタ・パレットからタスクを選択してキャンバスにドラッグします。エキスパート・エディタでは、「開始」タスクと「終了」タスクが最初からキャンバスに表示されています。
次の手順でエキスパートにタスクを追加します。
パレットからタスクを選択し、キャンバスにドラッグします。
または
「エキスパート」メニューから、「追加」を選択し、次にポップアップ・メニューからカテゴリを選択します。
エディタには、キャンバス上のタスクが表示されます。
「タスク・エディタ」で、タスクの様々なプロパティ用のタブに入力します。
プロパティは、タスクのタイプによって異なります。すべてのタスクには、「目標」、「指示」、「事前処理」、「後処理」の各プロパティがあります。「カスタム・ダイアログ」および「OMBタスク」のように、追加のプロパティを持つタスクもあります。
これらのプロパティの詳細は、「タスク・エディタ」タイトル・バーのポップアップ・メニューから「ヘルプ」をクリックしてください。
エクスプローラおよびオブジェクト・インスペクタを使用して、タスクのパラメータに値を入力します。
タスクには、入力パラメータと出力パラメータがあります。入力パラメータへの値の入力方法については、「タスク間でのデータ値の移動」を参照してください。
タスクの名前を変更する場合、またはタスクに説明を追加する場合は、パレットのアイコンを右クリックし、ポップアップ・メニューから「詳細の編集」を選択します。
タスクの編集ダイアログ・ボックスが表示されます。詳細は、「ヘルプ」をクリックします。
比較的単純なエキスパートを作成し、より複雑なエキスパートを開発する際にそれらを組み合せて使用することができます。キャンバスに追加されたエキスパートは、ネストされたエキスパートと呼ばれます。ネストされたエキスパートは、1つの受信推移と1つ以上の送信推移を持つシングル・タスクとして機能します。
キャンバス上では、既存のフローは親グラフになり、ネストされたエキスパートは子グラフになります。
次の手順でネストされたエキスパートを追加します。
「エキスパート」メニューから、「追加」を選択し、次に「ネストされたエキスパート」を選択します。
または
エキスパートを「エクスプローラ」の「使用可能なオブジェクト」タブからキャンバスにドラッグ・アンド・ドロップします。
「ネストされたエキスパートを追加」ダイアログ・ボックスが表示されます。
モジュール・フォルダを展開表示し、リストから1つ以上のエキスパートを選択します。「OK」をクリックします。
エキスパートは、キャンバス上に単一のアイコンとして表示されます。
タスクからエキスパートに推移を描き、エキスパートからタスクへも描きます。
次の手順でネストされたエキスパートを表示します。
グラフィック・ツールバーには、ネストされたエキスパートの内容を表示するためのアイコンがあります。
エキスパート・アイコンを拡大して個々のタスクを表示するには、ツールバーの「子グラフの拡張」をクリックします。このようにすると、ネストされたエキスパートはキャンバスの鳥瞰図と同じように表示されます。
ネストされたエキスパートを縮小表示してアイコンに戻すには、タイトル・バーの右側にある矢印をクリックします。
ネストされたエキスパートのタスクおよび推移を完全に検査するには、ツールバーの「子グラフの表示」をクリックします。キャンバスにはネストされたエキスパートのみが表示され、そのプロパティはエクスプローラ、オブジェクトの詳細、タスク・エディタの各ウィンドウに表示されます。ネストされたエキスパートのアクセス権は読取り専用です。
ネストされたアイコンを縮小表示して大きなエキスパートのコンポーネントに戻すには、ツールバーの「親グラフに戻る」をクリックします。
次の手順でネストされたエキスパートを編集します。
ネストされたエキスパートをそのエキスパート・エディタで開き、変更を加えます。変更を保存するとすぐに、親エキスパートにその変更が反映されます。ただし、エキスパート・パラメータに対する変更は唯一の例外です。
ネストされたエキスパートのプロパティを変更した場合は、親のネストされたエキスパートを削除してから追加する必要があります。
推移は、エキスパートでのタスクの実行順序を示します。先行するタスクの完了状態に基づいてタスクを実行する条件付き推移を使用できます。条件付き推移を使用すると、エラーを安全に処理し、ユーザーがタスクを取り消した場合に代替アクションを提供できるエキスパートを開発できます。
シングル・タスクに複数の送信推移を用意することができますが、実行されるのは1つのみです。2つ以上の推移がtrueと評価される場合は、最初の推移のみが実行されます。
次の手順で2つのタスクを推移で連結します。
1つ以上のタスクをキャンバスに追加し、「エキスパート・キャンバスへのタスクの追加」のステップを実行します。
ツールバーの「選択」ツールをクリックします。
前のタスクの上にポインタを配置すると、矢印の形になります。ポインタをクリックして次のタスクにドラッグします。
ポインタの下にプラス記号が表示され、ポインタが次のタスクに近づくと丸に変化することに注意してください。
エディタでは、2つのタスク間に矢印が表示され、推移にデフォルトの名前が割り当てられ、推移が「エクスプローラ」と「オブジェクト・セレクタ」に表示されます。
次のタスクの実行に条件を付ける場合は、「オブジェクトの詳細」ウィンドウで推移に条件を割り当てます。表35-1で条件について説明します。
すべてのタスクを連結した後に、「自動レイアウト」ツールをクリックすると、キャンバス上でタスクが実行順に均等に配置されます。
タスクには、入力パラメータと出力パラメータの両方があります。
入力パラメータは、タスクの実行に影響します。この値は、開発者が提供することも、ユーザーが提供できるようなエキスパートを設計することもできます。
出力パラメータは、タスクによって返されます。この値は、タスクによって実行された作業の結果です。
パラメータのバインドまたは定数と変数を使用すると、タスク間でデータ値を移動することができます。
タスクの入力パラメータは、別のタスクの出力パラメータ、グローバル定数、またはグローバル変数にバインドできます。バインドは、入力パラメータに値を移動するための最も簡単な方法です。
次の手順でパラメータをバインドします。
ソースとターゲットの各タスクを作成します。
エキスパート・エクスプローラで、ターゲット・タスクの入力パラメータを選択します。
「オブジェクトの詳細」ウィンドウで、「バインド元」フィールドをクリックし、ポップアップ・メニューから出力パラメータ、変数、または定数を選択します。
すべてのタスクで、次に示す定義済定数を使用できます。
OMB_CURRENT_PROJECT
: 現行プロジェクトの名前を保管します。
OMB_CURRENT_SESSION
: 現行プロジェクトの識別子を保管します。
OMB_CURRENT_USER
: 現行ユーザーのユーザーIDを保管します。
定数は、「定数」フォルダの下の「エクスプローラ」に表示されます。
出力パラメータの値を保管するためのカスタム変数を使用できます。これは、カスタム・ダイアログ・タスクを使用する場合に特に便利です。GUI_RETURN_VALUE
出力パラメータは、hash表と同じように機能する配列であるためです。個々の値は、入力パラメータに渡す前に解析する必要があります。単一の値を複数のタスクに渡す場合、または、値をフローの下方に渡す場合には、変数を使用できます。
次の手順で変数を作成します。
エクスプローラで、「変数」フォルダを選択します。
エクスプローラの先頭にある「作成」アイコンをクリックします。
VARIABLE
という名前の変数が「変数」フォルダに表示されます。
VARIABLE
を選択し、「オブジェクトの詳細」ウィンドウを使用して、名前、データ型、およびその他のパラメータを変更します。
または、Tclコマンドを使用して、「タスク・エディタ」の「事前処理」タブまたは「後処理」タブで変数を宣言できます。
次の手順で変数に値を割り当てます。
タスク・エディタの「事前処理」タブまたは「後処理」タブでTclの変数割当文を使用します。次に例を示します。
この例では、RETURN_VALUE
出力パラメータの値をTHIS_OBJECT_NAME
という名前の変数に割り当てています。
set THIS_OBJECT_NAME $RETURN_VALUE;
次の例では、GUI_RETURN_VALUE
パラメータの最初のコンポーネント(COMP1
)の値をTHIS_TABLE
という名前の変数に割り当てています。
set THIS_TABLE $GUI_RETURN_VALUE(COMP1)
次の手順で変数を使用します。
タスクの入力パラメータを変数にバインドできます。変数は「オブジェクトの詳細」ウィンドウのポップアップ・メニューに表示されます。
あらゆるタスクの「事前処理」タブまたは「後処理」タブの、あらゆるTclコマンドでも変数を使用できます。また、OMBタスクの「メイン」タブでも使用できます。
エキスパートは、エキスパート・エディタまたはデザイン・センターから検証、生成および開始できます。
次の手順で、エキスパート・エディタからエキスパートを検証、生成または開始します。
「エキスパート」メニューから、「検証」、「生成」または「開始」コマンドを選択します。
または
ツールバーで「検証」、「生成」または「開始」をクリックします。
「コンパイル結果」ウィンドウの「メッセージ」タブには、すべての検証エラーおよび警告が表示されます。メッセージが選択されると、Warehouse Builderでは問題を修正するために、キャンバス、エクスプローラおよび「オブジェクトの詳細」ウィンドウ上のエラーのあるタスクまたは推移が選択されます。
次の手順で、デザイン・センターからエキスパートを検証、生成または開始します。
プロジェクト・エクスプローラで、プロジェクトの「エクスプローラ」フォルダを展開表示し、次にモジュール・フォルダを展開表示します。
エキスパートを右クリックし、ポップアップ・メニューから「検証」、「生成」または「開始」を選択します。
または
エキスパートを選択し、「設計」メニューから「検証」、「生成」または「開始」コマンドを選択します。
エキスパートには、実行中の動作に影響するいくつかの設定があります。エキスパートの開発中に設定する方法と、開発者または他のユーザーが実際の作業中に使用中のエキスパートを設定する方法が必要になります。
次の手順でエキスパートに開発用のパラメータを設定します。
エキスパート・エクスプローラで、ツリーの最上位にあるエキスパートを選択します。
「オブジェクトの詳細」ウィンドウで、次の設定を選択します。
進捗グラフの表示
タスク・アシスタントの表示
ログ・ウィンドウの表示
開始前にすべて保存
ロギング
2つのロギング・パラメータ(「ログ・ウィンドウの表示」および「ロギング」)を使用すると、エキスパートの実行中にタスク・アシスタントにスクリプト・メッセージが表示されます。このメッセージは、問題の診断に役立ちます。
エキスパートのテストおよびデバッグを簡略化するための設定は、実際の作業でエキスパートを使用する際には必要ありません。
次の手順でエキスパートに実作業用のパラメータを設定します。
エキスパート・エクスプローラで、ツリーの最上位にあるエキスパートを選択します。
「オブジェクトの詳細」ウィンドウで、次の設定の選択を解除します。
ログ・ウィンドウの表示
開始前にすべて保存
ロギング
次の設定を選択します。
ウィンドウを実行時に閉じる
完了時の終了ダイアログ
スタンドアロンで実行
完了時にアシスタントを閉じる
エラー時に保存済に戻す
「メニュー・アイテム表示文字列」フィールドにエキスパートの名前を入力します。
次の手順でエキスパートを公開します。
Warehouse Builderの管理者権限がある場合は、次のいずれかの場所からエキスパートを他のユーザーに対して使用可能にできます。
グローバル・エクスプローラ: プロジェクト・エクスプローラからグローバル・エクスプローラの「エキスパート」フォルダのモジュールにエキスパートをコピー・アンド・ペーストします。
プロジェクト・エクスプローラ: フォルダを右クリックして「エキスパートの追加/削除」を選択します。
デザイン・センター・メニュー: 「ツール」メニューで「エキスパートの追加/削除」を選択します。
Windowsの「プログラム」メニュー: 「バッチ・ファイルからのエキスパートの実行」の説明に従って、Windowsの「プログラム」メニューから実行できるバッチ・ファイルを作成します。
「パブリック・エキスパート」フォルダに表示されるエキスパートは、すべてのプロジェクトのすべてのユーザーが使用できます。「パブリック・エキスパート」フォルダの内容を走査して、Warehouse Builder内でユーザーの目的に関連したエキスパートを探すことができます。
または、デザイン・センターのメニューにパブリック・エキスパートが含まれるようにカスタマイズして、エンド・ユーザーがエキスパートにアクセスしやすくできます。たとえば、マッピングの共通タイプを作成するためのエキスパートを設計した場合は、マッピング・フォルダの右クリック・メニューをカスタマイズして、この特殊なエキスパートを含めることができます。
ユーザーがWarehouse Builderデザイン・センターを開かずにエキスパートを実行するためのバッチ・ファイルを作成できます。次に説明するステップを実行してください。
エキスパートを開始するTclスクリプトを作成します。
OMB Plusを開いてTclファイルの名前を渡すバッチ・ファイルを作成します。
Windowsプラットフォームの場合は、「スタート」メニューまたはデスクトップにバッチ・ファイルへのショートカットを作成します。
次の手順でTclスクリプトを作成します。
テキスト・エディタを使用して、次のWarehouse Builderスクリプト・コマンドを含むスクリプトを作成します。
OMBCONN
: Warehouse Builderリポジトリにユーザーを接続します。
OMBCC
: エキスパートのロケーションにコンテキストを設定します。
OMUSTART EXPERT
: エキスパートを開始します。
OMBDISCONNECT
: セッションを閉じます。
例35-1では、SCOTT-PC
という名前のホストのGCCREP
リポジトリにSCOTT
という名前のユーザーを接続します。エキスパートの名前はREFRESH_DATA_EXPERT
であり、EXPERT_SALES_MODULE
のSALES_PROJECT
にあります。
これらのコマンドの詳細は、Oracle Warehouse Builderスクリプト・リファレンスを参照してください。
例35-1 エキスパートを開始するサンプルTclスクリプト
OMBCONN scott/tiger@scott-pc:1521:orcl USE REPOS 'GCCREP' OMBCC '/SALES_PROJECT/EXPERT_SALES_MODULE' OMUSTART EXPERT 'REFRESH_DATA_EXPERT' OMBDISCONNECT
次の手順でバッチ・ファイルを作成します。
テキスト・エディタを使用して、OMB Plusを開いてTclファイルを渡すバッチ・ファイルを作成します。次の例に示すように、完全パスを指定してください。
c:\oracle\product\BiToolsHome_1\owb\bin\win32\OMBPlus.bat c:\owb_scripts\Update_Sales_Data.tcl
次の手順でショートカットを作成します。
Windowsのヘルプで「スタート」メニューにプログラムを追加する方法を検索します。バッチ・ファイルへのショートカットを作成します。