データをソースからターゲットに移動するための操作を定義するマッピングを設計した後は、プロセス・フローを作成および定義できます。マッピングと、Warehouse Builder外部のアクティビティを相互に関連付けるには、プロセス・フローを使用します。この外部アクティビティには、電子メール、FTPコマンドおよびオペレーティング・システム実行可能ファイルなどがあります。
プロセス・フローを使用すると、マッピング間の依存性を管理できますが、特定のマッピングの実行時期を明確にスケジュールすることはできません。マッピング、プロセス・フローおよびその他の実行可能オブジェクトをスケジュールする方法は、第28章「ETLオブジェクトのスケジューリング」を参照してください。
この章の内容は次のとおりです。
プロセス・フローでは、Warehouse Builderマッピングと電子メール、FTPおよびオペレーティング・システム・コマンドなどの外部アクティビティとの依存性を記述します。
各プロセス・フローは「開始」アクティビティで始まり、フロー内のストリームごとに「終了」アクティビティで終了します。他のプロセス・フローを起動するようにプロセス・フローを設計できます。図7-1に、マッピングMAP1を起動するプロセス・フローの例を示します。マッピングが正常終了すると、Warehouse Builderから電子メール通知EMAIL_SUCCEEDが送信され、別のプロセス・フローSUBPROC1が起動されます。マッピングに失敗すると、Warehouse Builderから電子メールEMAIL_FAILが送信され、プロセス・フローが終了します。
Warehouse Builderでプロセス・フローを設計する際には、プロセス・フロー・エディタというインタフェースを使用します。または、Warehouse Builderのスクリプト言語であるOMBスクリプト言語を使用してプロセス・フローを作成し、定義することもできます。詳細は、Oracle Warehouse Builder APIおよびスクリプト・リファレンスを参照してください。
プロセス・フロー・モジュールを使用すると、プロセス・フロー・パッケージをグループ化できます。また、プロセス・フロー・パッケージを使用すると、プロセス・フローをグループ化できます。同時に、プロセス・フロー・モジュールとプロセス・フロー・パッケージによって、プロセス・フローを管理および配布する2つのレベルが提供されます。モジュール・レベルまたはパッケージ・レベルのいずれかでプロセス・フローを検証、生成および配布できます。
同じモジュール内に含まれているプロセス・フローは相互に関係付けることができます。つまり、両方が同じモジュール内にある場合にかぎり、他のプロセス・フローを起動するプロセス・フローを設計できます。たとえば、図7-1は、プロセス・フローSUBPROC1を含むプロセス・フローPROC1を示しています。PROC1が正常に実行されるには、SUBPROC1とPROC1が同じパッケージに含まれていても別々のパッケージに含まれていてもかまいませんが、同じモジュール内に含まれている必要があります。
あるパッケージから同じモジュール内または別のモジュール内の他のパッケージにプロセス・フローをコピーできます。また、パッケージを別のモジュールにコピーできます。コピーするには、「デザイン・センター」メイン・メニューの「編集」の下にある「コピー」コマンドと「貼付け」コマンドを使用します。
ワークフロー・エンジンへのプロセス・フローの配布
Warehouse Builderのプロセス・フローは、Workflow Management Coalition(WfMC)により記述されたXMLプロセス定義言語(XPDL)標準に準拠しています。プロセス・フローの生成時には、Warehouse BuilderによりXPDL形式のXMLファイルが生成されます。生成されたXMLファイルは、XPDL標準に準拠する任意のワークフロー・エンジンにプラグインできます。
Warehouse BuilderはOracle Workflowと統合されています。第29章「ターゲット・システムの配布」で説明されている「Warehouse Builderコントロール・センター」から、プロセス・フロー・パッケージまたはモジュールをOracle Workflowに配布できます。
プロセス・フローを定義するには、次の各項を参照してください。
プロセス・フローの検証および生成
プロセス・フローのスケジューリング(オプション)
プロセス・フローが予測したとおりに実行されることを確認したら、第28章「ETLオブジェクトのスケジューリング」に説明されるように、単一または複数の日付に実行するようにプロセス・フローをスケジューリングできます。
第29章「ターゲット・システムの配布」の説明に従って、プロセス・フローを配布します。
プロセス・フローを使用するには、プロセス・フロー・モジュールを作成します。このモジュールは、プロセス・フローのグループを検証、生成および配布するために使用するコンテナです。プロセス・フロー・モジュールにはプロセス・フロー・パッケージが含まれ、各パッケージにはプロセス・フローが含まれます。
プロセス・フロー・モジュールを作成する手順は、次のとおりです。
プロジェクト・エクスプローラの「プロセス・フロー・モジュール」ノードを右クリックし、「新規」を選択します。
Warehouse Builderに、モジュールの作成ウィザードのようこそページが表示されます。
「次へ」をクリックします。
名前と説明ページで、プロジェクト内で一意のモジュール名を入力します。テキストの説明(オプション)を入力します。
「次へ」をクリックします。
ウィザードに、接続情報ページが表示されます。
モジュール名を基にウィザードによって作成されたデフォルト・ロケーションはそのまま使用できます。またはドロップダウン・ボックスから既存のロケーションを選択します。「編集」をクリックして接続情報を入力し、接続をテストします。
「次へ」をクリックします。
ウィザードに、終了ページが表示されます。新規プロセス・フロー・モジュールの名前と配布ロケーションを確認します。
「終了」をクリックすると、Warehouse Builderによって、モジュールの定義が格納され、プロジェクト・エクスプローラに名前が挿入されます。また、プロセス・フロー・パッケージを作成するように要求されます。
プロセス・フローのモジュールを作成すると、プロセス・フロー・パッケージを作成できるようになります。プロセス・フロー・パッケージとは、プロセス・フローの配布元となる追加のグループ化メカニズムです。
プロセス・フロー・パッケージを作成する手順は次のとおりです。
「プロジェクト・エクスプローラ」でプロセス・フロー・モジュールを右クリックし、「新規」を選択します。
「プロセス・フロー・パッケージの作成」ダイアログが表示されます。
プロセス・フロー・パッケージの名前との説明(オプション)を入力します。
Oracle Workflowと統合する場合、Oracle Workflowはパッケージ名を8バイトに制限していることに注意してください。
「OK」をクリックします。
Warehouse Builderでは、プロセス・フローを作成するように要求されます。
プロセス・フローのモジュールおよびパッケージを作成した後で、プロセス・フローを作成できます。
プロセス・フローを作成する手順は、次のとおりです。
「プロジェクト・エクスプローラ」でプロセス・フロー・パッケージを右クリックし、「新規」を選択します。
Warehouse Builderにより、「プロセス・フローの作成」ダイアログが表示されます。
プロセス・フローの名前と説明(オプション)を入力します。
プロセス・フローのスケジューリングに関する注意: 第28章「ETLオブジェクトのスケジューリング」の説明に従ってプロセス・フローの実行をスケジューリングする場合は、付加的な考慮事項があります。スケジューリングするETLオブジェクトの物理名は25文字以内、ビジネス名は1995文字以内に制限されます。この付加的な制限に従うと、Warehouse Builderでは、接尾辞_jobと配布および実行に必要な他の内部文字をプロセス・フロー名に追加できます。
「OK」をクリックします。
Warehouse Builderにより、プロセス・フローが起動し、「開始」アクティビティと「終了成功アクティビティ」を持つプロセス・フローが表示されます。
これで、アクティビティと推移を持つプロセス・フローをモデル化できます。
「プロセス・フローを定義する手順」に示す手順で続行します。
プロセス・フローのモジュールとパッケージの作成後、プロセス・フロー・エディタを使用して、プロセス・フローを設計および編集します。プロセス・フロー・エディタには、ユーザーが追加する様々なアクティビティが含まれます。これらを推移に接続してフローを設計します。
アクティビティは、プロセス・フローの作業単位を表します。これらの作業単位には、Warehouse Builderの内部コンポーネントまたは外部コンポーネントを含めることができます。
推移は、アクティビティを起動する順序と条件を表します。
図7-2に、サンプル・プロセス・フローが表示されたプロセス・フロー・エディタを示します。アクティビティは、キャンバスにアイコンとして表示されます。この例では、アクティビティには、開始、マッピング・アクティビティ、2つの電子メール・アクティビティ、サブプロセスおよび2つの終了アクティビティが含まれます。アクティビティ間の矢印は、推移を表します。
標準エディタ・コンポーネント
プロセス・フロー・エディタには、Warehouse Builderのほとんどのエディタに共通する、次の標準コンポーネントがあります。
タイトル・バー: エディタの最上部にあるタイトル・バーには、プロセス・フローの名前が表示されます。図7-2では、名前はMY_PROCです。
メニュー・バー: タイトル・バーの下に、プロセス・フロー・エディタのコマンドにアクセスできるメニュー・バーが表示されます。
ツールバー: メニュー・バーの下に、よく使用するコマンドのアイコンを示すツールバーが表示されます。
キャンバス: キャンバスには、プロセス・フローの設計および変更を行うための作業スペースがあります。新しいプロセスを初めて作成するとき、「プロセス・フロー」パネルには、開始アクティビティと終了アクティビティが表示されます。
パレット: プロセス・フロー・エディタを初めて起動するときは、Warehouse Builderによって、左側にパレットが表示されます。パレットには、キャンバスにドラッグ・アンド・ドロップできるアクティビティ・アイコンが含まれています。パレットは、エディタ上のどこにでも再配置できます。パレットの縮小アイコンをクリックして、パレットの表示または非表示を選択できます。
インジケータ・バー: 「鳥瞰図」パネルと「キャンバス」パネルの下の下部パネルに、図7-3に示すように、モード・アイコン、インジケータおよび説明が表示されます。
左隅には、ネーミング・モード、改名モード、読取り/書込み、検証モードが表示されます。
右隅には、倍率インジケータとナビゲーション・モードが表示されます。この図では、倍率は100%で、ナビゲーション・モードは「モードの選択」に設定されています。
マウスをウィンドウの境界に置き、双方向矢印が表示された時点でマウス・ボタンを押し、マウスをドラッグして必要なサイズを指定すると、ウィンドウのサイズを変更できます。
マウスを上部境界の中央に置き、十字カーソルが表示された時点でマウス・ボタンを押して、マウスを必要な位置までドラッグし、Warehouse Builderでウィンドウが望むとおりの形と位置で表示されてからマウス・ボタンを離すと、ウィンドウを移動できます。
ウィンドウを表示または非表示にするには、メニュー・バーから「ウィンドウ」を選択し、ウィンドウに対応するチェック・マークをアクティブ化または非アクティブ化します。
エクスプローラ
エディタを初めて起動するときは、Warehouse Builderの左上隅にエディタのエクスプローラが表示されます。エクスプローラには、キャンバス上の全アクティビティとそのパラメータをリストするツリーが表示されます。キャンバスでアクティビティを選択すると、Warehouse Builderではエクスプローラ上でそのアクティビティにナビゲートします。
オブジェクトの詳細
エディタを初めて起動するときは、Warehouse Builderの左側にオブジェクト詳細が表示されます。このウィンドウには、全アクティビティとそのパラメータのプロパティが表示されます。キャンバスまたはエクスプローラからアクティビティを選択すると、Warehouse Builderにより、そのプロパティが表示されます。エクスプローラからアクティビティ・パラメータを選択すると、そのパラメータのプロパティがオブジェクト詳細ウィンドウに表示されます。白い背景に表示されるプロパティは編集できますが、グレーの背景に表示されるプロパティは編集できません。
鳥瞰図
「鳥瞰図」ウィンドウを使用して、大きい複合プロセス・フロー上をナビゲートできます。
プロセス・フロー・エディタを表示する手順は、次のとおりです。
プロジェクト・エクスプローラの「プロセス・フロー」から、プロセス・フロー・モジュールを選択します。プロセス・フロー・モジュールがリストされていない場合は、「プロセス・フロー・モジュールの作成」の説明に従って、プロセス・フロー・モジュールを作成します。
プロセス・フロー・モジュールからプロセス・フロー・パッケージを選択します。プロセス・フロー・パッケージがリストされていない場合は、「プロセス・フロー・パッケージの作成」の説明に従って、プロセス・フロー・パッケージを作成します。
図7-4に示すように、プロジェクト・エクスプローラからプロセス・フローを選択します。プロセス・フロー・パッケージにプロセス・フローがリストされていない場合は、プロセス・フロー・パッケージを右クリックし、「プロセス・フローの作成」を選択します。
Warehouse Builderによって、プロセス・フローの名前を入力するように要求され、入力するとエディタが起動されます。
既存のプロセス・フローを開くには、プロジェクト・エクスプローラでプロセス・フローをダブルクリックします。
または、プロセス・フローを選択し、「編集」メニューから「エディタを開く」を選択します。あるいは、プロセス・フローを選択し、[Ctrl]を押しながら文字「O」を押します。あるいは、プロセス・フローを右クリックして、ポップアップ・メニューから「エディタを開く」を選択します。
Warehouse Builderに、「モードを選択」でプロセス・フロー・エディタが表示されます。
プロセス・フロー・エディタには、キャンバスでオブジェクトを移動、選択、表示するための各種ツールが含まれています。プロセス・フローの設計時によく使用するコマンドには、次のものがあります。
モードを選択
キャンバスのオブジェクトを選択するには、モードの選択を使用します。選択したアクティビティは青い枠で囲まれ、編集、移動または削除できます。
アクティビティは、オブジェクトの詳細ウィンドウとエディタ・エクスプローラ・ウィンドウの「使用可能なオブジェクト」タブを使用して編集できます。推移を選択すると、矢印が黒から青に変更されます。推移はオブジェクト詳細で編集します。
「モードを選択」をアクティブにするには、ツールバーのアイコンをクリックするか、メニューから「編集」、「モードの選択」の順に選択します。
エッジ・ナビゲーション
エッジ・ナビゲーションは、キャンバス上で複雑な設計をナビゲートするのに役立ちます。メニュー・バーからアイコンを選択し、次にキャンバスのアクティビティを選択します。マウスのボタンを放すと、フロー内の次のアクティビティにナビゲートし、そのアクティビティにフォーカスが移ります。フローを逆方向にナビゲートするには、エッジ・ナビゲーション・アイコンを選択し、次にフロー内の最後のアクティビティを選択します。
注意: Warehouse Builder 10g リリース1以前のリリースでプロセス・フロー・エディタを使用していた場合は、このリリースのエッジ・ナビゲーションのアイコンが推移の作成アイコンに使用されていたものと同じであることに気付くと思います。プロセス・フロー・エディタおよびエキスパート・エディタでは、推移の作成アイコンは不要となり、使用できなくなりました。 |
複雑な設計をエディタでナビゲートおよび表示するには、次のツールが便利です。
パン
インタラクティブ・ズーム
ズーム・イン
ズーム・アウト
ウィンドウに適合
自動レイアウト
中央
子グラフの拡張
子グラフの表示
親グラフに戻る
プロセス・フローの基本設計要素には、アクティビティと推移が含まれます。アクティビティとは、マッピングの起動、またはドライブやディレクトリ上のファイルの存在確認など、プロセス・フローの作業単位を表します。Warehouse Builderでプロセス・フローを設計するときは、エディタ・パレットからアクティビティを選択し、キャンバスにドラッグしてパラメータを設定します。Warehouse Builderには、次のタイプのアクティビティが用意されています。
OWB固有のアクティビティ: このアクティビティを使用すると、マッピング、変換または他のプロセス・フローなど、Warehouse Builderオブジェクトを起動できます。プロセス・フローではオブジェクトが実行され、COMMIT文が発行されます。
ユーティリティ・アクティビティ: このアクティビティを使用すると、電子メール送信やファイル転送などのサービスを実行できます。
コントロール・アクティビティ: このアクティビティを使用すると、プロセス・フローの進行状況と方向を制御できます。たとえば、複数のアクティビティを同時に起動するには「FORKアクティビティ」を使用します。
ユーティリティ・タイプおよびコントロール・タイプのアクティビティの場合、「アクティビティ・テンプレートの作成および使用」の説明に従ってアクティビティ・テンプレートを定義すると、そのパラメータを再使用できます。たとえば、電子メールの場合、電子メール・テンプレートを使用してSMTPサーバー名、ポート番号、アドレス・リストおよび優先順位を指定します。これにより、プロセス・フローに電子メール・アクティビティを追加するときにそのテンプレートを再使用できます。
各アクティビティの説明は、「プロセス・フローにおけるアクティビティの使用」を参照してください。
プロセス・フローにアクティビティを追加する手順は次のとおりです。
エディタの左端にあるパレットにリストされるアクティビティを表示します。
デフォルトでは、すべてのアクティビティがパレットにリストされます。特定のアクティビティを検索するには、パレットのリスト・ボックスを使用して、表示されるリストを「OWB固有のアクティビティ」、「ユーティリティ・アクティビティ」または「コントロール・アクティビティ」のいずれかのアクティビティのタイプに絞り込みます。
パレットからアクティビティを選択してキャンバスにドラッグします。
エディタにより、キャンバスにアクティビティが表示され、名前が青でハイライトされます。
デフォルト名を受け入れるには[Enter]を押します。名前を変更するには、新規の名前を入力します。
エディタの左側にあるエクスプローラ・ウィンドウと左端にあるオブジェクト詳細ウィンドウに、アクティビティがリストされます。
「オブジェクトの詳細」で、アクティビティのパラメータを入力します。
これらのパラメータは、アクティビティのタイプによって異なります。たとえば、図7-5に、performer、subject、text_body、priorityなどを含む通知アクティビティのパラメータを示します。
各パラメータに対して、Warehouse Builderにより読取り専用の「名前」、「方向」および「データ型」が定義されます。また、各パラメータに対して、「バインド」、「リテラル」、「値」および「説明」の値を指定できます。
各パラメータには、次のプロパティがあります。
名前
アクティビティ・パラメータの名前。図7-5の「PRIORITY」など。特定のパラメータの詳細は、「プロセス・フローでのアクティビティの使用」でアクティビティ名を検索してください。
方向
パラメータの方向は、ユーザーが作成していないパラメータについては読取り専用です。方向「イン」は、パラメータがアクティビティの入力パラメータであることを示します。
データ型
パラメータのデータ型は、ユーザーが作成していないパラメータについては読取り専用です。すべてのデフォルト・パラメータに適切なデータ型が割り当てられます。
バインド
ユーザーが作成していないパラメータについて、プロセス・フローの外部からパラメータを渡すには、バインディングを使用します。パラメータを「バインド」に割り当てた場合は、「値」に割り当てたテキストが上書きされます。
リテラル
フィールド「値」にパラメータの値を入力した場合は、その値がリテラルであるか式であるかを示します。リテラル・データ型は、カレンダ・データ型を除いて、PL/SQLリテラル値仕様に従います。これらのデータ型は、プロセス・フローが異なるロケーションのデータ・ソースと対話するときに、標準書式で表されます。表7-1に、リテラル値の型、書式および例を示します。
表7-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 |
値
パラメータの値です。図7-5の「PRIORITY」など、一部のパラメータについては、値リストから選択できます。その他のパラメータには、デフォルト値が割り当てられています。この値は、新しい値を入力するか、「バインド」フィールドを使用して上書きできます。使用可能な値のリストがない、またはデフォルト値が設定されていない場合は、値を入力する必要があります。
説明
各プロパティの説明を入力できます(オプション)。
プロセス・フローの設計中に、既存のアクティビティを再利用できます。たとえば、プロセス・フローでマッピングに失敗するたびに、同じ管理者グループに電子メールを送信できます。電子メール・アクティビティ用のテンプレートを作成した後は、そのアクティビティを多数のプロセス・フローで使用したり編集します。
アクティビティ・テンプレートを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「プロセス・フロー」ノードの下にある「アクティビティ・テンプレート」ノードにナビゲートします。
テンプレート格納用のフォルダを作成するには、「アクティビティ・テンプレート」ノードを右クリックして「新規」を選択します。
フォルダに名前を割り当てます。
作成予定のテンプレートのタイプごとにフォルダを作成することを検討してください。たとえば、電子メール・テンプレートとFTPテンプレートの格納用に、個別のフォルダを作成できます。
「アクティビティ・テンプレートの作成」ウィザードが表示されます。
注意: ウィザードが自動的に表示されない場合は、フォルダを右クリックして「新規」を選択します。 |
アクティビティ・テンプレートの作成ウィザードに表示されるプロンプトに従って、名前と説明ページ、パラメータ・ページおよびウィザードのサマリー・ページを完了します。
プロセス・フローにテンプレートを使用する手順は、「アクティビティ・テンプレートの使用」を参照してください。
「アクティビティ・テンプレート」でのオブジェクトのネーミング規則は、「ネーミング・プリファレンス」で選択するネーミング・モードに応じて異なります。Warehouse Builderでは、リポジトリ内のオブジェクトごとにビジネス名と物理名が保持されます。ビジネス名とは、説明的なビジネス名です。物理名は、Warehouse Builderでコード生成時に使用される名前です。
一方のネーミング・モードで作業中にオブジェクト名を指定すると、Warehouse Builderでは他方のモード用にデフォルト名が作成されます。したがって、ビジネス名モードで作業中に、大/小文字の両方、特殊文字および空白を含むアクティブ・テンプレート名を割り当てると、Warehouse Builderではデフォルトの物理名が作成されます。
作成するアクティビティ・テンプレートの名前を割り当ててタイプを選択します。また、必要に応じてテンプレートの説明を記述します。
ネーミング・アクティビティ
物理ネーミング・モードでは、アクティベーション名は1文字から30文字までの英数字で、空白は使用できません。ビジネス・ネーミング・モードでは、2,000文字以内という制限があり、空白と特殊文字を使用できます。両方のネーミング・モードにおいて、名前はプロジェクト全体で一意にする必要があります。
アクティビティの記述
記述は2から2,000文字までの英数字で構成され、空白を含めることができます。アクティビティ・テンプレートの記述の指定はオプションです。
次のアクティビティ・テンプレートは、ドロップ・ダウン・メニューから使用できます。
割当
電子メール
FTP
ファイルが存在
手動
通知
ステータスの設定
SQLPlus
ユーザー定義
待機
図7-6に、電子メール・アクティビティ・テンプレートの名前と説明ページの例を示します。
ウィザードには、前に選択したアクティビティのタイプの「割当」、「手動」、「電子メール」、「ファイルが存在」、「データ監査」、「FTP」、「通知」、「ステータスの設定」、「SQLPlus」、「ユーザー定義」、「whileループ」、「待機」または「通知」アクティビティに基づいてパラメータが表示されます。
アクティビティのデフォルト値を入力します。プロセス・フローでアクティビティ・テンプレートを使用する場合、デフォルト値を受け入れることも編集することもできます。図7-7では、電子メールの件名およびメッセージ本文のデフォルト値を編集してマッピング名を挿入できます。
アクティビティ・テンプレートを使用する手順は、次のとおりです。
プロジェクト・エクスプローラで、「プロセス・フロー」ノードの下のプロセス・フロー・モジュールにナビゲートします。
プロセス・エディタを開くには、プロセス・フロー・モジュールを右クリックして「エディタを開く」を選択します。
プロセス・エディタで、表7-1に示すように、エクスプローラ・ウィンドウの「使用可能なオブジェクト」タブをクリックし、「アクティビティ・テンプレート」を開きます。
アクティビティ・テンプレートをキャンバスにドラッグ・アンド・ドロップします。
プロセス・フロー内のアクティビティ・テンプレートは、通常のアクティビティと同様に動作します。
アクティビティを編集するには、図7-9に示すように、エクスプローラ・ウィンドウの「選択したオブジェクト」タブをクリックし、オブジェクト詳細ウィンドウでアクティビティを編集します。
推移を使用して、アクティビティがプロセス・フローで発生する順序および条件を示します。推移を使用すると、直前のアクティビティの完了状態を基に、アクティビティを実行できます。
推移をキャンバスに追加する場合、デフォルトでは推移に適用される条件がありません。プロセス・フローは、前のアクティビティが終了すると、前のアクティビティの状態に関係なく続行します。
ソース・アクティビティ・タイプによって、条件が適用されていない推移の意味が異なります。アクティビティ・タイプが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などのいくつかのアクティビティには追加構成が必要です。特定のアクティビティのこれらの構成の詳細は、第22章「プロセス・フローでのアクティビティの使用」にリストされています。
プロセス・フローとアクティビティでは、概念を渡すPL/SQLパラメータがサポートされており、データを渡すことができるため、パラメータ化による再利用が容易になっています。これは、パラメータまたは変数として実装されたデータ・ストアを通じて実現されます。
パラメータを使用すると、プロセス・フローとそのアクティビティまたはサブプロセス間でデータを渡すことができます。
変数を使用すると、推移データを格納できます。このデータは、プロセス・フロー実行期間中保持されます。変数は、アクティビティ間でのデータの受渡しを可能にする主要な方法です。
プロセス・フローは、データ・ストア間でデータを渡せるようにするスコープ階層を実装します。図7-10に、データが渡される方向を示します。
プロセス・フローは、スコープ階層に関して次のルールに従います。
プロセス・フロー変数は、フロー・パラメータから初期化できますが、逆にフロー・パラメータをプロセス・フロー変数から初期化することはできません。
アクティビティ・パラメータは、プロセス・フロー変数およびプロセス・フロー・パラメータ間で双方向にデータを渡すことができます。
推移式は、その式のソース・アクティビティ・パラメータ、およびプロセス・フロー・パラメータとプロセス・フロー変数と照合して評価できます。
データ・ストアには、同じスコープ内の別のデータ・ストアからはアクセスできません。
ネームスペースを使用すると、PL/SQLと同様に、内部スコープのデータ・ストアでは、外部スコープのデータ・ストアを非表示にできます。非表示のデータ・ストア名は、データ・ストア名をプロセス・フロー名またはアクティビティで修飾することによって参照できます。次に例を示します。
My_PROC.VAR1
ネームスペースによって、同じスコープ内の別のデータ・ストアからデータを参照することはできません。
データ・ストアは、外部スコープ内の別のデータ・ストアにバインドでき、これによって、双方向のデータの受渡しがサポートされます。
プロセス・フローのバインドは、次のルールがあるPL/SQLと同じセマンティクスに従います。
すべてのデータは、プロセス・フロー内で値で渡されます。
変数はバインドによって初期化できます。値を戻すことはできません。
INOUTパラメータは、外部スコープ内のINパラメータにバインドできます。値で渡される出力値は、監査後に廃棄されます。
図7-10からわかるように、変数ではプロセス・フロー・パラメータにデータを渡すことができないため、この受渡しは、変数とパラメータにバインド可能な割当演算子を使用して実行されます。
Oracle Warehouse Builderでは、パラメータ値の導出に関するPL/SQL式の評価、および複雑な式の推移の評価がサポートされています。
式では、データ・ストアに対して正しく入力された値を生成する必要があります。VARCHARからの自動変換がサポートされています。式が推移と関連付けられている場合、結果はBOOLEANであることが必要です。
評価時に、式は、その式が含まれている外部スコープにアクセスします。このため、アクティビティのパラメータに関する式は、その式の評価でプロセス・フロー変数およびプロセス・フロー・パラメータを使用できます。
Warehouse Builderでは、現在のアクティビティおよび所有プロセス・フローのその他のデータ値も式で使用できます。表7-2にこれらの値を示します。
表7-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。 |
次の追加定数も提供されます。
識別子 | タイプ | 説明 |
---|---|---|
SUCCESS | NUMBER | SUCCESSの列挙値。 |
警告 | NUMBER | WARNINGの列挙値。 |
ERROR | NUMBER | ERRORの列挙値。 |
推移エディタを使用して、列挙された条件の1つを指定するか、複合条件の式を記述します。列挙された条件は正常終了、警告、エラーなどで、表7-3に示すようにキャンバスに表示されます。
表7-3 推移条件のタイプ
アイコン | 推移 | 説明 |
---|---|---|
![]() |
正常終了 |
プロセス・フローは、直前のアクティビティが正常終了した場合にのみ続行されます。 |
![]() |
警告 |
プロセス・フローは、直前のアクティビティが警告で終了した場合にのみ続行されます。 |
![]() |
エラー |
プロセス・フローは、直前のアクティビティがエラーで終了した場合にのみ続行されます。 |
![]() |
警告 |
プロセス・フローは、直前のアクティビティが警告で終了した場合にのみ続行されます。 |
![]() |
複合 |
プロセス・フローは、直前のアクティビティで式に指定した基準を満たす値が戻された場合にのみ続行されます。 |
![]() |
拡張 |
プロセス・フローは、直前の通知アクティビティが拡張結果で終了した場合にのみ続行されます。 |
拡張推移は、拡張結果を戻す唯一のアクティビティであるため、通知アクティビティにのみ有効です。このアイコンをアクティビティが取得するのは、結果が#MAIL、#NOMATCH、#TIE、#TIMEOUTに設定されている場合です。表7-4に、拡張推移の出力と説明を示します。
表7-4 拡張推移の出力と説明
出力 | 説明 |
---|---|
#NOMATCH |
候補が最低票数を得票しなかった投票通知の結果。 |
#TIE |
同一得票数となった投票通知の結果。 |
|
通知にメール・エラーが発生しました。受信しなかった受信者がいるため、メールが取り消されました。 |
#TIMEOUT |
通知は、構成された時間内に応答を受信しませんでした。 |
アクティビティに送信アクティビティが1つしかなければ、表7-3に示す条件のいずれかを指定するか、推移を無条件にしておくことができます。
複数の送信推移に関する使用ルールは、アクティビティのタイプに応じて異なります。一般ルールでは、SUCCESS、WARNING、ERRORおよびUNCONDITIONALをそれぞれ1つと必要な数の複合条件を使用できます。ただし、AND、FORKおよびORなどのコントロール・アクティビティを使用する場合は例外です。
あるアクティビティからの複数の送信推移を追加する場合は、条件が競合しないことを確認してください。競合が発生するのは、プロセス・フローの論理で複数の送信推移をTRUEと評価できる場合です。
図7-11に、MAP1に可能な3つの完了ステータスに基づいて異なるアクティビティがトリガーされるプロセス・フローの一部を示します。一度に満たすことができるのはこれらの条件のうち1つのみであるため、競合は存在しません。無条件推移または別の条件付き推移を追加しようとすると、2つの推移条件がTRUEとなり、プロセス・フローが無効になります。