データをソースからターゲットに移動するための操作を定義するマッピングを設計した後は、プロセス・フローを作成および定義できます。マッピングと、Warehouse Builder外部のアクティビティを相互に関連付けるには、プロセス・フローを使用します。外部のアクティビティの例として、電子メール、FTPコマンドおよびオペレーティング・システム実行可能ファイルなどがあげられます。
この項は、すべてのアクティビティの参照用として使用します。この項では、アクティビティをタイプ別に分類することから始めます。各アクティビティの詳細は、この項の他の部分に記載されているアルファベット順のリストを参照してください。
表21-1に、これまでWarehouse Builder内で作成したオブジェクトを表すアクティビティを示します。受信推移は1つ以上指定できます。送信推移については、正常終了、警告、エラーおよび無条件の推移をそれぞれ一度ずつ使用できます。また、複合条件推移をいくつでも定義できます。
表21-1 オブジェクトを表すアクティビティ
アイコン | アクティビティ | 簡単な説明 |
---|---|---|
![]() |
|
データ・プロファイリングに使用される既存のデータ監査モニターをプロセス・フローに追加します。 |
![]() |
|
既存のマッピングをプロセス・フローに追加します。 |
![]() |
|
既存のプロセス・フローをプロセス・フロー内に埋め込みます。 |
![]() |
|
既存の変換をプロセス・フローに追加します。 |
データのコミット
設計オブジェクトを表すアクティビティを追加すると、プロセス・フローではこれらのアクティビティが個別のトランザクションとして評価されます。たとえば、マッピング・アクティビティを追加する場合、各マッピングが独立してコミットおよびロールバックされます。この設計の場合、1回のコミット文またはロールバック文ですべてのマッピングを制御することは不可能です。
複数のマッピングをまとめてコミットまたはロールバックするには、各マッピングをコールするスクリプトに関連付けられたSQLPlusアクティビティを使用してプロセス・フローを設計することを検討してください。詳細は、「プロセス・フロー・エディタを介したマッピングのコミット」を参照してください。
表21-2に、各ユーティリティ・アクティビティをリストし、関連するアイコンを示します。
表21-2 ユーティリティ・アクティビティ
アイコン | アクティビティ | 簡単な説明 |
---|---|---|
![]() |
|
値を変数に割り当てます。 |
![]() |
|
電子メールを送信します。たとえば、プロセス・フローのアクティビティのステータスに関する電子メール・メッセージを送信します。 |
![]() |
|
「ファイルが存在」アクティビティを使用して、指定されたドライブまたはディレクトリにファイルが存在するかどうかをチェックします。 |
![]() |
|
プロセス・フローを停止します。プロセス・フローを再開するには、手動操作が必要です。 |
![]() |
|
ユーザーに電子メールを送信し、ユーザーがプロセス・フローの処理方法を示すレスポンスをリストから選択できるようにします。 |
![]() |
|
成功、警告またはエラーのステータスを通知します。 |
![]() |
|
指定した時間分、プロセス・フローの進捗を遅延します。 |
表21-3に、プロセス・フローの制御に使用するアクティビティを示します。表では、関連付けられているアイコンを示します。また、各アクティビティに使用できる受信および送信推移の数も示します。
表21-3 コントロール・アクティビティ
アイコン | アクティビティ | 簡単な説明 | 受信推移 | 送信推移 |
---|---|---|---|---|
![]() |
|
別のアクティビティの起動前に全受信アクティビティを完了することを指定します。 |
2つ以上が使用可能。受信推移の数は、上位のFORKからの送信推移の数以下であることが必要です。 |
無条件推移および複合推移は使用不可。 |
![]() |
終了(成功) |
パスを成功として指定します。 |
1つ以上が使用可能 |
使用不可 |
![]() |
終了(エラーあり) |
パスをエラーで終了として指定します。 |
1つ以上が使用可能 |
使用不可 |
![]() |
終了(警告あり) |
パスを警告付きで終了として指定します。 |
1つ以上が使用可能 |
使用不可 |
![]() |
|
forループまたはwhileループの終了を定義します。 |
1つ以上が使用可能 |
ForループまたはWhileループに1つのみ。 |
![]() |
|
終了ループを使用してこのアクティビティを使用し、繰り返す構造を定義します。 |
必要な終了ループから1つ、およびさらに他のアクティビティから複数 |
ループ条件が1つおよび必要な終了条件が1つ |
![]() |
|
1つのアクティビティが完了してから2つ以上のアクティビティを起動します。 |
1つ以上が使用可能 |
2つ以上の無条件推移のみ |
![]() |
|
指定された2つ以上のアクティビティのいずれかの完了後に、アクティビティを起動します。 |
2つ以上が使用可能。 |
無条件推移が1つのみ。 |
![]() |
|
排他的論理和およびif-then-elseシナリオを定義します。 |
||
![]() |
|
条件がTRUEであるかぎり、他のアクティビティを実行します。 |
必要な終了ループから1つ、およびさらに他のアクティビティから複数 |
ループ条件が1つおよび必要な終了条件が1つ |
表21-4に、プロセス・フローで開始可能なOSアクティビティを示します。
表21-4 OSアクティビティ
アイコン | アクティビティ | 簡単な説明 |
---|---|---|
![]() |
|
プロセス・フロー中にファイル転送プロトコル・コマンドを起動します。たとえば、FTPアクティビティを使用して、マッピングが実行されるコンピュータにデータ・ファイルを移動します。 |
![]() |
|
プロセス・フローでSQL*Plusスクリプトを実行します。 |
![]() |
|
事前定義されていないアクティビティを表します。事前定義されていないアクティビティをプロセス・フローに取り込めるようにします。 |
ユーザーにOSアクティビティの制御を完全に許可するのは望ましくないため、Warehouse Builderでは、プロセス・フローで開始できるOSアクティビティを指定できます。直接実行の権限を付与または取り消すか、「セキュリティ制約の設定」で説明するように、サード・パーティによる実行を必須にすることで、ユーザーのオペレーティング・システム・コマンドの実行権限を制限します。また、プロキシ・コマンドおよびパラメータを使用し、さらに細かいアクセス制御が可能です。これらのコマンドやパラメータは、すべての実行を安全に行うためにも使用できます。
このセキュリティ機能は、$owb_home
/owb/bin/admin
ディレクトリにあるRuntime.properties
ファイルのプロパティの設定で制御します。このファイルには、コントロール・センター・サービスを実行するコントロール・センター・プロパティ値が記述されています。コントロール・センター・サービスの起動時には、このファイルは読取り専用に設定されています。このファイルを変更した場合、コントロール・センター・サービスを再起動しないと、変更は有効になりません。
デフォルトでは、OSアクティビティ・コマンドのsecurity_constraint
はDISABLEDに設定されています。
property.RuntimePlatform.0.NativeExecution.FTP.security_constraint = DISABLED property.RuntimePlatform.0.NativeExecution.Shell.security_constraint = DISABLED property.RuntimePlatform.0.NativeExecution.SQLPlus.security_constraint = DISABLED
OSアクティビティを有効化するには、security_constraint
をNATIVE_JAVA
またはScheduler
に設定する必要があります。
property.RuntimePlatform.0.NativeExecution.FTP.security_constraint = NATIVE_JAVA property.RuntimePlatform.0.NativeExecution.Shell.security_constraint = NATIVE_JAVA property.RuntimePlatform.0.NativeExecution.SQLPlus.security_constraint = NATIVE_JAVA
NATIVE_JAVA
に設定すると、コントロール・センター・サービスによる直接実行が可能になり、SCHEDULER
によりDBMS_SCHEDULER
を使用して強制的に実行されます。
USER DEFINED(Shell)
、FTP
およびSQLPlus
の各アクティビティ・タイプには、proxy_command
プロパティとproxy_parameter_list
プロパティ(オプション)という2つのプロパティがあります。
プロキシ・コマンドを指定すると、このプロキシ・コマンドがユーザー指定のコマンドおよびパラメータのかわりに実行されます。ユーザー指定のコマンドおよびパラメータは、プロキシ・パラメータに続くパラメータとしてプロキシ・コマンドに渡されます。これにより、プロキシ・コマンドはユーザーのコマンドが実行されるコンテキストになります。
proxy_command
プロパティを使用して、プロキシ・コマンドを指定できます。
アクティビティにプロキシ・コマンドを設定するには、次のコマンドを使用して、プロキシ・コマンドおよびプロキシ・パラメータ・リスト(オプション)を設定します。
property.RuntimePlatform.0.NativeExecution.FTP.proxy_command property.RuntimePlatform.0.NativeExecution.FTP.proxy_parameter_list property.RuntimePlatform.0.NativeExecution.Shell.proxy_command property.RuntimePlatform.0.NativeExecution.Shell.proxy_parameter_list property.RuntimePlatform.0.NativeExecution.SQLPlus.proxy_command property.RuntimePlatform.0.NativeExecution.SQLPlus.proxy_parameter_list
たとえば、シェルにプロキシ・コマンドを設定する手順は、次のとおりです。
property.RuntimePlatform.0.NativeExecution.Shell.proxy_command = /bin/proxy_sh property.RuntimePlatform.0.NativeExecution.Shell.proxy_parameter_list = ?-v?-n?
注意: Runtime.properties ファイルに対する変更権限は、Warehouse Builderの管理者以外に付与せず、ユーザーには読取り専用権限を付与するようにしてください。 |
ANDアクティビティを使用して、プロセス・フローを再開する前に2つ以上のアクティビティの完了を指定します。
ANDアクティビティには2つ以上の受信推移を含むことができます。ANDアクティビティを使用してプロセス・フローを正しく設計するには、ANDより上位のFORKアクティビティを配置する必要があります。また、ANDアクティビティに移動する推移の数は、上位のFORKからの送信推移の数以下である必要があります。FORKは、複数の無条件推移を割り当てることができるようにする唯一のアクティビティであるため、必要に応じて、ANDアクティビティによって複数のアクティビティが完了することを確認します。
ANDアクティビティにより、上位のアクティビティの結果を集計できるようになります。すべての上位のアクティビティがSUCCESSを戻す場合、ANDアクティビティはSUCCESSを戻します。上位のアクティビティがERRORを戻す場合、ANDアクティビティはERRORを戻し、ERRORを戻さない場合はWARNINGが戻されます。結果を持たないアクティビティは、SUCCESSを戻したとみなされます。SET_STATUSアクティビティを使用して、結果を作成します。この機能は、パラレル実行している一連のマッピングがすべて正常に完了したかどうかをテストする場合に特に役立ちます。
図21-1に、プロセス・フロー内のANDおよびFORKアクティビティを示します。この例では、AND_ACTIVITYが、MAP1およびMAP2の完了に基づいて下位のアクティビティをトリガーします。AND_ACTIVITYが2つの受信推移を持つのに対して、FORKアクティビティは3つの送信推移を持つため、そのプロセス・フローは有効です。また、プロセス・フローは、MAP3に関連付けられている推移およびアクティビティが削除された場合にも有効になります。
送信条件の場合、ANDアクティビティには1つ、2つまたは3つの条件付き推移を含むことができます。これにより、成功、警告およびエラー・アクティビティで終了する3つのパスになる可能性があります。
データのプロファイルの結果に基づいて処理するプロセス・フローを設計できます。たとえば、データの品質がしきい値パラメータによって決定された基準を満たす場合にのみマッピングを実行する論理を作成します。
プロセス・フローのアクティビティが完了した後に電子メール通知を送信できます。たとえば、マッピングのようなアクティビティがエラーまたは警告で終了したと管理者に通知する場合、これが役立ちます。
表21-7に、電子メール・アクティビティに設定するパラメータを示します。
表21-7 電子メール・アクティビティ・パラメータ
パラメータ | 説明 |
---|---|
SMTP Server |
送信メール・サーバーの名前。デフォルト値は |
Port |
送信メール・サーバーのポート番号。デフォルト値は |
From_Address |
プロセス・フロー通知の送信元の電子メール・アドレス。 |
Reply_To_Address |
受信者が応答する電子メール・アドレスまたはメーリング・リスト。 |
To_Address |
プロセス・フロー通知を受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。 |
CC_Address |
プロセス・フロー通知のコピーを受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。 |
BCC_Address |
プロセス・フロー通知のブラインド・コピーを受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。 |
Importance |
通知の重要性のレベル。たとえば、 |
Subject |
電子メールの件名の行に表示されるテキスト。 |
Message_Body |
電子メールの本文に表示されるテキスト。テキストの入力または貼付けを実行するには、「アクティビティ」パネル下部の「値」を選択します。プロセス・フロー・エディタに入力できるテキスト数は無制限です。 |
電子メール・アドレスの場合、表示名の有無にかかわらず電子メール・アドレスを入力できます。たとえば、次の入力は適切です。
jack.emp@example.com
Jack Emp<jack.emp@example.com>
Jack Emp[jack.emp@example.com]
Jack Emp[jack.emp@example.com],Jill Emp[jill.emp@example.com]
Jack Emp[jack.emp@example.com];Jill Emp[jill.emp@example.com]
電子メール・アクティビティを含むプロセス・フローを実行するには、様々なホスト・マシンやポートにアクセスする必要があります。Oracle Database 11gリリース1に実装された新しいセキュリティ措置により、ホストおよびポートへのアクセスは制限されます。DBMS_NETWORK_ACL_ADMIN
パッケージを使用して、電子メール・アクティビティがアクセスするホストおよびポートへのアクセス権を明示的に付与する必要があります。
たとえば、ユーザーOWBSYS
がメール・サーバーmail.example.com、ポート25を使用して電子メールを送信する必要があるとします。DBAは次の手順を実行する必要があります。
次のコマンドを使用して、ユーザーOWBSYS
のアクセス制御リスト(ACL)を作成します。
EXECUTE DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ('acl_for_owb_cc.xml','ACL for Control Center','OWBSYS','CONNECT');
ACLは、ネットワーク・ターゲットに割り当てないと、アクセス制御の効果を発揮しません。
アクセス制御リスト(ACL)をネットワーク・ホストに割り当て、オプションでTCPのポート範囲を指定します。次のコマンドを使用します。
EXECUTE DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ('acl_for_owb_cc.xml','mail.example.com',25)
COMMITコマンドを使用して変更をコミットします。
プロセス・フローのパスはすべて、終了アクティビティで終了する必要があります。
プロセス・フローを最初に作成したときに、デフォルトでは成功タイプの終了アクティビティが含まれています。終了タイプを使用して、パスに含まれるロジックのタイプを指定します。マッピングなどの特定のアクティビティには3種類の結果があるため、表21-8に示すように、3つの終了タイプがエディタに用意されています。これらの終了タイプを使用して、プロセス・フローのエラー処理ロジックを設計できます。
表21-8 終了アクティビティのタイプ
アイコン | 終了タイプ | 説明 |
---|---|---|
![]() |
正常終了 |
正常終了する上位のアクティビティに依存して、パスが論理を含むことを示します。 |
![]() |
警告 |
警告で終了する上位のアクティビティに依存して、パスが論理を含むことを示します。 |
![]() |
エラー |
エラーで終了する上位のアクティビティに依存して、パスが論理を含むことを示します。 |
1つ、2つまたは3つすべての終了のタイプを含むように、プロセス・フローを設計できます。終了タイプはそれぞれ1回のみ使用できます。終了タイプは重複して使用できません。各終了アクティビティには、単一または複数の受信推移を含むことができます。
図21-2では、END_SUCCESSに3つの受信推移があります。それぞれが上位のアクティビティの正常終了に依存します。END_ERRORには、上位のマッピング・アクティビティがエラーで終了する場合に実行する電子メール・アクティビティからの1つの受信推移があります。
デフォルトでは、すべてのプロセス・フローには、end_successが含まれます。終了アクティビティを別のタイプに変更できませんが、違うタイプの終了アクティビティを追加できます。
終了アクティビティをプロセス・フローに追加する手順は次のとおりです。
プロセス・フロー・エディタのパレットから、該当する「終了」アイコンをキャンバスにドラッグ・アンド・ドロップします。
Warehouse Builderでは、すでにプロセス・フローに表示されている終了タイプを選択できません。
「OK」をクリックします。
Warehouse Builderによって、終了アクティビティがキャンバスに追加されます。
エディタは、キャンバスに追加する各ForループおよびWhileループに対して、終了ループを追加します。
終了ループ・アクティビティには、ForループまたはWhileループ・アクティビティへの単一の無条件送信推移が必要です。ループを構成するすべてのフローを、終了ループ・アクティビティに収束して、次のループ相互作用またはループ終了のいずれかに対してパラレル・フローが確実に残らないようにする必要があります。
「ファイルが存在」アクティビティを使用して、次のアクティビティを実行する前にファイルの存在を確認します。「アクティビティ」パネルで、ファイル名を入力します。
「ファイルが存在」アクティビティでの確認は1回のみです。ファイルが存在する場合、プロセス・フローが正常終了推移に進みます。ファイルが存在しない場合、プロセス・フローは警告推移に進みます。「ファイルが存在」アクティビティは、OMB Plusを使用している場合のTCLエラーのような重大な障害の場合にのみエラー推移をトリガーします。
「ファイルが存在」アクティビティには、PATHと呼ばれる1つのパラメータがあります。このパラメータに対して、完全修飾ファイル名、ディレクトリ名、またはセミコロン区切りのリストを指定します。通常、パスはコントロール・センター・サービスが実行中のホストと同じホストでテストされます。
基礎となるオペレーティング・システムのセキュリティ制約は、1つ以上のファイルへのアクセスを禁止する場合があり、ファイルが存在しないようにみえることがあります。すべてのパスが存在する場合、アクティビティはEXISTSを戻します。パスがまったく存在しない場合は、MISSINGを戻します。複数のパスが存在する場合は、SOME_EXISTを戻します。
FORKアクティビティを使用して、1つのアクティビティの完了後に複数の並行アクティビティを起動します。
FORKアクティビティに複数の受信推移を割り当てることができます。FORKアクティビティは、パラレル処理される複数の無条件送信推移の割当てを可能にする唯一のアクティビティです。たとえば、図21-3では、MAP1の完了後に、プロセス・フローがFTP、FDSおよびEMAILという名前のアクティビティをパラレル実行します。
図21-4に、FORKアクティビティがない同じアクティビティを示します。この場合、アクティビティのうち1つのみがMAP1の完了状態に基づいて実行されます。
プロセス・フロー・エディタは、送信推移またはFORKから割り当てることができる並行アクティビティの数を制限しません。並行実行の設計の際、プロセス・フローを実行するために使用するワークフロー・エンジンまたはサーバーによって課せられる制限に基づいてFORKを設計します。
送信FORKアクティビティ推移は、複合式を持つことができません。
forループを使用して、ループに含まれたアクティビティを繰り返し実行してから終了し、プロセス・フローを再開します。
forループを追加する際、エディタは終了ループ・アクティビティと終了ループへの推移も追加します。送信推移の場合、ループ条件を持つものと終了条件を持つものを定義します。送信推移を選択して、「オブジェクトの詳細」の「条件」をクリックします。
FTPアクティビティを使用して、提供するFTPコマンドのスクリプトに基づいて、あるロケーションから別のロケーションへファイルを転送します。FTPアクティビティは、「ユーザー定義」アクティビティの特化したものです。これら2つのアクティビティの違いは、FTPアクティビティはリモート・ファイル・ロケーションによって構成される必要があることです。
有効化されるプロセス・フローの場合、FTPコマンドには、インストールされたコントロール・センター・サービスを使用したサーバーとの間のデータ転送が含まれる必要があります。コントロール・センター・サービスをホストしていない2台のコンピュータの間でデータを移動するには、1台目のコンピュータがコントロール・センター・サービスのホスト・コンピュータにデータを転送してから、2台目のコンピュータにデータを転送します。
FTPアクティビティを使用してプロセス・フローを設計する前に、ソースと宛先に定義されたロケーションがあることを確認します。
FTPアクティビティは、提供するFTPコマンドのスクリプトに依存します。Warehouse Builder内でスクリプトを記述するか、Warehouse Builderにスクリプトを含むファイルを指示するかのいずれかを選択できます。次のメソッドのいずれかを選択してください。
Warehouse BuilderでFTPコマンドのスクリプトを保守する場合、またはサーバーに対するパスワード・セキュリティが要件である場合(あるいはその両方の場合)、この方法を選択します。
この方法の場合、COMMANDパラメータで、FTP実行可能ファイルへのパスを入力します。また、UNIX以外のファイル転送プロトコルの場合、PARAMETER_LISTパラメータにプロトコルの追加パラメータを入力します。SCRIPTパラメータのVALUE列にスクリプトを入力します。
表21-10に、Warehouse Builder内でスクリプトを作成する際にFTPアクティビティに対して設定するパラメータを示します。
表21-10 Warehouse BuilderにおけるスクリプトのFTPアクティビティ・パラメータ
パラメータ | 説明 |
---|---|
COMMAND |
ファイル転送プロトコル・コマンドへのパスを入力します。Windowsオペレーティング・システムの場合、 |
PARAMETER_LIST |
これはコマンドに渡されるパラメータのリストです。各パラメータはトークンで区切られます。トークンはパラメータ・リスト文字列の最初の文字として使用され、文字列もそのトークンで終わる必要があります。Warehouse Builderでは「?」の文字が推奨されますが、任意の文字を使用することもできます。たとえば、「abc」、「def」および「ghi」を渡す場合、次のいずれの形式も可能です。 ?abc?def?ghi? または !abc!def!ghi! または |abc|def|ghi| トークン文字または「¥」をパラメータの一部として含める必要がある場合、「¥」でエスケープする必要があります(「¥¥」など)。「¥」がトークン文字である場合、「¥」がエスケープ文字となります。 ファイル転送プロトコルに必要な追加パラメータを入力します。 Windowsの場合、?"-s:${Task.Input}"?と入力します。${Task.Input}トークンはWarehouse Builderに対し、スクリプトを一時ファイルに格納し、トークンを一時ファイルの名前で置き換えるよう促します。したがって、スクリプトは標準入力として渡されません。 注意: Windows FTPコマンドはファイルを除く標準入力では使用できないため、-sパラメータが設定されます。 UNIXの場合、この値は空白にしておく必要があります。通常、UNIX FTPは標準入力から読み込むため、その他のパラメータは必要ありません。 |
SUCCESS_THRESHOLD |
FTPコマンド完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。 デフォルト値は |
SCRIPT |
このパラメータに、FTPに必要なスクリプトを入力できます。 テキストを入力または貼り付けるには、「オブジェクトの詳細」パネルの最下部で「値」を選択します。プロセス・フロー・エディタでは、入力できるテキストの量に制限はありません。 スクリプト内の各改行は、 |
図21-5に、Warehouse Builder内で作成されたスクリプトを呼び出すためのFTPアクティビティ・パラメータ設定の例を示します。
図21-6に、SCRIPTパラメータの「値」列におけるスクリプトの1行目を示します。スクリプト全体を表示するには、「値」列の「コロン」ボタンをクリックします。Warehouse Builderに表示されたSCRIPT値エディタを使用して、図21-6のスクリプトのようなFTPスクリプトを記述またはコピー・アンド・ペーストできます。
図21-6のスクリプトには、${Remote.User}および${Remote.Password}が含まれる点に注意してください。これらは置換変数です。詳細は、「置換変数の使用」を参照してください。
置換変数は、Warehouse BuilderでFTPスクリプトを記述して格納することを選択した場合にのみ使用できます。
置換変数を使用して、サーバー・ファイル、アカウントおよびパスワードが変更される場合にFTPアクティビティが更新されることを防止します。たとえば、FTPアクティビティを利用して特定のディレクトリの下のsalessrv1上のファイルにアクセスする10個のプロセス・フローを作成する場合を考えます。ファイルを移動する場合、置換変数を使用しないと、各FTPアクティビティを個別に更新する必要があります。置換変数を使用すると、更新が必要なのはロケーション情報のみになります。
また、置換変数はパスワードのセキュリティを維持する上で重要です。置換変数をサーバー・パスワードとして使用したFTPアクティビティを実行すると、変数はユーザーが入力した関連ロケーションのセキュア・パスワードに解決されます。
表21-11は、FTPアクティビティに対して入力できる置換変数を示しています。Workingは、コントロール・センター・サービスがあるコンピュータのことで、この事例ではローカル・コンピュータを意味します。Remoteは、データ転送に関与する他のサーバーを意味します。FTPアクティビティを構成する場合に、「プロセス・フローの構成のリファレンス」の説明に従って、どのサーバーをリモートおよびローカルにするかを指定します。
表21-11 FTPアクティビティに対する置換変数
変数 | 値 |
---|---|
${ Working.RootPath } |
コントロール・センター・サービス・ホストのロケーションに対するルート・パス値。 |
${ Remote.Host } |
コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するホスト値。 |
${ Remote.User } |
コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するユーザー値。 |
${ Remote.Password } |
コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するパスワード値。 |
${ Remote.RootPath } |
コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するルート・パス値。 |
${ Task.Input } |
WorkingおよびRemoteロケーションは、プロセス・フローの構成時にFTPアクティビティに対して設定されます。 |
${ parameter_name } |
${ parameter_name }構文を使用して、カスタム・パラメータの値をスクリプトおよびパラメータに置換できます。 |
すべてのカスタム・パラメータは、コマンドの環境スペースにインポートされます。たとえば、PATHというカスタム・パラメータを定義することにより、OS実行可能ファイルの検索に使用される検索パスを変更できます(JAVA VMでは、これができない場合があります)。
パスワード・セキュリティの問題がない場合、Warehouse BuilderではFTPコマンド、ユーザー名およびパスワードを含むスクリプトを持つファイルを指定できます。
ファイル・システムのファイルをコールするには、Warehouse Builderがそのファイルを指定するようにPARAMETERS_LISTに適切なコマンドを入力します。Windowsオペレーティング・システムの場合、次のように入力します。?"-s:<file path¥file name>"?
たとえば、Cドライブのtempディレクトリにあるmove.ftpという名前のファイルをコールするには、次のように入力します。 ?"-s:c:¥temp¥move.ftp"?
このメソッドの場合、SCRIPTパラメータを空白のままにします。
表21-12に、FTPスクリプトがシステム上のファイルに存在する場合にFTPアクティビティに対して設定するパラメータを示します。
表21-12 Warehouse Builder外部のスクリプトに対するFTPアクティビティ・パラメータ
パラメータ | 説明 |
---|---|
Command |
このパラメータは空白のままにします。 |
Parameter List |
FTPスクリプトに対するパスとファイルの名前を入力します。プロセス・フロー・エディタは、セパレータとして入力する最初の文字を解釈します。たとえば、プロセス・フロー・エディタは次のエントリを
バックスラッシュをエスケープ文字として使用します。たとえば、プロセス・フロー・エディタは、次のエントリを /-l/-s/\// |
Success Threshold |
FTPコマンド完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。 デフォルト値は |
Script |
このパラメータは空白のままにします。 |
「手動アクティビティ」を使用して、プロセス・フローを停止します。
プロセス・フローを停止した後、ユーザーはコントロール・センターまたはリポジトリ・ブラウザによって介入し、プロセス・フローを再開する必要があります。
このアクティビティを使用すると、プロセスを設計してETLプロセスを再起動またはリカバリできるようになります。
手動アクティビティは、通知アクティビティと類似していますが、手動アクティビティはOracle Workflowの実装を必要としないため、電子メールを送信しません。Oracle Workflowと対話せずに通知アクティビティと同じ結果にするには、手動アクティビティの前に電子メール・アクティビティを使用するようにしてください。
マッピング・アクティビティを使用して、マッピング・エディタで定義および構成した既存のマッピングを追加します。
複数の受信推移をマッピング・アクティビティに割り当てることができます。送信推移の場合つの無条件推移または各無条件推移のうちの1つに割り当てます。
マッピングをプロセス・フローに追加する場合、その構成プロパティを「アクティビティ」パネルに表示できます。プロセス・フロー・エディタの「マッピング」アクティビティは、マッピング・エディタのマッピングからそのプロパティを継承します。プロセス・フロー・エディタでは、プロパティ・データ型または方向を変更できません。
ただし、プロセス・フローのみに影響を与え、マッピング・エディタのマッピングの設定を変更しない新規の値を割り当てることができます。たとえば、プロセス・フロー・エディタでオペレーティング・モードをセット・ベースから行ベースに変更する場合、プロセス・フローは行ベースで実行します。元のマッピングはそのオペレーティング・モードとしてセット・ベース・モードのままです。基礎となるマッピングのプロパティを変更する場合は、「マッピング構成のリファレンス」を参照してください。
マッピングにマッピング入力パラメータ演算子が含まれる場合、そのデータ型に従って値を指定します。プロセス・フロー・エディタは、マッピングにマッピング入力パラメータ演算子が追加される場合に、PL/SQL式を受け取ることを想定します。マッピング入力パラメータが文字列の場合、二重引用符でその文字列を囲みます。
マッピング・エディタでマッピングを変更したプロセス・フローを更新する場合、プロセス・フローからマッピング・アクティビティを削除し、マッピング・アクティビティを再び追加します。
表21-14および表21-15に、PL/SQLおよびSQL*Loaderの異なるマッピング・パラメータを示します。
表21-14に、PL/SQLマッピング・パラメータを示します。
表21-14 PL/SQLのマッピング・パラメータ
パラメータ | 有効な値 |
---|---|
AUDIT_LEVEL |
NONE STATISTICS ERROR_DETAILS COMPLETE |
BLUK_SIZE |
1+ |
COMMIT_FREQUENCY |
1+ |
MAX_NO_OF_ERRORS |
マッピングがエラーで終了した後に許可されるエラーの最大数 |
OPERATING_MODE |
SET_BASED ROW_BASED ROW_BASED_TARGET_ONLY SET_BASED_FAIL_OVER_TO_ROW_BASED SET_BASED_FAIL_OVER_TO_ROW_BASED_TARGET_ONLY |
表21-15に、SQL*Loaderマッピング・パラメータを示します。
通知アクティビティを使用すると、ETLプロセスを再開またはリカバリするプロセスを設計できます。このアクティビティはOracle Workflowと連携して機能します。通知を実装するには、Oracle Workflowのワークフロー通知も実装する必要があります。または、電子メールアクティビティに続けて手動アクティビティを使用することも可能です。メッセージの送信方法はOracle Workflowサブシステムで決定されます。
通知アクティビティを使用するには、最初に表21-16に示されるパラメータを定義します。定義する各レスポンスに基づいて条件付き送信推移を定義します。たとえば、response_typeの値が「はい」、「いいえ」でdefault_responseの値が「はいの場合は、2つの送信推移を定義します。各推移を右クリックして「条件」を選択し、条件のリストを表示します。この例では、「はい」に設定された条件を持つ1つの送信推移と「いいえ」に設定された別の送信推移を作成します。
表21-16 通知アクティビティ・パラメータ
パラメータ | 説明 |
---|---|
Performer |
Oracle Workflow管理者によって定義されたロールの名前を入力します。 |
Subject |
電子メールの件名を入力します。 |
Text_body |
実行者の指示を入力します。レスポンスがプロセス・フローに与える影響を説明し、レスポンスされない場合のデフォルトのアクションを説明します。 |
Html_body |
テキストに追加して、またはテキストのかわりにhtmlを使用します。Html_bodyに入力した内容はText_bodyに追加されます。 |
Response_type |
実行者がレスポンスを選択するカンマ区切りの値リストを入力します。各エントリはアクティビティからの1つの送信推移に対応します。 |
Default_response |
デフォルト・レスポンスを入力します。 |
Priority |
電子メールの優先度を1(高)、50(中)または99(低)のいずれかから選択。 |
Timeout |
レスポンスを待つ秒数。これが設定される場合は#TIMEOUT推移が必要です。 |
Response_processor |
Oracle Workflow通知レスポンス・プロセッサ機能。詳細は、Oracle Workflowのマニュアルを参照してください。 |
Expand_roles |
通知投票に使用します。この値をTRUEまたはFALSEに設定します。TRUEに設定する場合、通知はグループに1つの共有メッセージではなく、グループの各メンバーに送信されます。詳細は、Oracle Workflowのマニュアルを参照してください。 |
注意: Oracle Workflow制限により、実行者、優先度、タイムアウトおよびカスタム・パラメータの値のみを実行時に変更できます。 |
ORアクティビティを使用すると、1つ以上の上位のアクティビティの完了に基づいてアクティビティを起動できます。ORアクティビティには、複数の受信推移および1つのみの無条件送信推移を割り当てることができます。
ORアクティビティはANDアクティビティと類似のセマンティックを持ちますが、相違点は、ORアクティビティは完了した最初の上位のアクティビティの正常終了、警告またはエラーの結果を伝播することです。
プロセス・フローのORアクティビティは、ダウンストリーム・アクティビティが各プロセス・フローの実行に1回のみトリガーされることを確認します。
プロセス・フロー・エディタを使用することにより、ORアクティビティを省略して、3つのマッピング・アクティビティのそれぞれからの推移を、図21-7に示すSUBPROC1に割り当てることができます。ただし、この論理では1回のプロセス・フローの実行でSUBPROC1を3回起動することになります。これを回避するには、ORアクティビティを使用してください。
「ルート・アクティビティ」を使用すると、アクティビティの結果を、定義した条件に基づいて特定の結果になるようにルーティングできます。排他ORおよびif-then-elseシナリオを定義できます。
ルート・アクティビティは、操作を持たず、推移の方向を変更する場合に使用できます。ルート・アクティビティには、その他のアクティビティと同様に、複合条件を持つ送信推移を追加できます。ただし、このアクティビティには操作がないため、条件ではプロセス・フローのパラメータおよび変数のみを参照できます。ルート・アクティビティを指定することにより、ANDやORアクティビティの結果に影響を与えることができます。ルート・アクティビティは、独自の結果を持たないため、正常終了したものとみなされます。
このアクティビティにはパラメータはありません。
「ステータス設定アクティビティ」を使用して、正常終了、警告またはエラーの各ステータスを通知できます。
ステータスの設定は、ANDアクティビティの動作を上書きする手段として使用できます。ANDの直前のアクティビティのいずれかがエラーを戻した場合、ANDアクティビティもエラーとして判断されることに留意してください。先行するアクティビティの結果と無関係にANDを正常終了として判断されるようにするには、そのアクティビティとANDアクティビティの間にステータスの設定を挿入します。
SQLPlusアクティビティを使用すると、スクリプトをプロセス・フローに導入できます。
スクリプトの貼付けまたは入力を行うには、キャンバス上でアクティビティを選択してエディタのエクスプローラで「スクリプト」を選択し、「オブジェクトの詳細」で「値」をクリックします。または、ファイル・システム上の既存のスクリプトを参照するため、parameter_listに移動し、アット・マーク(@)に続けてフルパスを入力します。
このアクティビティは広範な目的に使用できますが、一例は、SQLPlusアクティビティを使用してプロセス・フローにおいて複数のマッピングをコミットする方法を制御することです。詳細は、プロセス・フロー・エディタを介したマッピングのコミットを参照してください。
SQLPlusアクティビティのプロセス・フローは配布ロケーションの構成アイテムによって実行されます。
SQLPlusアクティビティを実行するロケーションを設定する手順は、次のとおりです。
プロジェクト・エクスプローラで、「プロセス・フロー」モジュールを展開します。
「プロセス・フロー」モジュールで、「プロセス・フロー」を選択します。
「プロセス・フロー」を右クリックして「構成」を選択します。
構成プロパティ・ウィンドウで、「SQL*Plusアクティビティ」を展開します。
SQLPLUSを選択します。
「パスの設定」で、「配布ロケーション」オプションをSQLPlusアクティビティを実行するロケーションに設定します。
SQLPlusアクティビティは、ユーザー定義アクティビティと類似していますが、次の相違点があります。
COMMANDパラメータは、自動的に導出されるため、指定できません。
${ Task.Input }置換変数を使用した場合は、生成される一時ファイルの末尾は.sqlになります。
用意されている置換変数のセットが異なります。このアクティビティは、配布されたデータベース・ロケーションを使用して構成する必要があります。
置換変数はFTPと類似しています。FTPがFTPサーバーに接続する際にリモート・ロケーションを使用するのと同様に、置換変数は、Oracleデータベースに接続する際に次のロケーションを使用します。
作業ロケーション(ローカル・ロケーション)
配布ロケーション(ターゲット・ロケーション)
表21-18 SqlPlus置換変数
置換変数 | 説明 |
---|---|
${ Working.RootPath } |
ローカル作業ディレクトリ |
${ Task.Input } |
SCRIPTパラメータから生成される一時ファイル |
${ Target.Host } |
ターゲット・ロケーションのホスト名 |
${ Target.Port } |
ターゲット・ロケーションのポート番号 |
${ Target.Service } |
ターゲット・ロケーションのサービス名 |
${ Target.TNS } |
ターゲット・ロケーションのTNSアドレス |
${ Target.Schema } |
ターゲット・ロケーションのスキーマ名 |
${ Target.User } |
ターゲット・ロケーションのユーザー名 |
${ Target.Password } |
ターゲット・ロケーションのユーザー・パスワード |
${ Target.URL } |
ターゲット・ロケーションの接続記述子 |
PARAMTER_LISTが空の場合、配布ロケーション・パラメータに応じて、次のパラメータ・リストのいずれかが使用されます。
?${ Target.User }/${ Target.Password }@${ Target.TNS }?@${ Task.Input }?
?${ Target.User }/${ Target.Password }@${ Target. URL }?@${ Task.Input }?
?${ Target. Schema }/${ Target.Password }@${ Target.TNS }?@${ Task.Input }?
?${ Target. Schema }/${ Target.Password }@${ Target. URL }?@${ Task.Input }?
SQL*Plusコマンドは、FTPユーザー定義アクティビティに直接入力できません。ホーム・ディレクトリからロードされるか、そのロケーションがワークスペース管理者によって事前定義されています。
SQL*Plusの実行ロケーションの決定には、次のプラットフォーム・プロパティがこの順序で使用されます。
property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_10g
property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_9i
property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_8i
property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_default
同様に、Oracleホームの決定には次のプラットフォーム・プロパティが使用されます。
property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_10g
property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_9i
property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_8i
property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_default
デフォルトでは、各プロセス・フローに1つの開始アクティビティを含めます。開始アクティビティの入力パラメータを、全体のプロセス・フローの入力パラメータになるよう設定できます。
開始アクティビティにパラメータを追加する手順は次のとおりです。
プロジェクト・エクスプローラで、「プロセス・フロー」をダブルクリックしてプロセス・エディタを開きます。
「エクスプローラ」ペインで、「選択したオブジェクト」タブをクリックします。
「選択したオブジェクト」タブで、「アクティビティ」フォルダを展開します。
「開始アクティビティ」を選択して、「エクスプローラ」ペインの「作成」ボタン(左上隅の小さな緑色の「加算」ボタン)をクリックします。
プロセス・フロー・エディタにより、開始アクティビティにパラメータが追加されます。
「オブジェクトの詳細」ペインで、パラメータのプロパティを設定します。
パラメータ名とデータ型を必要に応じて変更します。この方向とバインドは変更できません。方向はINであり、パラメータが入力パラメータのみであることを示しています。値にはパラメータ値を入力します。この値は実行時に上書きできます。
これで、パラメータをプロセス・フローの他のアクティビティの入力として使用できます。
以前に作成したプロセス・フローを起動するには、サブプロセス・アクティビティを使用します。1つのプロセス・フローから、同じまたは別のプロセス・フロー・パッケージに含まれる別のプロセス・フローを起動できます。
サブプロセスをプロセス・フローに追加した後、これを他のアクティビティと類似する設計に使用します。受信推移は複数割り当てることができます。送信推移には、無条件送信推移を1つのみ、または3つまでの条件付き送信推移を割り当てます。
サブプロセス内の終了アクティビティは、「サブプロセス」のみに適用され、プロセス・フローの終了ポイントとしては機能しません。
サブプロセスと他のアクティビティの重要な違いには、サブプロセスの内容は参照できるがその内容を親プロセス・フローでは編集できないという点があります。サブプロセスを編集するには、プロジェクト・エクスプローラで基礎となるプロセス・フローを開きます。プロセス・フローの名前の変更以外は、プロセス・フロー・エディタにより子プロセス・フローの変更が親プロセス・フローに伝播されます。
注意: プロセス・フローの名前の変更は注意してください。別のプロセス・フローで参照されるプロセス・フローの名前を変更する場合は、親プロセス・フローが無効になります。無効なサブプロセスを削除して、子プロセス・フローの新しい名前に関連付けられたサブプロセスを新たに追加する必要があります。 |
サブプロセスのアクティビティをプロセス・フローに追加する手順は次のとおりです。
プロセス・フロー・エディタのパレットから、「サブプロセス」アクティビティ・アイコンをキャンバスにドラッグ・アンド・ドロップします。
Warehouse Builderにより、プロセス・フローをサブプロセスとして選択し、追加するためのダイアログ・ボックスが表示されます。
「プロセス・フロー・モジュール」を拡張して、親プロセス・フローとして同じプロセス・フロー・パッケージから1つのプロセス・フローを選択します。
Warehouse Builderにより、プロセス・フローが親プロセス・フローのサブプロセス・アクティビティとして表示されます。
サブプロセスの内容を表示するには、サブプロセスを右クリックして、「ノードの拡張」を選択します。
プロセス・フロー・エディタにより、サブプロセスのグラフが青い枠線で囲まれて表示されます。
変換の機能をキャンバスにドロップすると、戻りパラメータが新しいパラメータとして変換と同じ名前で作成されます。変換アクティビティを使用して変換を変換ライブラリからプロセス・フローに追加すると、プロセス・フロー・エディタの「アクティビティ」パネルに変換のパラメータが表示されます。
変換アクティビティを起動する受信推移を1つ以上指定できます。送信推移については、無条件推移を1つのみ指定するか、3つの条件付き推移のいずれか1つを指定できます。
条件付き送信推移を指定する場合は、そのステータスが戻り値に基づくようにアクティビティを構成できます。「ステータスとしてリターンを使用」の詳細は、「プロセス・フロー構成のリファレンス」を参照してください。
変換に対して行った変更内容でプロセス・フローを更新する場合は、プロセス・フローから変換アクティビティを削除した後、変換アクティビティを再度追加してください。
パブリック変換など、配布されていない変換については、「配布ロケーション」の値を使用してアクティビティを構成する必要があります。
ユーザー定義アクティビティにより、Warehouse Builder内で定義されていないアクティビティをプロセス・フローに取り込むことができます。
ユーザー定義プロセス・アクティビティを起動する1つ以上の受信推移を指定できます。送信推移について、無条件推移を1つ指定するか、3つの条件付き推移のいずれか1つを指定できます。
条件付き送信推移を指定する場合は、そのステータスが戻り値に基づくようにアクティビティを構成できます。「ステータスとしてリターンを使用」の詳細は、「プロセス・フロー構成のリファレンス」を参照してください。
表21-19に、FTPアクティビティに設定するパラメータを示します。
表21-19 ユーザー定義プロセス・アクティビティ・パラメータ
パラメータ | 説明 |
---|---|
Command |
定義したユーザー定義プロセスを実行するコマンド。 |
Parameter List |
ユーザー定義プロセスに渡されるパラメータのリスト。 プロセス・フロー・エディタにより、入力した1文字目がセパレータとして解釈されます。たとえば、プロセス・フロー・エディタでは次のエントリが
バックスラッシュをエスケープ文字として使用します。たとえば、プロセス・フロー・エディタでは次のエントリが /-l/-s/\// 表21-20にリストされている置換変数も入力できます。 |
Success Threshold |
完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。デフォルト値は |
Script |
ここにスクリプトを入力するか、スクリプトのファイル名を入力できます。ファイル名を入力する場合、パラメータ・リストの${Task.Input}変数を使用してファイル名を渡します。 テキストを入力または貼り付けるには、「アクティビティ」パネルの最下部で「値」を選択します。プロセス・フロー・エディタでは、入力できるテキストの量に制限はありません。 スクリプト内の各改行は、 |
表21-20に、FTPアクティビティに入力可能な置換変数を示します。
表21-20 ユーザー定義プロセス・アクティビティの置換変数
変数 | 値 |
---|---|
${ Working.Host } |
コントロール・センター・サービス・ホストのロケーションのホスト値。 |
${ Working.User } |
コントロール・センター・サービス・ホストのロケーションのユーザー値。 |
${ Working.Password } |
コントロール・センター・サービス・ホストのロケーションのパスワード値。 |
${ Working.RootPath } |
ローカルの作業ディレクトリ。 |
${ Task.Input } |
SCRIPTパラメータから作成された一時ファイル。 Task.Input変数を入力し、Warehouse BuilderにSCRIPTパラメータで記述したスクリプトを参照させます。 Windowsの場合、Parameter_Listに?"-s:${ Task.Input }"?と入力します。 UNIXの場合、Parameter_Listに?"${ Task.Input }"?と入力します。 ここでは、疑問符はセパレータです。 |
whileループを使用して、定義した条件がTRUEと評価される場合のみ1つ以上のアクティビティを実行します。
通常は、whileループを割当アクティビティに関連付けることにより、while条件を定義できます。少なくとも1つの割当アクティビティによりデータが初期化され、また少なくとも1つの割当アクティビティによってループ反復の終わりまでデータが増分されるか、再度データが変更されます。
whileループを追加する際、エディタは終了ループ・アクティビティと終了ループへの推移も追加します。whileループ・アクティビティからループに含めるそれぞれのアクティビティまでの推移を作成してください。追加する送信推移については、推移を選択して「オブジェクトの詳細」で「条件」をクリックし、EXIT条件またはLOOP条件を推移に適用します。
ループを実行するかどうかを制御するwhile条件を定義するには、「whileループ」アクティビティを選択して、エディタのエクスプローラで「条件」を選択し、「オブジェクトの詳細」で条件を定義します。