データをソースからターゲットへ移動する操作を定義するマッピングを設計した後は、プロセス・フローを作成および定義できます。プロセス・フローによりアクティビティをリンクさせ、異なるアクティビティ間に制御フローを定義できます。サポートされている制御フローとは、条件付きのブランチ、ループ、パラレル・フロー、シリアル依存です。アクティビティとは、マッピング、変換、または電子メール、FTPコマンド、オペレーティング・システムの実行可能ファイルなどの外部コマンドです。
プロセス・フローを使用して、マッピング間の依存関係を管理できます。マッピング、プロセス・フローおよびその他の実行可能なオブジェクトをスケジュールするには、「スケジュールの定義」を参照してください。
この章の内容は次のとおりです。
プロセス・フローでは、Oracle Warehouse Builderマッピングと電子メール、FTPおよびオペレーティング・システム・コマンドなどの外部アクティビティ間の依存関係を記述します。プロセス・フローを使用してETLプロセスの各手順を順序付けます。各手順にはマッピングが含まれる場合が多いですが、手動アクティビティ、FTP、電子メールなどの外部アクティビティを含めることもできます。
各プロセス・フローは「開始」アクティビティで始まり、フロー内のストリームごとに「終了」アクティビティで終了します。プロセス・フローはアクティビティのタイプとみなされているため、他のプロセス・フローを起動できます。
図8-1は、マッピング(MAP1)を起動するプロセス・フローの例を示したものです。マッピングが正常終了すると、Oracle Warehouse Builderから電子メール通知(EMAIL_SUCCEED)が送信され、別のプロセス・フロー(SUBPROC1)が起動されます。マッピングに失敗すると、Oracle Warehouse Builderから電子メール(EMAIL_FAIL)が送信され、プロセス・フローが終了します。
Oracle Warehouse Builderでプロセス・フローを設計する際には、プロセス・フロー・エディタというインタフェースを使用します。または、Oracle Warehouse Builderのスクリプト言語であるOMB*Plusを使用してプロセス・フローを作成し、定義することもできます。詳細は、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』を参照してください。
プロセス・フローはプロセス・フロー・パッケージにグループ化し、さらにプロセス・フロー・モジュールにグループ化する必要があります。プロセス・フロー・モジュールとプロセス・フロー・パッケージによって、プロセス・フローを管理および配布する2つのレベルが提供されます。モジュール・レベルまたはパッケージ・レベルのいずれかでプロセス・フローを検証、生成および配布できます。
同じモジュール内にあるため、他のプロセス・フローを起動するプロセス・フローを設計できます。同じモジュール内にある場合でも異なるモジュール内にある場合でも、あるパッケージから別のパッケージにプロセス・フローをコピーでき、さらにパッケージを別のモジュールにコピーすることもできます。これを行うには、デザイン・センターのメイン・メニューの「編集」にある「コピー」および「貼付け」コマンドを使用します。
たとえば、図8-1は、プロセス・フローSUBPROC1を含むプロセス・フローPROC1を示しています。PROC1を正常に実行するには、SUBPROC1およびPROC1を、プロセス・フロー・モジュールは同じでも別でも構いませんが、同じ場所に配布する必要があります。
ワークフロー・エンジンへのプロセス・フローの配布
Oracle Warehouse Builderのプロセス・フローは、Workflow Management Coalition(WfMC)に規定されているXMLプロセス定義言語(XPDL)標準に準拠しています。プロセス・フローを生成すると、Oracle Warehouse BuilderによりXPDL形式のXMLファイルが生成されます。生成されたXPDLは、WfMC標準をサポートするワークフロー・エンジンとの統合に使用できます。
Oracle Warehouse BuilderにはOracle Workflowとの統合が用意されています。Oracle Warehouse Builderのコントロール・センターから、Oracle Workflowにプロセス・フロー・パッケージまたはモジュールを配布できます。
キューブSALES_CUBE
は、PRODUCTS
、CATEGORIES
およびCUSTOMERS
のディメンジョン内のデータを使用してロードされます。これらのディメンジョンは、1つ以上のトランザクション表を使用してロードされます。データはすべてのディメンジョンが正常にロードされた場合のみキューブにロードする必要があります。
別のマッピングを作成してキューブおよびディメンジョンをロードします。ただし、3つのディメンジョンPRODUCTS
、CATEGORIES
およびCUSTOMERS
を最初にロードするシーケンシャル・フローにする必要があり、これらのディメンジョンが正常にロードされたら、キューブSALES_CUBE
がロードされます。プロセス・フローを使用してこれらのマッピングをリンクし、シーケンシャル・フローを作成します。
図8-2は、SALES_CUBEをロードするプロセス・フローを示しています。このフローは、「プロセス・フローの定義手順」にリストされている手順を完了すると作成されます。
前提作業
次のマッピングを作成します。
LOAD_PRODUCTS
: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをPRODUCTS
ディメンジョンにロードします。
LOAD_CATEGORIES
: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをCATEGORIES
ディメンジョンにロードします。
LOAD_CUSTOMERS
: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをCUSTOMERS
ディメンジョンにロードします。
LOAD_SALES_CUBE
: このマッピングは、ディメンジョンPRODUCTS
、CATEGORIES
およびCUSTOMERS
を使用してデータをキューブSALES_CUBE
にロードします。
プロセス・フローの定義手順
プロセス・フローを配布するOracle Workflowの場所を作成します。
Oracle Workflowの場所の作成の詳細は、「Oracle Workflowロケーション」を参照してください。
プロジェクト・ナビゲータで、プロセス・フローを作成するプロジェクト・ノードを開いてから、「プロセス・フロー」ノードを開きます。
「プロセス・フロー・モジュール」ノードを右クリックし、「新規プロセス・フロー・モジュール」を選択します。
「プロセス・フロー・モジュールの作成」ウィザードが表示されます。
「名前と説明」ページに、プロセス・フローの名前と説明(オプション)を入力します。
「ロケーション」フィールドの「接続情報」ページで、手順1で作成したロケーションを選択します。「終了」をクリックし、プロセス・フロー・モジュールを作成します。
「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。
プロセス・フロー・パッケージの名前と説明(オプション)を入力し、「OK」をクリックします。
「プロセス・フローの作成」ダイアログ・ボックスが表示されます。
プロセス・フローの名前と説明(オプション)を入力し、「OK」をクリックします。
プロセス・フロー・エディタが表示されます。エディタのキャンパスには、START1という名前の開始アクティビティとEnd_successという停止アクティビティが含まれています。エディタを使用してプロセス・フローの一部であるその他のアクティビティを追加し、それらの関係を定義します。
「コンポーネント・パレット」から、フォーク・アクティビティをエディタのキャンパスにドラッグ・アンド・ドロップします。
プロジェクト・ナビゲータから、LOAD_PRODUCTS
、LOAD_CATEGORIES
およびLOAD_CUSTOMERS
マッピングをドラッグし、エディタ・キャンバスにドロップします。
マッピングをドラッグし、キャンバスにドロップすると、マッピング・アクティビティはMAPPING_nなどのデフォルト名でキャンバス上に表示されます。アクティビティ名は、必要に応じて名前を変更できるように青でハイライト表示されます。各アクティビティに、マッピングとして同じ名前を入力します。たとえば、LOAD_PRODUCTS
マッピングの場合は、アクティビティ名をLOAD_PRODUCTS
と入力します。
これらのアクティビティは垂直線上で上下に「FORKアクティビティ」 の右に配置します。
次の推移を作成します。
FORKアクティビティからLOAD_PRODUCTS
アクティビティ
FORKアクティビティからLOAD_CATEGORIES
アクティビティ
FORKアクティビティからLOAD_CUSTOMERS
アクティビティ
推移を作成するには、ソース・アクティビティを選択します。カーソルがアクティビティ上に小さな水平矢印として表示されます。ターゲット・アクティビティ上をドラッグ・アンド・ドロップします。
コンポーネント・パレットから、ANDアクティビティをエディタにドラッグ・アンド・ドロップします。
条件推移をSUCCESSとして定義した条件で、LOAD_PRODUCTS
アクティビティからAndアクティビティに定義します。
条件推移とは事前定義済条件に基づく推移です。推移条件の定義手順:
エディタ・キャンバス上で、推移を選択します。
プロパティ・インスペクタに選択した推移のプロパティが表示されます。
「条件」プロパティ上で、省略記号ボタンをクリックします。
「プロパティの編集」ダイアログ・ボックスが表示されます。
「列挙済条件」を選択します。このオプションの下のリストで、「正常終了」を選択し、「OK」をクリックします。
条件推移をSUCCESSとして定義した条件で、LOAD_CATEGORIESアクティビティからAndアクティビティに定義します。
条件推移をSUCCESSとして定義した条件で、LOAD_CUSTOMERS
アクティビティからAndアクティビティに定義します。
プロジェクト・ナビゲータから、マッピングLOAD_SALES_CUBE
をエディタ・キャンバスにドラッグ・アンド・ドロップします。アクティビティ名をLOAD_SALES_CUBE
と入力します。
推移をANDアクティビティからLOAD_SALES_CUBE
アクティビティに作成します。ANDアクティビティを選択して小さい水平矢印を表示します。LOAD_SALES_CUBE
アクティビティ上にドラッグ・アンド・ドロップします。
条件推移をSUCCESSとして定義した条件で、LOAD_SALES_CUBEアクティビティからEnd_successアクティビティに作成します。
前提作業
プロセス・フローの配布を有効にするには、『Oracle Warehouse Builderインストレーションおよび管理ガイド』の説明に従ってOracle Workflowをインストールします。
プロセス・フローを定義するには、次の各項を参照してください。
(オプション) Oracle Workflowロケーションの作成
プロセス・フローの検証および生成
プロセス・フローのスケジューリング(オプション)
プロセス・フローが予測したとおりに実行されることを確認すると、「スケジュールの定義」に説明されるように、単一日または複数日に実行するようにプロセス・フローをスケジューリングできます。
プロセス・フォローの配布は、「配布および実行プロセスの手順」を参照してください。
Oracle Workflowロケーションを使用して、プロセス・フローを配布します。このロケーションはOracle Workflowスキーマに対応しています。
Oracle Workflowロケーションの作成手順:
ロケーション・ナビゲータで、「ロケーション」ノードを開いてから、「プロセス・フロー」ノードおよび「スケジュール」ノードを開きます。
「Oracle Workflow」ノードを右クリックし、 「新規Oracle Workflowロケーション」を選択します。
「Oracle Workflowロケーションの作成」ダイアログ・ボックスが表示されます。
「詳細」ページで、次のフィールドに情報を入力します。
名前: Oracle Workflowロケーションの名前を表します。
説明: ロケーションの説明を表します。説明の入力はオプションです。
接続タイプ: Oracle Workflowへの接続タイプを表します。次のいずれかのオプションを選択します。
ホスト:ポート:サービス: 事前設定が不要な簡易接続ネーミング・メソッドを使用して接続します。次の追加情報を入力します。
ホスト: Oracle DatabaseがOracle Workflow Managerとともにインストールされているシステム名。クライアント・ソフトウェアがOracle Databaseと同じシステム上にインストールされている場合は、コンピュータ名のかわりにローカルホストを入力できます。
ポート: Oracle DatabaseのSQLポート番号。
サービス: Oracle Databaseのサービス名。
SQL*NET接続: SQL*Netとのワークフロー接続の定義はサポートされていないため、接続をテストするとRTC-5336エラーが発生します。
スキーマ: ワークフロー・スキーマのユーザー名を表します。
パスワード: 「スキーマ」フィールドで指定したユーザーのパスワードを表します。
バージョン: Oracle Workflowのバージョンを表します。
プロセス・フローを使用するには、プロセス・フロー・モジュールを作成します。このモジュールは、プロセス・フローのグループを検証、生成および配布するために使用するコンテナです。プロセス・フロー・モジュールには、プロセス・フローを含むプロセス・フロー・パッケージが含まれます。
プロセス・フロー・モジュールの作成手順:
プロジェクト・ナビゲータの「プロセス・フロー・モジュール」ノードを右クリックし、「新規プロセス・フロー・モジュール」を選択します。
Oracle Warehouse Builderに、モジュールの作成ウィザードのようこそページが表示されます。
「次へ」をクリックします。
名前と説明ページで、プロジェクト内で一意のモジュール名を入力します。テキストの説明(オプション)を入力します。
「次へ」をクリックします。
ウィザードに、接続情報ページが表示されます。
モジュール名を基にウィザードによって作成されるデフォルトのロケーションはそのまま使用できます。またはリストから既存のロケーションを選択します。「編集」をクリックして接続情報を入力し、接続をテストします。
「次へ」をクリックします。
ウィザードに、「終了」ページが表示されます。新規プロセス・フロー・モジュールの名前と配布ロケーションを確認します。
「終了」をクリックすると、Oracle Warehouse Builderによって、モジュールの定義が格納され、プロジェクト・ナビゲータに名前が挿入されます。また、プロセス・フロー・パッケージを作成するように要求されます。
プロセス・フロー・モジュール内で、ユーザー・フォルダを作成し、製品ライン、機能グループまたはアプリケーション固有のカテゴリなどの基準に基づきプロセス・フロー・パッケージをグループ化できます。
ユーザー・フォルダには、その他のユーザー・フォルダとその他のプロセス・フロー・パッケージを含めることができます。ユーザー・フォルダのネスト・レベルに制限はありません。ユーザー・フォルダは移動、削除、編集または名前変更もできます。ユーザー・フォルダを移動するには、プロジェクト・ナビゲータでユーザー・フォルダを選択し、ツールバーの「切取り」をクリックします。次に、ユーザー・フォルダを移動するプロセス・フロー・モジュールを選択し、「貼付け」をクリックします。
ユーザー・フォルダに含まれるプロセス・フロー・パッケージは、対応する親プロセス・フロー・モジュールまたは別のプロセス・フロー・モジュールに移動できます。
ユーザー・フォルダを削除すると、ユーザー・フォルダとそこに含まれるすべてのオブジェクトがリポジトリから削除されます。
プロセス・フロー・モジュール内でのユーザー・フォルダの作成手順:
プロジェクト・ナビゲータで、「プロセス・フロー」ノードを開きます。「プロセス・フロー」モジュールまたはユーザー・フォルダを作成するユーザー・フォルダを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。
「アイテム」セクションで「ユーザー・フォルダ」を選択します。
「ユーザー・フォルダの作成」ダイアログ・ボックスが表示されます。
ユーザー・フォルダの名前を指定して「OK」をクリックします。
ユーザー・フォルダが作成され、「プロセス・フロー」モジュールの下のツリーに追加されます。
ユーザー・フォルダ内でのプロセス・フロー・パッケージの作成手順:
プロジェクト・ナビゲータで、「プロセス・フロー」ノードを開きます。ユーザー・フォルダを右クリックして「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。
「アイテム」セクションで、「プロセス・フロー・パッケージ」を選択します。
「OK」をクリックします。
「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用してプロセス・フローを作成します。次に、このプロセス・フロー・パッケージ内で必要なプロセス・フローを作成します。
プロセス・フロー・モジュールを作成すると、プロセス・フロー・パッケージを作成できます。プロセス・フロー・パッケージとは、プロセス・フローの配布元の追加グループ化メカニズムです。
プロセス・フロー・パッケージの作成手順:
プロジェクト・ナビゲータでプロセス・フロー・モジュールを右クリックし、「新規プロセス・フロー・パッケージ」をクリックします。
「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。
プロセス・フロー・パッケージの名前との説明(オプション)を入力します。
Oracle Workflowと統合する場合、パッケージ名はOracle Workflowによって8バイトに制限されています。
「OK」をクリックします。
Oracle Warehouse Builderでは、プロセス・フローを作成するように要求されます。
プロセス・フローのモジュールとパッケージを作成すると、プロセス・フローを作成できます。
プロセス・フローの作成手順:
プロジェクト・ナビゲータでプロセス・フロー・パッケージを右クリックし、「新規プロセス・フロー」をクリックします。
「プロセス・フローの作成」ダイアログ・ボックスが表示されます。
プロセス・フローの名前と説明(オプション)を入力します。
注意: プロセス・フローをスケジュールする場合には、付加的な考慮事項があります。スケジューリングするETLオブジェクトの物理名は25文字以内、ビジネス名は1,995文字以内に制限されます。この付加的な制限に従うと、Oracle Warehouse Builderでは、プロセス・フロー名に接尾辞_jobとプロセス・フローの配布および実行に必要な他の内部文字を追加できます。 |
「OK」をクリックします。
Oracle Warehouse Builderにより、プロセス・フロー・エディタが起動し、「開始」アクティビティと「終了成功」アクティビティを持つプロセス・フローが表示されます。
これで、アクティビティと推移を持つプロセス・フローをモデル化できます。
「プロセス・フローの定義の手順」の手順に従って続行します。
プロジェクト・ナビゲータを使用してプロセス・フロー内にアクティビティを追加できます。
アクティビティとは、マッピングの開始、またはドライブやディレクトリ上のファイルの存在確認など、プロセス・フローの作業単位を表します。Oracle Warehouse Builderでプロセス・フローを設計するときは、コンポーネント・パレットからアクティビティを選択し、キャンバスにドラッグしてパラメータを設定します。Oracle Warehouse Builderには、次のタイプのアクティビティが用意されています。
Oracle Warehouse Builder固有のアクティビティ: このアクティビティを使用すると、マッピング、変換またはその他のプロセス・フローなどのOracle Warehouse Builderオブジェクトを起動できます。プロセス・フローではオブジェクトが実行され、COMMIT文が提供されます。
ユーティリティ・アクティビティ: このアクティビティを使用すると、電子メール送信やファイル転送などのサービスを実行できます。
コントロール・アクティビティ: このアクティビティを使用すると、プロセス・フローの進行状況と方向を制御できます。たとえば、複数のアクティビティを同時に起動するには「FORKアクティビティ」を使用します。
ユーティリティ・タイプおよびコントロール・タイプのアクティビティの場合、「アクティビティ・テンプレートの作成および使用」の説明に従ってアクティビティ・テンプレートを定義すると、そのパラメータを再利用できます。たとえば、電子メールの場合、電子メール・テンプレートを使用してSMTPサーバー名、ポート番号、アドレス・リストおよび優先順位を指定します。これで、プロセス・フローに電子メール・アクティビティを追加するときにそのテンプレートを再利用できます。
各アクティビティの説明は、「プロセス・フローでのアクティビティの使用」を参照してください。
プロセス・フローへのアクティビティの追加手順:
プロジェクト・ナビゲータのプロセス・フローを右クリックしてプロセス・フローを開き、「開く」を選択します。
コンポーネント・パレットにリストされているアクティビティを表示します。
デフォルトでは、すべてのアクティビティがパレットにリストされます。特定のアクティビティを検索するには、パレットのリスト・ボックスを使用して、表示されるリストをOracle Warehouse Builder固有のアクティビティ、ユーティリティ・アクティビティまたはコントロール・アクティビティのいずれかのアクティビティのタイプに絞り込みます。
パレットからアクティビティを選択してキャンバスにドラッグします。
エディタにより、キャンバスにアクティビティが表示され、名前が青でハイライトされます。
デフォルト名を受け入れるには、「Enter」キーを押します。名前を変更するには、新規の名前を入力します。
エディタによって「構造」パネルにアクティビティがリストされます。このアクティビティのプロパティは、「プロパティ・インスペクタ」に表示されます。
「プロパティ・インスペクタ」で、「構造」パネルの上部の 「新規アクティビティ・パラメータ」をクリックしてアクティビティのパラメータを追加します。
アクティビティのパラメータは、アクティビティのタイプに応じて異なります。各アクティビティには、Oracle Warehouse Builderによって読取り専用パラメータ「名前」、「方向」および「データ型」が定義されます。また、各パラメータには、プロパティ・インスペクタで「バインド」、「リテラル」、「値」および「説明」の値を指定できます。
たとえば、図8-3は、通知アクティビティのパラメータを示しています。パラメータは、DEFAULT_RESPONSE、EXPAND_ROLES、HTML_BODY、PERFORMER、PRIORITY、RESPONSE_PROCESSOR、RESPONSE_TYPE、SUBJECT、TEXT_BODYおよびTIMEOUTです。
各パラメータには、次のプロパティがあります。
名前
アクティビティ・パラメータの名前のプロパティです。特定のパラメータについては、「例27-0、「プロセス・フローでのアクティビティ」で名前別でアクティビティを検索してください。
方向
方向プロパティはユーザーが作成していないパラメータに対しては読取り専用です。INの方向は、パラメータがそのアクティビティの入力パラメータであることを示します。
データ型
データ型プロパティはユーザーが作成していないパラメータに対しては読取り専用です。Oracle Warehouse Builderによってすべてのデフォルト・パラメータに適切なデータ型が割り当てられます。
バインド
ユーザーによって作成されていないパラメータのプロセス・フロー外からパラメータを渡す場合は、バインド・プロパティを使用します。パラメータをバインドのパラメータを割り当てると、値に割り当てるテキストはすべて上書きされます。
リテラル
フィールド「値」のパラメータに値を入力する場合は、値がリテラルか式であるかを示します。リテラル・データ型は、カレンダ・データ型以外はPL/SQLリテラル値仕様に従います。これらのデータ型は、プロセス・フローが異なるロケーションのデータ・ソースと対話するため標準書式で表されます。
リテラルに選択できる値はTrueまたはFalseです。リテラルをFalseに設定する場合は、値プロパティに入力した値はコントロール・センターで評価される有効なPL/SQL式である必要があります。リテラルをTrueに設定する場合、値はアクティビティのタイプに応じて異なります。アクティビティがマッピングまたはプロセス・フローなどのPL/SQLオブジェクトの場合、値はPL/SQLスニペットです。アクティビティがPL/SQLオブジェクトでない場合、値は言語依存です。
表8-1に、リテラル値の型、書式および例を示します。
表8-1 リテラル値の型の例
リテラル値の型 | 形式 | 例 |
---|---|---|
DATE |
YYYY-MM-DD |
2006-03-21 |
DATE |
YYYY-MM-DD HH24:MI:SS |
2006-03-21 15:45:00 |
TIMESTAMP |
YYYY-MM-DD HH24:MI:SS.FF9 |
2006-03-21 15:45:00.000000000 |
TIMESTAMP_TZ |
YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM |
2006-03-21 15:45:00.000000000 +01:00 |
YMINTERVAL |
[+-]YYYYYYYYY-MM |
+000000001-01 |
DMINVERVAL |
[+-]DDDDDDDDD HH24:MI.SS.FF9 |
+000000001 01:01:01.000000001 |
値
これはパラメータの値です。一部のパラメータについては、値リストから選択できます。その他のパラメータには、デフォルト値が割り当てられています。この値は、新しい値を入力するか、「バインド」フィールドを使用して上書きできます。可能な値のリストまたはデフォルト値がない場合は、値を入力する必要があります。
説明
各プロパティの説明を入力できます(オプション)。
プロセス・フローの設計中に、既存のアクティビティを再利用できます。たとえば、プロセス・フローでマッピングに失敗するたびに、同じ管理者グループに電子メールを送信できます。電子メール・アクティビティ用のテンプレートを作成したら、そのアクティビティを多数のプロセス・フローで使用したり編集します。
アクティビティ・テンプレートの作成手順:
プロジェクト・ナビゲータで、「プロセス・フロー」ノードの下にある「アクティビティ・テンプレート」ノードにナビゲートします。
テンプレート格納用のフォルダを作成するには、「アクティビティ・テンプレート」ノードを右クリックして「新規アクティビティ・テンプレート・フォルダ」を選択します。
アクティビティ・テンプレート・フォルダに名前を割当て、「OK」をクリックします。
作成予定のテンプレートのタイプごとにフォルダを作成することを検討してください。たとえば、電子メール・テンプレートとFTPテンプレートの格納用に、別のフォルダを作成できます。
アクティビティ・テンプレートの作成ウィザードが表示されます。
注意: ウィザードが自動的に表示されない場合は、フォルダを右クリックして「新規アクティビティ・テンプレート」を選択します。 |
アクティビティ・テンプレートの作成ウィザードに表示されるプロンプトに従って、名前と説明ページ、パラメータ・ページおよびサマリー・ページを完了します。
プロセス・フローでのテンプレートの使用手順は、「アクティビティ・テンプレートの使用」を参照してください。
アクティビティ・テンプレートのオブジェクトのネーミング規則は、「プリファレンス」ダイアログ・ボックスの「ネーミング・プリファレンス」・セクションで選択するネーミング・モードに応じて異なります。Oracle Warehouse Builderでは、ワークスペースの各オブジェクトのビジネス名と物理名が維持されます。ビジネス名は詳細な論理名です。物理名はOracle Warehouse Builderでコード生成時に使用される名前です。
あるネーミング・モードで作業中にオブジェクトに名前を付けると、Oracle Warehouse Builderでは他のモード用にデフォルト名が作成されます。したがって、ビジネス名モードで作業中に、大/小文字の両方、特殊文字および空白を含むアクティビティ・テンプレート名を割り当てると、Oracle Warehouse Builderではオブジェクトのデフォルトの物理名が作成されます。
作成するアクティビティ・テンプレートの名前を割り当ててタイプを選択します。また、オプションでテンプレートの説明も記述します。
ネーミング・アクティビティ
物理ネーミング・モードでは、アクティビティ名は1文字から30文字までの英数字で、空白は使用できません。ビジネス・ネーミング・モードでは、200文字以内という制限があり、空白と特殊文字を使用できます。両方のネーミング・モードにおいて、名前はプロジェクト全体で一意にする必要があります。
アクティビティの記述
説明は4,000文字までの英数字を使用でき、空白を含めることができます。アクティビティ・テンプレートの説明の指定はオプションです。
「アクティビティ・テンプレート」
次のアクティビティ・テンプレートは、リストから使用可能です。
割当
電子メール
Enterprise Java Bean
FTP
ファイルが存在
Javaクラス
手動
通知
OMBPlus
ステータスの設定
SQLPlus
ユーザー定義
待機
「アクティビティ・テンプレート」リストで選択したアクティビティのタイプに基づいてパラメータが表示されます。
アクティビティのデフォルト値を入力します。このデフォルト値は、プロセス・フローでアクティビティ・テンプレートを使用するときに、保持または編集できます。たとえば、電子メール・アクティビティ・テンプレートにはパラメータFROM_ADDRESSとREPLY_TO_ADDRESSが含まれます。プロセス・フローで電子メール・アクティビティ・テンプレートを使用する場合は、これらのパラメータのデフォルト値を別の値で上書きできます。
アクティビティ・テンプレートを使用する手順は、次のとおりです。
プロジェクト・ナビゲータで、「プロセス・フロー」ノードの下のプロセス・フロー・モジュールにナビゲートします。
プロセス・フロー・エディタを開くには、「プロセス・フロー」を右クリックして「開く」を選択します。
「グラフ」メニューから、「追加」を選択してから、 「使用可能なオブジェクト」を選択します。
「使用可能なオブジェクトの追加」ダイアログ・ボックスが表示されます。
使用するアクティビティ・テンプレートを選択し、「OK」をクリックします。
アクティビティ・テンプレートがプロセス・フロー・エディタのキャンバスに追加されます。プロセス・フロー内の「アクティビティ・テンプレート」は、通常のアクティビティと同様に動作します。
または、手順3と4のかわりに、アクティビティ・テンプレートをプロジェクト・ナビゲータからプロセス・フロー・エディタのキャンバスにドラッグ・アンド・ドロップできます。
アクティビティを編集するには、キャンバスのアクティビティを選択し、「構造」タブを使用してアクティビティの詳細を変更します。
推移を使用して、アクティビティがプロセス・フローで発生する順序および条件を示します。推移を使用すると、直前のアクティビティの完了状態を基にアクティビティを実行できます。
推移をキャンバスに追加する場合、デフォルトでは推移に適用される条件はありません。プロセス・フローは、前のアクティビティの終了後、前のアクティビティの状態に関係なく続行します。
ソース・アクティビティ・タイプによって、条件が適用されていない推移のセマンティクスは異なります。アクティビティ・タイプがFORKの場合、各推移がプロセス・フローで新しいフローを開始する複数の無条件推移があります。ソース・アクティビティ・タイプがFORKではない場合は、1つの無条件推移のみが存在し、他の条件遷移がアクティブ化されていない場合(IF...THEN...ELSIF...ELSE...END
PL/SQL文の最後のELSE
条件など)に使用されます。
有効な推移は、次のルールに従う必要があります。
STARTおよびEND以外のすべてのアクティビティには、少なくとも1つの受信推移を設定する必要があります。
複数の受信推移を設定できるのは、ANDおよびORアクティビティのみです。
複数の無条件の送信推移を設定できるのは、FORKアクティビティのみです。
FORKアクティビティに設定できるのは、無条件の送信推移のみです。
列挙された結果セットがあるアクティビティには、考えられる各結果に対する送信推移、または無条件の送信推移が設定されている必要があります。
アクティビティには、複雑な式の送信推移を設定しないことも、複数設定することもできます。
複雑な式の送信推移が設定されたアクティビティは無条件の送信推移である必要があります。
END_LOOP推移には、関連するFOR_LOOPまたはWHILE_LOOPアクティビティへの無条件推移が1つのみ設定されている必要があります。
FOR_LOOPまたはWHILE_LOOPの終了
結果からの推移は、「ループ」が原因で実行される可能性のあるアクティビティには接続しないでください。
推移を使用した依存関係の作成手順:
プロセス・フロー・エディタで選択モードで作業中の場合は、中心線に沿ってアクティビティ・アイコンの右の境界にマウスをポイントします。
カーソルが小さい水平の矢印として表示されます。この状態で、マウス・ボタンを使用してアクティビティに接続できます。
マウスの左ボタンを押しながら次のアクティビティにスクロールします。スクロールを開始すると、カーソルは下にプラス記号が付いた矢印として表示されます。カーソル矢印の下のプラス記号が円に変わるまで、次のアクティビティの方向にスクロールし続けます。マウス・ボタンを放すと、2つのアクティビティが接続されます。
2つのアクティビティの間に矢印が表示されます。推移にデフォルト名が割り当てられ、この推移が「構造」パネルに表示されます。この推移のプロパティは、「プロパティ・インスペクタ」に表示されます。
「プロパティ・インスペクタ」で、推移の次の属性を表示または編集します。
名前: エディタによって変更できるデフォルト名が割り当てられます。
説明: 推移の説明(オプション)を入力できます。
条件: キャンバス上に初めて描画する推移はデフォルトでは無条件です。デフォルトを上書きして条件を適用するには、推移を選択します。プロパティ・インスペクタに推移プロパティが表示されます。「条件」フィールドの右の省略記号ボタンをクリックし、「プロパティの編集」ダイアログ・ボックスで推移に適用する条件を選択します。条件を選択すると、キャンバスの推移線の関連アイコンが表示されます。
ソース: このプロパティは読取り専用で、接続内の最初のアクティビティを示します。
ターゲット: このプロパティは読取り専用で、接続内の2番目のアクティビティを示します。
Sqlplusなどの一部のアクティビティには追加構成が必要です。特定のアクティビティのこれらの構成詳細は、「第27章、「プロセス・フローでのアクティビティ」にリストされています。
プロセス・フローとアクティビティでは概念を渡すPL/SQLパラメータがサポートされており、データを渡してパラメータ化で再利用できます。これは、パラメータまたは変数として実装されたデータ・ストアを通じて実現されます。プロセス・フローでは、データ・ストア間でデータを渡すことができます。
パラメータを使用すると、プロセス・フローとそのアクティビティまたはサブプロセス間でデータを渡すことができます。
変数を使用すると、プロセス・フローの実行期間中維持される一時データの記録域を使用できます。変数はアクティビティ間のデータ移動に使用されます。
図8-4に、データが渡される方向を示します。
プロセス・フローは、次のルールに従ってデータ・ストア間でデータを渡しています。
プロセス・フロー変数は、プロセス・フロー・パラメータから初期化できますが、逆にプロセス・フロー・パラメータをプロセス・フロー変数から初期化することはできません。
アクティビティ・パラメータは、プロセス・フロー変数およびプロセス・フロー・パラメータ間で双方向にデータを渡すことができます。
推移式は、そのソース・アクティビティ・パラメータ、プロセス・フロー・パラメータおよびプロセス・フロー変数と照合して評価できます。
データ・ストアには、同じスコープ内の別のデータ・ストアからはアクセスできません。
ネームスペースを使用すると、PL/SQLと同様に、内部スコープのデータ・ストアで外部スコープのデータ・ストアを非表示にできます。非表示のデータ・ストア名は、データ・ストア名をプロセス・フロー名またはアクティビティで修飾することによって参照できます。次に例を示します。
My_PROC.VAR1
ネームスペースによって、同じスコープ内の別のデータ・ストアからデータを参照することはできません。
データ・ストアは、外部スコープ内の別のデータ・ストアにバインドでき、これによって、双方向のデータの受渡しがサポートされます。
プロセス・フローのバインドは、次のルールがあるPL/SQLと同じセマンティクスに従います。
すべてのデータは、プロセス・フロー内で値で渡されます。
変数はバインドによって初期化できます。値を戻すことはできません。
INOUTパラメータは、外部スコープ内のINパラメータにバインドできます。値で渡される出力値は、監査後に廃棄されます。
変数は、データをプロセス・フロー・パラメータに渡すことができないため、割当て演算子を使用してこれを行い、変数およびパラメータにバインドします。
Oracle Warehouse Builderでは、パラメータ値の導出に関するPL/SQL式の使用、および複雑な式の推移の使用がサポートされています。
式では、データ・ストアに対して正しく入力された値を生成する必要があります。VARCHAR
からの自動変換がサポートされています。式が推移と関連付けられている場合、結果はBOOLEANであることが必要です。
評価時に、式はその式が含まれている外部スコープにアクセスします。このため、アクティビティのパラメータの式では、その式の評価でプロセス・フロー変数およびプロセス・フロー・パラメータを使用できます。
PL/SQL式は、アクティビティのプロセスを要求したコントロール・センター・ユーザーを対象に実行されます。ただし、Oracle Workflowスキーマがリモート・データベース・インスタンスでホスト管理されている場合は、かわりに生成済データベース・リンクの有効ユーザーが使用されます。別のコントロール・センター・ユーザーは、プロセス・フローの構成および評価ロケーションの指定によって選択できます。この結果、式は、コントロール・センター・ユーザーにアクセス可能なPL/SQLファンクションを参照できます。
Oracle Warehouse Builderでは、現在のアクティビティおよび所有プロセス・フローの追加データ値を式で使用できます。
表8-2に、これらのグローバル式の値を示します。
表8-2 グローバル式の値
識別子 | タイプ | 説明 |
---|---|---|
NUMBER_OF_ERRORS |
NUMBER |
アクティビティの実行完了時にレポートされたエラー数 |
NUMBER_OF_WARNINGS |
NUMBER |
アクティビティの実行完了時にレポートされた警告の数 |
RETURN_RESULT |
VARCHAR2(64) |
結果のテキスト表示。「SUCCESS」、「WARNING」、「ERROR」など |
RETURN_RESULT_NUMBER |
NUMBER |
RESULT_RESULT1 = SUCCESS2 = WARNING3 = ERRORの列挙。 |
RETURN_CODE |
NUMBER |
整数0から255。アクティビティ固有であり、オペレーティング・システムのリターン・コードと同じ |
PARENT_AUDIT_ID |
NUMBER |
コール側プロセス・フローの監査ID |
AUDIT_ID |
NUMBER |
アクティビティの監査ID |
表8-3に、提供される追加定数を示します。
推移エディタを使用して、列挙された条件の1つを指定するか、複合条件の式を記述します。列挙された条件は正常終了、警告およびエラーなどです。表8-4に示すようにキャンバスに表示されます。
表8-4 推移条件のタイプ
アイコン | 推移条件 | 説明 |
---|---|---|
正常終了 |
プロセス・フローは、直前のアクティビティが正常終了した場合にのみ続行されます。 |
|
警告 |
プロセス・フローは、直前のアクティビティが警告で終了した場合にのみ続行されます。 |
|
エラー |
プロセス・フローは、直前のアクティビティがエラーで終了した場合にのみ続行されます。 |
|
複合 |
プロセス・フローは、直前のアクティビティで式に指定した基準を満たす値が戻された場合にのみ続行されます。 |
|
拡張 |
プロセス・フローは、直前の通知アクティビティが拡張結果で終了した場合にのみ続行されます。 |
拡張推移条件は、拡張結果を戻す唯一のアクティビティ・タイプであるため、通知アクティビティにのみ有効です。このアイコンをアクティビティが取得するのは、#MAIL、#NOMATCH、#TIEまたは#TIMEOUT
の結果に設定されている場合です。
表8-5に、拡張推移の出力と説明を示します。
表8-5 拡張推移の出力と説明
出力 | 説明 |
---|---|
#NOMATCH |
候補が最低票数を得票しなかった投票通知の結果。 |
#TIE |
同一得票数となった投票通知の結果。 |
|
通知にメール・エラーが発生しました。通知の電子メールを受信しなかった受信者がいるため、メールが取り消されました。 |
#TIMEOUT |
通知は、構成された時間内に応答を受信しませんでした。 |
アクティビティに送信アクティビティが1つしかない場合は、表8-4にリストされた条件のいずれかを指定するか、推移を無条件にしておくことができます。
複数の送信推移に関する使用ルールは、アクティビティのタイプに応じて異なります。一般ルールでは、SUCCESS、WARNING、ERRORおよびUNCONDITIONALをそれぞれ1つと無制限の数の複合条件を使用できます。ただし、AND、FORKおよびORなどのコントロール・アクティビティを使用する場合は例外です。
あるアクティビティからの複数の送信推移を追加する場合は、条件が競合しないことを確認してください。競合が発生するのは、プロセス・フローの論理で複数の送信推移がTRUEと評価される場合です。
表8-5に、MAP1に可能な3つの完了状態に基づいて異なるアクティビティがトリガーされるプロセス・フローの一部を示します。一度に満たすことができるのはこれらの条件の1つのみであるため、競合は発生しません。無条件推移または別の条件付き推移を追加しようとすると、2つの推移条件がTRUEとなり、プロセス・フローが無効になります。
シナリオ
会社はレガシー・システムに依存しており、そのシステムでは、データはフラット・ファイルに毎日書き込まれ、作成日時に基づいた一意の名前がファイルに割り当てられています。ソースとして生成済フラット・ファイルを使用して、リレーショナル・データベースにデータを転送およびロードするマッピングを作成するとします。ただし、マッピングには固定の名前を持つファイルが必要ですが、この場合はファイルが作成されるたびにソース・ファイル名は変更されます。
解決策
Oracle Warehouse Builderでは、特定のディレクトリに生成済ファイルを置き、ファイル名を固定ファイル名に変更して、従属するマッピングを開始するプロセス・フローを設計できます。これでマッピングのソースとして固定フラット・ファイル名を使用できます。
事例
この事例では、変数名を使用するフラット・ファイルを生成するレガシー・システムからデータを抽出するために、プロセス・フローおよびマッピングを作成する方法について説明します。プロセス・フローはユーザー定義アクティビティの使用状況によって異なります。この事例には、次の情報が前提となります。
生成済フラット・ファイル: レガシー・システムにより、毎日の売上データが含まれるフラット・ファイルが生成されます。ファイルはc:\staging_files
ディレクトリに保存され、日時に基づいたsales010520041154.dat
などのファイル名が付けられます。生成されたすべてのファイルは、sales
という語で始まり、その後にタイムスタンプ情報が続く形で同じディレクトリに保存されます。
固定フラット・ファイル名: 生成済ファイルの名前をs_data.dat
に変更することに決定します。これは、マッピングでフラット・ファイル・ソースとして参照する名前です。
プロセス・アクティビティ: OWF_EXT
という名前のプロセス・フローを設計し、DOSのバッチ・コマンドを実行して生成済ファイルをコピーし、s_data.dat
として保存して、元の生成済ファイルを削除します。
この目的は、必ず生成済フラット・ファイルの名前が適切に変更されてからマッピングの実行をトリガーするロジックを作成することです。
生成ごとに名前が変わる生成済フラット・ファイルからデータを抽出するには、次の各項を参照してください。
ユーザー定義済アクティビティが正常に完了したら、マッピングを開始するプロセス・フローを作成します。プロセス・フローの作成の詳細は、「プロセス・フローを定義する手順」を参照してください。
図8-6は、生成済フラット・ファイルからデータを抽出するために作成するプロセス・フローを示しています。
この項では、生成済ファイルの名前を変更するDOSコマンドの指定方法について説明します。ユーザー定義済アクティビティから発行するDOSコマンドは、次のようになります。
copy c:\staging_files\sales*.* c:\staging_files\s_data.dat del c:\staging_files\sales*.*
最初のコマンドは、一時ファイルをs_data.dat
という固定の名前のファイルにコピーします。2番目のコマンドは、最初に生成されたファイルを削除します。
Oracle Warehouse Builderにコマンド・スクリプトが格納されているファイルを指定するか、またはOracle Warehouse Builderのユーザー・インタフェースにコマンドを格納できます。次の方法から1つを選択します。
Oracle Warehouse Builder内にスクリプトを保持する必要がある場合はこの方法を選択します。スクリプトが小さく、非常に柔軟にする必要がない場合はこの方法の使用を検討してください。
この方法では、SCRIPTパラメータの値列にスクリプトを書き込むか、またはコピーして貼り付けます。COMMANDパラメータには、c:\winnt\system32\cmd.exe
などのDOSシェル・コマンドのパスを入力します。また、PARAMETER_LISTパラメータの「値」列に${Task.Input}
変数を入力します。
この事例では示されていませんが、Oracle Warehouse Builder内にスクリプトを保持している場合はスクリプト内に置換変数を使用できます。これにより、サーバー・ファイル、アカウントおよびパスワードが変更されたときにアクティビティを更新する必要がなくなります。
表8-6には、ユーザー定義アクティビティに入力できる置換変数がリストされています。Workingは、ランタイム・サービスをホストするコンピュータを示し、この事例ではローカル・コンピュータを示します。Remoteはランタイム・サービス・ホスト以外のサーバーを示します。「ユーザー定義アクティビティの構成」の説明に従って、アクティビティを構成する際のリモート・サーバーおよびローカル・サーバーを指定します。これらの値は、配布時にロケーションを登録するときに設定されます。
表8-6 ユーザー定義アクティビティの置換変数
変数 | 値 |
---|---|
${Working.Host} |
ランタイム・サービス・ホストのロケーションのホスト値。 |
${Working.User} |
ランタイム・サービス・ホストのロケーションのユーザー値。 |
${Working.Password} |
ランタイム・サービス・ホストのロケーションのパスワード値。 |
${Working.RootPath} |
ランタイム・サービス・ホストのロケーションのルート・パス値。 |
${Remote.Host} |
ランタイム・サービス・ホスト以外のロケーションのホスト値。 |
${Remote.User} |
ランタイム・サービス・ホスト以外のロケーションのユーザー値。 |
${Remote.Password} |
ランタイム・サービス・ホスト以外のロケーションのパスワード値。 |
${Remote.RootPath} |
ランタイム・サービス・ホスト以外のロケーションのルート・パス値。 |
${Deployment.Location} |
配布ロケーション。 |
追加メンテナンスに問題がない場合は、Oracle Warehouse Builderに必要なコマンドを含むスクリプトが記載されているファイルを指定できます。この方法はより柔軟で、プロセス・フローの実行中にパラメータを渡すことができます。
次の例は、Oracle Warehouse Builderの外の外部プロセスのスクリプトをコールする方法、およびプロセス・フローの実行中にパラメータをスクリプトに渡す方法を示しています。この例ではWindowsのオペレーティング・システムを想定しています。その他のオペレーティング・システムには、適切な対応コマンドを発行します。
ユーザー定義アクティビティ以外でのスクリプトのコール手順:
スクリプトを作成し、ファイル・ディレクトリに保存します。Fたとえば、次のようなスクリプトを記述し、c:\staging_files\rename_file.bat:
として保存できます。
copy c:\staging_files\%1*.dat c:\staging_files\s_data.dat
del c:\staging_files\%1*.dat
このサンプル・スクリプトでは、プロセス・フローの実行中にパラメータ%1をスクリプトに渡します。このパラメータは、sales010520041154.
などの、一時ファイル名の最初の文字を含む文字列を表します。
キャンバスの「開始」アクティビティを選択し、「構造」ビューのアクティビティ・パラメータを表示して編集します。
開始パラメータを追加するには、キャンバスの「開始」アクティビティを選択し、「構造」タブの「新規アクティビティ・パラメータの追加」をクリックします。FILE_STRING
という名前の開始パラメータを作成します。実行中、Oracle Warehouse Builderからrename_file.bat
スクリプト内の%1
パラメータに渡すFILE_STRING
の値を入力するように要求されます。
キャンバスのユーザー定義アクティビティを選択し、そのパラメータを編集します。
COMMANDパラメータには、「値」という名前の列内のスクリプトへのパスを入力します。必要に応じて、スクロール・バーを使用してスクロール・ダウンし、列を表示します。この例では、c:\staging_files\rename_file.bat
と入力します。
PARAMETER_LISTでは、「バインド」という名前の行をクリックし、開始アクティビティFILE_STRINGに定義したパラメータを選択します。
外部プロセスのその他すべてのパラメータのデフォルト設定を受け入れます。
ユーザー定義アクティビティの送信推移に条件を適用する場合は、ユーザー定義アクティビティを構成するときにその条件の意味を定義する必要があります。
ユーザー定義アクティビティの構成手順:
ナビゲーション・ツリーのプロセス・フローを右クリックして、「構成」を選択します。
プロセス・フローの構成プロパティが新規タブに表示されます。
ユーザー定義アクティビティ・ノード、ユーザー定義アクティビティ、パスの設定ノードの順に展開します。Oracle Warehouse Builderにより構成設定が表示されます。
リモート・ロケーション、作業ロケーションおよび配布ロケーションに関連する置換変数を使用してOracle Warehouse Builderユーザー・インタフェースにスクリプトを書き込んだ場合は、この手順を完了します。リストを使用して値を選択します。
この事例では置換変数を使用しないため、デフォルト値を使用します。
プロセス・フローを配布するコンピュータに配布ロケーションを設定します。
実行設定ノードで、「ステータスとしてリターンを使用」をTrueに設定します。
この構成手順により、プロセス・フローは外部プロセスのリターン・コードを使用してどの送信推移をアクティブ化するかを判断します。この事例のプロセス・フローでは、外部プロセスが正常な値を返す場合は、プロセス・フローの正常な推移が継続され、ダウンストリーム・マッピングが実行されます。
これで、s_data.dat
をソースとして使用してマッピングを設計できます。PL/SQLマッピングまたはSQL*Loaderマッピングを作成できます。PL/SQLでは、フラット・ファイル・ソースを外部表にマップし、PL/SQLマッピングに使用可能なすべての演算子を使用して残りのマッピングを設計します。SQL*Loaderでは、フラット・ファイル・ソースをステージング表にマップし、SQL*Loaderマッピングで許可された演算子にマッピングを制限します。
マッピングを配布します。また、プロセス・フローOWF_EXT
を含むプロセス・フロー・パッケージまたはモジュールも配布します。
プロセス・フローを手動で実行します。プロセス・フローを実行すると、Oracle Warehouse Builderにより、スクリプトFILE_STRINGに渡すために作成したパラメータの値を入力するように要求されます。この事例では、?sales
(疑問符マークはセパレータ)と入力します。外部アクティビティにより、コマンドrename_file.bat sales
が実行されます。
シナリオ
会社の開発者が、データを抽出、変換およびロードするマッピングを設計しました。マッピングのソース・データは、ETLプロセスを実行するサーバーとは異なるサーバーに存在します。リモートのコンピュータからファイルを転送して依存マッピングをトリガーするロジックを作成する必要があります。
解決策
Oracle Warehouse Builderでは、ファイル転送プロトコル(FTP)コマンドを実行するプロセス・フローを設計でき、続いてマッピングを開始できます。プロセス・フローを有効にするには、FTPコマンドに、ランタイム・サービスがインストールされているサーバーからのデータ転送、またはそのサーバーへのデータ転送が含まれる必要があります。ランタイム・サービスがインストールされていない2つのコンピュータ間でデータを移動するには、最初にデータをランタイム・サービスがインストールされているホスト・コンピュータに転送し、次にデータを2番目のコンピュータに転送します。
プロセス・フローを設計し、FTPコマンドの成功または失敗に応じて様々なアクティビティを開始できます。
事例
この事例では、あるコンピュータから別のコンピュータへファイルを転送する方法および依存マッピングを開始する方法について説明します。この事例では、すべての必要なサーバー、ファイルおよびユーザー・アカウントの例を示します。
データ・ホスト・コンピュータ: ソース・データをホストするコンピュータには、ユーザー名とパスワード、ホスト名、データが存在するディレクトリが必要です。この事例では、データをホストするコンピュータはsalessrv1
という名前のUNIXサーバーです。ソース・データは、/usr/stage
ディレクトリにあるsalesdata.txt
というフラット・ファイルです。
ランタイム・サービス・ホスト・コンピュータ: この事例では、Windowsオペレーティング・システムとともに、Oracle Warehouse Builderおよびランタイム・サービスがlocal
というコンピュータにインストールされています。local
によりマッピングおよびプロセス・フローが実行されます。
マッピング: この事例には、ソースとしてc:\temp
のlocal
に格納されたsalesdata.txt
のコピーを使用するsalesresults
というマッピングが含まれます。
FTPコマンド: この事例では、Windowsオペレーティング・システムでの基本的なFTPの使用例を示します。
salessrv1
にあるフラット・ファイルがlocal
コンピュータに確実にコピーされるロジックを作成し、salesresults
マッピングの実行をトリガーすることが目的です。
ファイルを転送して依存マッピングを開始するには、次の各項を参照してください。
前の項の手順を完了すると、プロセス・フローを実行できます。
ロケーションとは、ウェアハウス環境内の様々なデータ・ソースおよび接続先を論理的に表したものです。このシナリオでは、ロケーションはフラット・ファイルへのアクセスに必要なホストおよびパス名情報を論理的に表しています。Oracle Warehouse Builderでは、プロセス・フローを配布および実行するためにこれらの定義が必要になります。プロセス・フローを配布する場合は、各ロケーションに関連付けられたホストおよびパス名情報を入力するよう要求されます。データ転送に関与するコンピュータごとにロケーションを定義する必要があります。
ロケーションを定義するには、ロケーション・ナビゲータで適切なロケーション・ノードを右クリックし、 「新規」を選択します。salessrv1の場合は、「ロケーション」ノードの「ファイル」を右クリックし、REMOTE_FILES
というロケーションを作成します。ローカルにこの手順を繰返し、ロケーションLOCAL_FILES
を作成します。
リモート・ロケーションの場合は、ホスト名、ファイルへのルート・パス、ユーザー名およびパスワードを入力します。Oracle Warehouse Builderではパスワードの安全性は保持されます。ローカル・ロケーションの場合は、ホスト名のみが必要です。
プロセス・フロー・エディタを使用して、成功するとsalesresults
マッピングに推移するFTPアクティビティを使用するプロセス・フローを作成します。
プロセス・フローは図8-7のように表示されるはずです。
この項では、リモート・サーバーsalessrv1
からローカル
・コンピュータにデータを転送するためのコマンドを指定する方法について説明します。アクティビティ・ビューのFTPアクティビティ・パラメータに値を入力することにより、FTPパラメータを指定します。
Oracle Warehouse Builderでは、より柔軟にFTPコマンドを指定できます。次の方法から1つを選択します。
方法1: Oracle Warehouse Builder内へのスクリプトの書込み: Oracle Warehouse Builder内にスクリプトを保持する場合、またはサーバーに対するパスワード・セキュリティが必要条件である場合は、この方法を選択します。
この方法では、SCRIPTパラメータの値列にスクリプトを書き込むか、またはコピーして貼り付けます。COMMANDパラメータには、c:\winnt\system32\ftp.exe
など、FTP実行可能ファイルへのパスを入力します。また、PARAMETER_LISTパラメータの「値」列にTask.Input
変数を入力します。
方法2: Oracle Warehouse Builderの外で保持されるスクリプトのコール: パスワード・セキュリティの問題がない場合、Oracle Warehouse BuilderではFTPコマンド、ユーザー名およびパスワードを含むスクリプトを持つファイルを指定できます。
ファイル・システムのファイルをコールするには、Oracle Warehouse Builderがそのファイルを指定するようにPARAMETER_LISTに適切なコマンドを入力します。Windowsオペレーティング・システムの場合、次のように入力します。
?"-s:<file path\file name>"?
"たとえば、Cドライブの一時ディレクトリにあるmove.ftp
という名前のファイルをコールするには、次を入力します。
?"-s:c:\temp\move.ftp"?
このメソッドの場合、SCRIPTパラメータを空白のままにします。
次の例は、方法1について説明しています。スクリプトおよび置換変数を使用する例です。スクリプトは、salessrv1
にある正しいディレクトリにナビゲートされ、置換変数はセキュリティおよび様々な用途のために利用されます。
この例ではWindowsのオペレーティング・システムを想定しています。その他のオペレーティング・システムには、適切な対応コマンドを発行します。
FTPアクティビティ内でのスクリプトの定義手順:
キャンバスのFTPアクティビティを選択し、プロパティ・インスペクタのアクティビティ・パラメータを表示して編集します。
COMMANDパラメータには、値列のFTP実行可能ファイルへのパスを入力します。必要に応じて、スクロール・バーを使用して右へスクロールし、値列を表示します。
Windowsオペレーティング・システムの場合は、通常、FTP実行可能ファイルはc:\winnt\system32\ftp.exe
に格納されています。
PARAMETER_LISTパラメータの場合は、Task.Input
変数を入力します。
Oracle Warehouse Builder内でスクリプトを定義し、WindowsのFTPを使用している場合は、PARAMETER_LISTに?"-s:${Task.Input}"?
を入力する必要があります。
UNIXの場合は、?"${Task.Input}"?
を入力します。
「構造」タブのSCRIPTパラメータにナビゲートし、ハイライト表示します。
プロパティ・インスペクタにSCRIPTパラメータのプロパティが表示されます。
プロパティ・インスペクタに表示される「値」フィールドの右の省略ボタンをクリックします。
SCRIPT値エディタが表示されます。FTPコマンドをエディタに書込みまたはコピー・アンド・ペーストします。
図8-8のスクリプトには${Remote.User}
と${Remote.Password}
が含まれます。これらは置換変数です。詳細は、「置換変数の使用」を参照してください。
置換変数は、Oracle Warehouse BuilderでFTPスクリプトを記述して格納することを選択した場合にのみ使用できます。
置換変数を使用すると、サーバー・ファイル、アカウントおよびパスワードが変更されたときにFTPアクティビティを更新する必要がなくなります。たとえば、FTPアクティビティを使用して特定のディレクトリの下のsalessrv1
のファイルにアクセスする10個のプロセス・フローを作成するとします。ファイルを移動すると、置換変数を使用しない場合は各FTPアクティビティを個別に更新する必要があります。W置換変数を使用すると、更新が必要になるのは「ロケーションの定義」で説明するロケーション情報のみです。
置換変数はパスワードのセキュリティを維持する上でも重要です。サーバー・パスワードの置換変数を使用したFTPアクティビティが実行されると、関連ロケーションに入力した安全なパスワードへの変数が解決されます。
表8-7には、FTPアクティビティに入力できる置換変数がリストされています。Working
は、ランタイム・サービスをホストするコンピュータを示し、この事例ではローカル・コンピュータを示します。Remote
はデータ転送間連のその他のサーバーを示します。FTPアクティビティを構成する場合は、どのサーバーをリモートにし、どのサーバーをローカルにするかを指定します。詳細は、「FTPアクティビティの構成」を参照してください。
表8-7 FTPアクティビティに対する置換変数
変数 | 値 |
---|---|
${Working.RootPath} |
ランタイム・サービス・ホストのロケーションのルート・パス値。 |
${Remote.Host} |
ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するホスト値。 |
${Remote.User} |
ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するユーザー値。 |
${Remote.Password} |
ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するパスワード値。 |
${Remote.RootPath} |
ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するルート・パス値。 |
完全なプロセス・フローの構成の一環として、FTPアクティビティを構成します。
FTPアクティビティの構成手順:
ナビゲーション・ツリーのプロセス・フローを右クリックして、「構成」を選択します。
「FTPアクティビティ」、「パスの設定」の順に展開します。Oracle Warehouse Builderにより構成設定が表示されます。
REMOTE_LOCATIONにはRemoteのロケーションを設定し、LOCAL_LOCATIONにはWorkingのロケーションを設定します。
クリックして「ステータスとしてリターンを使用」を選択します。これで、プロセス・フローはFTPリターン・コードを使用してどの送信推移をアクティブ化するかを判断できます。この事例のプロセス・フローでは、FTPが正常な値1を返す場合は、プロセス・フローは正常に推移が継続されてsalesresults
マッピングが実行されます。
これらの手順を完了すると、プロセス・フローを配布および実行できます。プロセス・フローを配布するには、右クリックして、プロセス・フロー・モジュールまたはナビゲーション・ツリーのパッケージから「配布」を選択し、デプロイメント・マネージャを起動します。デプロイメント・マネージャにより、REMOTE_LOCATIONおよびLOCAL_LOCATIONを登録するよう要求されます。
これで、プロセス・フローを実行できます。