BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

WebLogic Integration Studio ユーザーズ ガイド

 前 次 目次 索引 PDFで表示  

ワークフロー テンプレートの定義

この章では、ワークフロー テンプレート、テンプレートの定義、ワークフロー変数およびノードの定義と保守に関するコンセプトやタスクについて説明します。構成は以下のとおりです。

 


テンプレート定義タスクの概要

詳細なワークフロー テンプレートの定義は、テンプレートの作成、テンプレート定義の作成、フローの設計、変数の定義、ノードのプロパティの指定および例外ハンドラの定義(省略可能)で構成されます。ワークフローの定義は、各レベルでリビジョンおよび改良を要する反復的なプロセスですが、新しいテンプレートを定義する場合、これらのタスクの実行は以下の手順をお勧めします。

注意: また、ワークフロー テンプレートの定義を開始する前に、ワークフロー式の言語や Studio の Expression Builder および XPath Wizard ツールについての学習も必要です。テンプレート定義のラベル作成、分岐ノードの条件の定義、イベントの定義など、この節で説明するタスクの多くではダイアログボックス フィールドに式を入力する必要があります。ワークフロー式に関する詳細については、ワークフロー式の使用法を参照してください。

  1. ワークフロー テンプレートの作成手順の詳細は、ワークフロー テンプレートを作成するを参照してください。あるいは、エクスポート済みのワークフロー パッケージからテンプレートをインポートします。手順の詳細は、ワークフロー パッケージのインポートを参照してください。

  2. テンプレート内で、テンプレート定義を作成します。手順の詳細は、ワークフロー テンプレートを作成するを参照してください。あるいは、エクスポート済みのワークフロー パッケージまたは XML ファイルからテンプレート定義をインポートします。その手順については、ワークフロー パッケージのインポートおよびXML からワークフロー テンプレート定義をインポートするを参照してください。

  3. 設計領域にシェイプとコネクタを追加して高レベルのワークフローを作成します。手順の詳細は、ノードに関する作業を参照してください。

  4. 機能を認識しやすくするため、タスク、イベントおよび開始ノード型の名前を変更します。手順の詳細は、ノードの名前を変更するを参照してください。

  5. 変数の作成を開始します。手順の詳細は、変数を作成するを参照してください。

  6. 条件を定義して分岐ノードの名前を変更します。分岐のプロパティの定義の手順については、分岐のプロパティを定義するを参照してください。

  7. トリガ型とプロパティ、変数の初期設定を定義し、必要に応じてイベントトリガ開始の場合のイベント キーおよび時限開始の場合のカレンダーを設定(省略可能)して、開始ノードのプロパティを指定します。イベント キーの詳細については、イベント キーのコンフィグレーションを参照してください。カレンダーの詳細については、ビジネス カレンダーの管理を参照してください。

    あるいは、エクスポート済みのイベント キーおよびカレンダーを既存のワークフロー パッケージからインポートします。詳細については、ワークフロー パッケージのインポートを参照してください。開始のプロパティ定義の手順については、イベントトリガ型開始のプロパティを定義するを参照してください。

  8. イベント ノードのプロパティを指定し、イベントのイベント キーのコンフィグレーション(省略可能)を行います。詳細については、イベント キーのコンフィグレーションを参照してください。

    あるいは、エクスポート済みのイベント キーを既存のワークフロー パッケージからインポートします。詳細については、ワークフロー パッケージのインポートを参照してください。イベント ノード プロパティ定義の手順については、イベント プロパティを定義するを参照してください。

  9. 手動割り当てタスクに対するタスク ノード プロパティを指定します。タスク プロパティの説明および手順については、タスクのプロパティを定義するを参照してください。

  10. (省略可能) タスク ノードおよび他のノードにアクションを追加します。アクションの追加と定義の手順については、アクションの定義を参照してください。

  11. (省略可能)テンプレート定義の例外ハンドラを定義し、それらのハンドラを呼び出すアクションを追加します。例外ハンドラについては、ワークフロー例外の処理で説明します。

  12. テンプレート定義を保存します。手順の詳細は、テンプレート定義を保存し終了するを参照してください。

  13. ワークフローを実行する準備ができたら、テンプレート定義を更新、ラベリングおよびアクティブ化するで説明するようにテンプレート定義をアクティブにし、それを保存します。

 


テンプレートに関する作業

ワークフロー テンプレートとは、つまり WebLogic Integration ワークフロー テンプレート定義用のフォルダまたはコンテナです。各ワークフロー テンプレートには、1 つまたは複数のワークフロー テンプレート定義を保持できます。ワークフロー テンプレート定義は、テンプレート定義に関する作業で説明するように、フォルダ ツリーで Effective (有効) および Expiry (終了) 日時によって識別されます。

図5-1 ワークフロー テンプレートとワークフロー テンプレート定義


 

テンプレートは、オーガニゼーションに対して 1 対複数の関係を持ちます。つまり、テンプレートはそのシステムにおいて固有のものとなりますが、複数のオーガニゼーションに対して定義できます。テンプレートは、定義されている各オーガニゼーションのフォルダ ツリーに、そのすべてのテンプレート定義と共に表示されます。1 つのオーガニゼーションのフォルダ ツリーでテンプレート定義に加えられた変更(削除も含む)は、そのテンプレートが関連付けられている他のすべてのオーガニゼーションのフォルダ ツリーに自動的に表示されます。

Import/Export 機能を用いてテンプレートおよびテンプレート定義をインポートする場合、テンプレートは上書きされますが、テンプレート定義は上書きされません。既存のものと同じ日付のテンプレート定義をインポートする場合、既存のテンプレート定義は上書きされず、別の定義が作成されます(テンプレートのインポートの詳細については、ワークフロー パッケージのインポートを参照)。

ワークフロー テンプレートを作成する

注意: テンプレートを作成するためにはテンプレートの作成パーミッションが必要です。パーミッション レベルの詳細については、ユーザおよびロールへのパーミッションの割り当てを参照してください。

ワークフロー テンプレートを作成する手順は、以下のとおりです。

  1. オーガニゼーションがアクティブな状態で、Studio のメイン ウィンドウの [テンプレート] フォルダを右クリックします。

  2. ポップアップ メニューから [テンプレートを作成] を選択します。[テンプレートのプロパティ] ダイアログ ボックスが表示されます。

    図5-2 [テンプレートのプロパティ] ダイアログ ボックス


     

  3. [名前] フィールドで、ワークフロー テンプレートに対する有意な固有名を入力します。このワークフロー テンプレート内で定義されたすべてのワークフロー テンプレート定義は、実行時にワークフロー インスタンスになると識別にこの名前を用います。

  4. ダイアログ ボックスの [オーガニゼーション] セクションで、このワークフロー テンプレートを割り当てたい単一あるいは複数のオーガニゼーションを選択します。ワークフロー テンプレートをすべてのオーガニゼーションに対して有効にするには [すべてのオーガニゼーション] を、オーガニゼーションをクリアしてリセットするには [オーガニゼーションをクリア] をクリックします。

    注意: 1 つのテンプレートを複数のオーガニゼーションに関連付ける場合、そのテンプレートに加えたすべての変更は、他のオーガニゼーションがそのテンプレートを表示すると自動的に反映されます。

  5. [OK] をクリックします。フォルダ ツリーの [テンプレート] フォルダの下に新しいワークフロー テンプレートが表示されます。

テンプレート プロパティを更新する

[テンプレートのプロパティ] ダイアログ ボックスで、作成後またはインポート後にテンプレートを追加されたオーガニゼーションに割り当てることができます(手順については、ワークフロー パッケージのインポートを参照)。

テンプレート プロパティを更新する手順は、以下のとおりです。

  1. フォルダ ツリーの上の [オーガニゼーション] フィールドで、更新するテンプレートが定義されているオーガニゼーションを選択します。

  2. フォルダ ツリーで [テンプレート] フォルダを展開し、テンプレートを右クリックして、ポップアップ メニューから [プロパティ] を選択し、[テンプレートのプロパティ] ダイアログ ボックスを開きます。

  3. このテンプレートが割り当てられているオーガニゼーションに必要な変更を加えます。

  4. [OK] をクリックして変更を保存し、ダイアログ ボックスを閉じます。

テンプレートを削除する

ワークフロー テンプレートを削除すると以下のことが起こります。

注意: テンプレートを削除するためにはテンプレートの削除パーミッションが必要です。パーミッション レベルの詳細については、ユーザおよびロールへのパーミッションの割り当てを参照してください。

ワークフロー テンプレートを削除する手順は、以下のとおりです。

  1. テンプレートがオープン テンプレート定義を含む場合、描画ウィンドウの右上隅にある [X] をクリックするか、フォルダ ツリーのテンプレート定義を右クリックしてポップアップ メニューから [閉じる] を選択してこれらを閉じます。

  2. フォルダ ツリーのワークフロー テンプレート名を右クリックします。

  3. ポップアップ メニューから [削除] を選択します。

  4. 「テンプレートの削除」警告メッセージが表示された場合は [はい] をクリックして、ワークフロー テンプレートとそのすべてのワークフロー テンプレート定義を削除するか、[いいえ] をクリックして削除をキャンセルします。

    テンプレートのインスタンスが存在する場合、インスタンスも削除するよう要求されます。インスタンスを削除してよい場合は [はい] をクリックし、削除をキャンセルする場合は [いいえ] をクリックします。

 


テンプレート定義に関する作業

フォルダ ツリーのワークフロー テンプレート定義名は、その有効日時および終了日時で構成されます。有効日時および終了日時は、ワークフロー テンプレート定義がインスタンスあるいは実行に有効となる時間の範囲を表します。同じ有効日時および終了日時を持つ複数のテンプレート定義が存在する場合もあります。

インスタンスに有効なテンプレート定義を作成するためには、まずそれをアクティブにする必要があります。設計時に、テンプレート定義を、いくつでもアクティブにできますが、唯一、同じ有効(開始)日時を持つテンプレート定義はアクティブにできないという制限があります。

有効および終了日時の機能の利点は、1 年を通じて異なるテンプレート定義を手動で非アクティブあるいはアクティブにすることなく、ある期間に対して正確に有効なワークフロー テンプレート定義を作成できるという点です。たとえば、特定のワークフロー テンプレート定義を 1 月から 3 月まで実行し、異なるタスクや変数を持つ次のワークフロー テンプレート定義を 4 月から 6 月まで実行しなければならず、さらに次の定義を 7 月から 9 月まで実行しなければならない周期的ビジネスの場合などです。1 つのテンプレート定義を手動で非アクティブにして、別のテンプレート定義を四半期ごとにアクティブにする代わりに、異なる有効日時および終了日時を指定し、それらすべてをアクティブとしてマークすると、サーバがワークフローのインスタンス化の際に正しいバージョンを自動的に選択します。

一方、複数のアクティブなテンプレート定義を持つことは可能ですが、実際に実行時にインスタンス化されるのは 1 つのテンプレート定義のみです。つまり、有効および終了日時は、ローリング方式で設計するよう注意し、日付のオーバーラップを回避する必要があります。日付がオーバーラップするアクティブなテンプレート定義がある場合(たとえば 1 月から 3 月までの定義と 2 月から 4 月までの定義が混在する場合)、プロセス エンジンはデータベースから検索した最初の定義を取り上げます。これは通常、設計時に先に作成された定義です。

注意: 異なるビジネス条件に従って異なるフローを指定する場合、同じテンプレート定義で複数の開始ノードを使用します。詳細については、開始のプロパティを定義するを参照してください。

ワークフロー テンプレート定義を作成する

テンプレート定義を作成する場合、その有効および終了の日付を指定します。

監査エントリを作成アクションを用いて、クライアント アクセスおよび実行時間など、実行時のワークフロー情報のロギングを有効にし、ワークフロー全体を通じて各ポイントにおけるカスタム エントリを可能にする監査を有効にすることもできます(詳細については、監査エントリを作成するを参照)。監査情報は、XML メッセージとしてデフォルトの JMS 監査トピック com.bea.wlpi.AuditTopic にポスティングされ、サーバ上のアクティブな WebLogic Integration ドメインの logs ディレクトリにあるテキスト ファイル myserver.log に書き込まれます。

注意: テンプレート定義を作成するためには、テンプレートを作成パーミッションが必要です。パーミッション レベルの詳細については、ユーザおよびロールへのパーミッションの割り当てを参照してください。

ワークフロー テンプレート定義を作成する手順は、以下のとおりです。

  1. フォルダ ツリーの上の [オーガニゼーション] フィールドで、定義の追加を行うテンプレートが定義されているオーガニゼーションを選択します。

  2. フォルダ ツリーで [テンプレート] フォルダを展開し、テンプレートを右クリックし、ポップアップ メニューから [テンプレート定義を作成] を選択して [テンプレート定義] ダイアログ ボックスを表示します。ダイアログ ボックスにはテンプレート定義が属するテンプレートの名前が表示されます。

    図5-3 [テンプレート定義] ダイアログ ボックス


     

  3. [一般] タブで以下を指定します。

    注意: [終了] オプションが選択されていない場合、ワークフロー テンプレート定義は常に有効となります。

  4. (省略可能) [監査を有効化] を選択します。これにより、実行時のワークフロー情報をロギングできます。

  5. (省略可能) [メモ] フィールドにテンプレート定義を説明する全般的なコメントを入力します。

  6. [OK] をクリックしてワークフロー設計領域を表示します。

ワークフロー設計領域ではデフォルトのワークフロー テンプレート定義がツールバーと共に表示されます。このツールバーにはワークフロー テンプレートの定義に用いられる描画シェイプが含まれます。デフォルトのワークフロー テンプレート定義には、開始、タスク、完了の 3 つのシェイプが含まれます。

図5-4 ワークフロー設計領域


 

ノードに関する作業で説明するようにノードやコネクタを追加し、変数に関する作業で説明する変数を追加してテンプレート定義を行うことができます。

既存のテンプレート定義を開く

テンプレート定義の読み取り専用プロパティは、フォルダ ツリーでいずれかのフォルダを右クリックしてポップアップ メニューから [プロパティ] を選択して見ることができますが、テンプレート定義は開かれていない限り修正を加えることはできません。テンプレート定義は開くとロックされるので、他のユーザは読み取り専用モードでしか開くことができません。

注意: テンプレート定義を開くためにはテンプレートを作成パーミッションが必要です。パーミッション レベルの詳細については、ユーザおよびロールへのパーミッションの割り当てを参照してください。

既存のワークフロー テンプレート定義を開く手順は、以下のとおりです。

  1. フォルダ ツリーの上の [オーガニゼーション] フィールドで、開きたいテンプレートが定義されているオーガニゼーションを選択します。

  2. フォルダ ツリーで [テンプレート] フォルダを展開して、目的のテンプレート定義を含むテンプレート フォルダを展開し、さらにテンプレート定義を右クリックしてポップアップ メニューから [開く] を選択します。

    選択したワークフロー テンプレート定義のインスタンスが既に存在する場合、つまり選択したワークフロー テンプレート定義が開始済みでテンプレート定義のインスタンスがサーバに存在する場合は、次の図に示すように警告メッセージが表示されます。

    図5-5 [既存のインスタンス] ダイアログ ボックス


     

  3. 以下のオプションのうち 1 つを選択する。

注意: 実行中のインスタンスを持つテンプレート定義の修正は行わないでください。このような定義を修正すると、これらのインスタンスに予測不可能な例外が発生する場合があります。そのようなテンプレート定義に変更を加える場合は以下を行ってください。

テンプレート定義を保存し終了する

Studio のフォルダ ツリーでは、保存が必要な各ワークフロー テンプレート定義の左側にアスタリスク(*)が表示されます。

テンプレート定義を保存するには以下のいずれかを行います。

テンプレート定義を閉じると、ロックが解除され別のユーザによる使用が可能になります。

ワークフロー テンプレート定義を終了するには以下のいずれかを行います。

テンプレート定義を更新、ラベリングおよびアクティブ化する

テンプレート定義を作成し、開いたら(ワークフロー テンプレート定義を作成するで説明)、作成時に指定したプロパティを更新し、ラベルを追加してアクティブ化できます。

ここで作成するワークフロー ラベルは、実行時にタスク リストのワークフロー ラベル カラムに表示され Worklist ユーザに示されます。また、実行時に Studio の [ワークフロー インスタンス] ダイアログ ボックスの [ワークフロー ラベル] フィールドにも表示されます(詳細については、ワークフロー インスタンスの状態を表示するを参照)。これは、ワークフローのインスタンスを識別するために用いられ、日時、請求書番号、顧客名あるいは他と区別するための関連情報が含まれます。ラベルはワークフロー式言語で公式化され、定数、変数、演算子およびその他の式コンポーネントを含むことが可能です。ワークフロー式機能および構文に関する詳細については、ワークフロー式の使用法を参照してください。

新しいテンプレート定義を作成するとデフォルトで非アクティブな状態になります。現在開発中のテンプレート定義は、不用意に開かれることを避けるため通常は非アクティブとなっています。ただし、ワークフローがインスタンス化される前、あるいは実行環境に置かれる前に、いずれか 1 つのテンプレート定義をアクティブにする必要があります。

ワークフロー テンプレート定義のプロパティを更新する手順は、次のとおりです。

  1. ワークフロー テンプレート定義が開いた状態で設計ウィンドウの任意の場所を右クリックするか、フォルダ ツリーのテンプレート定義を右クリックして、ポップアップ メニューから [プロパティ] を選択し、[テンプレート定義] ダイアログ ボックスを開きます。

    図5-6 テンプレート定義のプロパティの更新


     

  2. [テンプレート定義] ダイアログ ボックスの [一般] タブの [ワークフロー ラベル] フィールドに、実行時にラベルを生成するために評価される式を入力します。ワークフロー式の構築に関する詳細については、ワークフロー式の使用法を参照してください。

  3. テンプレート定義をアクティブにするには [アクティブ] チェック ボックスにチェックします。

  4. (省略可能) [開始] および [終了] を更新し、監査を有効または無効にします。

  5. (省略可能) [テンプレート定義] ダイアログ ボックスの [例外ハンドラ] タブで、例外ハンドラを追加、更新または削除します。例外のハンドリングに関する詳細については、、ワークフロー式の使用法を参照してください。

  6. [OK] をクリックして変更を保存し、ダイアログ ボックスを閉じます。

ワークフロー テンプレート定義をコピーする

Studio では、同一テンプレート内の既存のワークフロー テンプレート定義をコピーできます。コピーを行うと、割り当てられたすべてのワークフロー テンプレート定義プロパティもコピーされます。これは、同様のプロパティを持つ複数のワークフロー テンプレート定義を作成する必要がある場合に時間を節約できます。新しいワークフロー テンプレート定義のプロパティは必要に応じて修正できます。

注意: コピーされた(新しい)ワークフロー テンプレート定義はアクティブにマークされていません。これをインスタンス化のために有効にしたい場合は、まずアクティブにする必要があります。詳細については、テンプレート定義を更新、ラベリングおよびアクティブ化するを参照してください。

既存のワークフロー テンプレート定義をコピーする手順は、以下のとおりです。

  1. コピーするワークフロー テンプレート定義を右クリックし、ポップアップ メニューから [コピー] を選択します。選択したワークフロー テンプレート定義のコピーは、フォルダ ツリーの最後のワークフロー テンプレート定義として直ちに貼り付けられます。このコピーはオリジナルのワークフロー テンプレート定義と同じ有効および終了日を持ち、設計領域に展開されます。

  2. テンプレート定義の名前を変更し、プロパティを変更する場合は、テンプレート定義を更新、ラベリングおよびアクティブ化するの手順に従います。

テンプレート定義を印刷する

Studio から、ワークフロー テンプレート定義ダイアグラムを印刷できます。印刷機構を呼び出す方法は 2 通りあります。

[テキスト] タブには、タスク、イベント、分岐および完了ノード内のアクション(アクション内のサブアクションを含む)の詳細に加え、アクションおよびノード メモなど、各ワークフロー ノードに関連した情報が含まれます。

[グラフィック] タブにはワークフロー テンプレート定義のダイアグラムが含まれます。

図5-8 ワークフロー グラフィックの印刷


 

[印刷] をクリックして選択したタブの情報を印刷するか、[すべて印刷] をクリックして [テキスト] タブに含まれる情報と [グラフィック] タブに含まれるダイアグラムの両方を印刷します。

[印刷] ダイアログ ボックスで、ワークフローを印刷するための適切な設定を行います。

テンプレート定義を削除する

ワークフロー テンプレート定義を削除すると以下のことが起こります。

注意: テンプレート定義を削除するためには、テンプレートの削除パーミッションが必要です。パーミッション レベルの詳細については、ユーザおよびロールへのパーミッションの割り当てを参照してください。

ワークフロー テンプレート定義を削除する手順は、以下のとおりです。

  1. テンプレート定義が開かれている場合、描画ウィンドウの右上隅にある [X] をクリックするか、フォルダ ツリーのテンプレート定義を右クリックしてポップアップ メニューから [閉じる] を選択してこれらを閉じます。

  2. フォルダ ツリーのワークフロー テンプレート定義を右クリックします。

  3. ポップアップ メニューから [削除] を選択します。

  4. 「ワークフローを削除」警告メッセージが表示されたら、[はい] をクリックしてワークフロー テンプレート定義を削除するか、[いいえ] をクリックして削除を取り消します。

    テンプレートの定義にインスタンスがあれば、そのインスタンスも削除するように要求されます。インスタンスを削除してよい場合は [はい] をクリックし、削除をキャンセルする場合は [いいえ] をクリックします。

 


ノードに関する作業

最初にワークフロー テンプレート定義を作成した後、デフォルトでは、設計領域に開始、タスクおよび完了の 3 つのシェイプ(ノード)が存在します。開始ノードはデフォルトでは手動による開始に設定されており、タスク ノードはワークフローを開始する Worklist ユーザにタスクを割り当てます。これらは、実行可能なワークフローを作成するために必要な最小限のプロパティです。(開始ノード プロパティの編集の詳細についてはイベントトリガ型開始のプロパティを定義するを、タスク ノード プロパティの編集の詳細については、タスクのプロパティを定義するを参照)。

次の表に、ワークフロー シェイプ、そのノード名および目的を示します。

表5-1 ワークフローシェイプおよびコネクタ

記号

ノード タイプ

目的


開始

ワークフローの開始を示し、異なる方法(手動、特定の時間、イベント、あるいは別のワークフローにより)でトリガすることが可能。開始ノードに関する詳細については、開始のプロパティを定義するを参照。


イベント

外部アプリケーションや別のワークフロー、あるいはプラグイン定義イベントからの内部 JMS キューで受け取った XML メッセージによってトリガされるイベントを表す。イベント ノードに関する詳細については、イベント プロパティを定義するを参照。


タスク

さまざまなアクションを定義するノードを表す。ユーザ割り当てタスクも定義する。タスク ノードに関する詳細については、タスクのプロパティを定義するを参照。


分岐

True または False を評価するワークフローにおける条件を表す。True か False かにより、異なるワークフロー パスに分岐する。詳細については、分岐のプロパティを定義するを参照。


And 結合

2 つの別々のパスを AND ゲートで結合する。どちらのパスもフローを処理する前に実行を終了している必要がある。また、ワークフローに追加した後で AND を OR 結合に変更することも可能。詳細については、結合のプロパティを定義するを参照。


Or 結合

2 つの別々のパスを OR ゲートで結合する。どちらかのパスがフローを処理する前に実行を終了している必要がある。コントロールが単一のパスから結合に続いて起こるノードに渡されると、付随するすべての未実行タスクは実行されない。また、ワークフローに追加した後で OR を AND 結合に変更することも可能。詳細については、結合のプロパティを定義するを参照。


完了

ワークフローの終了を示す。詳細については、完了のプロパティを定義するを参照。


コネクタ

ワークフロー ノードの接続に用いられる。矢印は、フロー内で次に実行されるノードを示す。


 

ノードを追加、配置および接続する

設計領域のシェイプを操作するために、以下を行うことができます。

注意: ツールバーに関する詳細については、ツールバーの使い方を参照してください。

設計領域にノードを追加すると、ノードは直ちにフォルダ ツリーにも表示されます。ノードにはデフォルト名が付けられます。この名前は設計領域に配置した順番を示す番号を含み、タスク ノードの場合は T1、T2、T3 のようになります。ノードの名前を変更し、プロパティを編集する場合は、ノード プロパティに関する作業を行うを参照してください。

ノードまたはコネクタを削除する

ノードを削除する手順は、以下のとおりです。

  1. 以下のいずれか 1 つを実行します。

  2. 警告メッセージが表示されたら、削除する場合は [OK] を、この操作を取り消す場合は [取消し] をクリックします。

コネクタを削除する手順は、以下のとおりです。

  1. コネクタを右クリックし、ポップアップ メニューから [削除] を選択します。

  2. メッセージが表示されたら削除を確認します。そのノードとの間のすべてのコネクタが削除されます。

ワークフロー設計のガイドラインとヒント

シェイプを追加、接続、配置する際、以下の設計ガイドラインを覚えておくと便利です。

設計ガイドラインの追加情報については、『BPM ワークフローの設計ベスト プラクティス ガイド』を参照してください。

ノード プロパティに関する作業を行う

ワークフロー設計領域にノード型を配置し、そのプロパティを指定することができます。たとえば、最初のタスクとしてノードの名前を変更し、ワークフローにおけるノードの機能を認識しやすくできます。以下の節では、すべてのタイプのノードに共通するプロパティについての説明、および設定手順について説明します。ノードの各タイプ固有のプロパティについては各ノード タイプについて説明する節を参照してください。

ノードのプロパティにアクセスするには以下のいずれかを行います。

ノードの名前を変更する

結合および完了を除くすべてのノード タイプに有意な名前を付けることができます。また、分岐に対しては識別のための条件式を入力する必要があります。詳細については、分岐のプロパティを定義するを参照してください。

ノードの名前を変更する手順は、以下のとおりです。

  1. イベント、開始またはタスク ノードに対する [プロパティ] ダイアログ ボックスを開きます。

  2. [名前] フィールドに Check Inventory など、実行するアクションを表す有意な名前を入力します。

  3. [OK] をクリックして変更を保存します。

サクセサ ノードを指定または更新する

すべてのノードの [プロパティ] ダイアログ ボックスには、現在のワークフローの全ノードを一覧表示する [次] タブがあります。ワークフローにおける次のノードを、ノード名の横にあるチェックによって指定する。このタブを使って、現在のノードに後続ノード(複数可)を指定する、または設計領域で定義された後続ノードを変更できる。タブ内のチェック ボックスにチェックするかチェックを外すと、設計領域内に表示されたノード間をつなぐ線が自動的に引き直される。

図5-9 ノードの [プロパティ] ダイアログ ボックスの [次] タブ


 

ノードへの注意を追加する

すべてのノードの [プロパティ] ダイアログ ボックスには、ノードやノードに含まれるアクションに関するコメントを入力できる [メモ] テキスト ボックスがあります。これは、同じワークフローにアクセスする他のユーザが、そのワークフローのロジックや設計を理解する必要のある場合に役立ちます。

図5-10 ノードの [プロパティ] ダイアログ ボックスの [メモ] タブ


 

さらに、分岐ノードおよびタスク ノードには、アクションに対して定義されたメモを見ることのできる [アクション メモ] タブがあります(アクションへコメントを追加するを参照)。[タスクのプロパティ] または [分岐のプロパティ] ダイアログ ボックス左のペインでアクションを選択すると、そのアクション定義に対するメモが表示されます。

ワークフロー アクションを追加、更新、並べ替えおよび削除する

結合(AND および OR)を除くすべてのノードでは、そのプロパティ ダイアログ ボックスでアクションの追加、更新、並べ替えそして削除が可能です。

図5-11 ノードの [プロパティ] ダイアログ ボックスの [アクション] タブ


 

アクションは、ノードがアクティブになった場合に実行する操作を定義するものです。ノードのプロパティ ダイアログ ボックスの [アクション] タブで指定したアクションは、ワークフローが次のノード(およびそれに含まれるアクション)に進む前に実行されます。

タスク ノードではアクションの追加が必須ですが、その他のノードではサクセサ タスク ノードの追加によって同一ロジックが実装される場合が多いため、アクションの追加は任意であり、推奨されません。アクションの追加、更新、削除、並べ替えそして定義についての詳細については、アクションの操作で説明します。

ノードをコピーする

ワークフロー テンプレート定義内のノードを表すシェイプをコピーして、現在のワークフロー テンプレート定義、または別の開いているワークフロー テンプレート定義に貼り付けることができます。ノード内で定義されたアクションおよびプロパティもコピーされるため、コピー機能を用いて若干の修正のみで再利用が可能な設計パターンを作成できます。

注意: テンプレート定義間でノードをコピーする場合には、そのノードが参照する変数とそのアクションがコピー先のテンプレート定義内で作成されていること、その他の参照オブジェクトであるロール、ユーザ、ビジネス カレンダーなどがそのテンプレートに関連付けられたオーガニゼーションについて定義されていることを確認する必要があります。

ノード内に定義されているすべてのプロパティとアクションもコピーされます。

テンプレート定義間でノードとそのプロパティをコピーする手順は、以下のとおりです。

  1. 以下のいずれか 1 つを実行します。

  2. 以下のいずれか 1 つを実行します。

    コピーしたノードが設計領域とフォルダ ツリーに表示されます。このアクションの [プロパティ] ダイアログ ボックスが表示されます。すべての設定が元のアクションからコピーされています。

  3. 必要に応じて、ノードのプロパティを変更します。

タスクおよびイベント用途を表示する

タスク アクションやワークフロー イベントを取消しアクションなどによりイベント またはタスク ノードが参照される別の場所を閲覧できます。詳細については、アクション カテゴリを参照してください。

タスク またはイベント ノードの使用場所を閲覧する手順は、以下のとおりです。

  1. 設計領域またはフォルダ ツリーで目的のイベントまたはタスク ノードを右クリックし、ポップアップ メニューから [使用場所] を選択して [タスクの使用場所] または [イベントの使用場所] ダイアログ ボックスを開きます。

    図5-12 [タスクの使用場所] ダイアログ ボックス


     

  2. 選択したノードを参照する項目が表示されるまでフォルダを展開します。

  3. (省略可能)以下に示すダイアログ ボックスのボタンを使用して操作を行います。

  4. [OK] をクリックして、[タスクの使用場所] または [イベントの使用場所] ダイアログ ボックスを閉じます。

 


変数に関する作業

各ワークフロー テンプレート定義には、関連した一連の変数を割り当てることができます。変数は、ビジネス オペレーションから返された値、XML ドキュメントから抽出された値、あるいはワークフロー アクションにより明示的に設定された値を持つことができます。また、変数は、分岐ノードの条件の評価、Worklist クライアント アプリケーションからのレスポンス結果の保存など、ワークフローにより他の目的に用いられることもあります。

すべてのワークフロー テンプレート定義に変数が必要なわけではありません。しかし、変数が必要な処理を含むワークフロー テンプレート定義については、ノード プロパティやアクションなどの他のワークフロー コンポーネントの定義を開始する前に変数を定義したり、または設計プロセスで変数を追加したりできます。

ワークフロー変数の適用範囲はワークフロー全体です。つまり、単一の変数はワークフロー テンプレート定義インスタンス内のすべてのオブジェクトによって共有されます。よって、変数はフォルダ ツリーのワークフロー テンプレート定義レベルで定義され、ワークフロー変数と呼ばれます。

変数は、次のいずれかのタイプとなります。

表5-2 ワークフロー変数のタイプおよび初期値

変数タイプ

内容

初期値

Boolean

ブール値 True または False

false

日付

Java date オブジェクト

現在の日付

Double

倍精度浮動小数点の数

0.0

エンティティ EJB

ビジネス オペレーションを実行アクションによって呼び出されるエンティティ EJB への参照(ビジネス オペレーションを呼び出すを参照)

null

Integer

長整数

0

Java オブジェクト

ビジネス オペレーションを実行アクションによって呼び出される Java クラスへの参照(ビジネス オペレーションを呼び出すを参照)。

null

セッション EJB

ビジネスオペレーションを実行アクションによって呼び出されるセッション EJB への参照(ビジネス オペレーションを呼び出すを参照)。

null

文字列

文字列

空の文字列

XML

XML ドキュメント(詳細については、変数値の設定を参照)。

null


 

注意: 変数タイプに対してplug-inが定義されている場合、追加の変数タイプが選択可となる場合があります。

注意: 上記の表に示した初期値は、サーバのスタートアップ スクリプトの設定によって決められたものです。この設定を修正して、すべてのデータ型の初期値を NULL に変更できます。詳細については、『WebLogic Integration の起動、停止およびカスタマイズ』の「WebLogic Integration のカスタマイズ」にある「Null 変数をサポートする BPM のコンフィグレーション」を参照してください。

さらに、ワークフローが別のワークフローによって呼び出される場合(詳細については、開始のプロパティを定義するを参照)、変数が入力または出力どちらのパラメータとして機能するかを指定する必要があります。入力パラメータは、変数がその値を呼び出し側、つまり親ワークフローから受け取ることを示します。出力パラメータは、呼び出し元のワークフローに返された値を変数が持つことを示します。

さらに、入力パラメータに対しては、このパラメータが必須であるかどうかも指定することもできます。入力パラメータが必須の場合、呼び出し側(親)ワークフローから変数の値が受け取られるまでワークフローは開始されません。値が受け取られない限りワークフローは開始されず、例外が発生します。

呼び出されたワークフローへの値の供給に関する詳細については、サブワークフローを呼び出すを参照してください。

変数の初期値を設定する場合は、ノード内にあるワークフロー変数を設定アクションを用いる(詳細については、変数値の設定を参照)か、開始またはイベント ノードの [変数] タブ、例外ハンドラ、あるいは XML をクライアントに送信アクションを用います(詳細については、イベント データからの変数を初期化するを参照)。

変数がワークフロー式で用いられる場合、変数名の前にドル記号($)またはコロン(:)、あるいは他の文字が入ります。変数表記の詳細については、変数の使い方を参照してください。

変数を作成する

変数を作成する手順は、以下のとおりです。

  1. フォルダ ツリーで適切なワークフロー テンプレート定義の [変数] を右クリックし、[変数を作成] を選択して [変数プロパティ] ダイアログ ボックスを開きます。

    図5-13 [変数プロパティ] ダイアログ ボックス


     

  2. [名前] フィールドで OrderID などの有意な変数名を入力します。

    注意: 変数名にはスペースは入れません。

  3. [タイプ] ドロップダウン リストから、表 5-2 に示す変数タイプを選択します。

  4. (省略可能)ワークフローが呼び出されたワークフローの場合、Parameter とそれが入力パラメータか出力パラメータか指定することもできます。入力パラメータには、パラメータが必須かどうかを指定します。

    パラメータは、値を渡すために呼び出し側ワークフローによって使用され、呼び出し側サブワークフローから値を受け取ります。入力パラメータは、サブワークフローに渡される値を含み、出力パラメータはサブワークフローからの戻り値を含みます。

    注意: ワークフローをプログラムによりインスタンス化する場合は、入力変数としてのみ指定された変数を設定できます。ワークフローをプログラムによってインスタンス化する方法については、『BPM クライアント アプリケーション プログラミング ガイド』の「手動によるワークフローの開始」を参照してください。

    1 度ワークフローをインスタンス化すると、『BPM クライアント アプリケーション プログラミング ガイド』の「実行時変数のモニタリング」で説明されているように入力および出力変数を含むあらゆる変数の値を設定できます。

    別のワークフローの開始の詳細は、サブワークフローを呼び出すを参照してください。

  5. (省略可能)変数に関するコメントを [メモ] テキスト ボックスに入力します。

  6. [OK] をクリックして変数の定義を保存します。新しい変数がフォルダ ツリーの [変数] フォルダの下に表示されます。

変数を更新する

既存の変数を更新する手順は、以下のとおりです。

  1. フォルダ ツリーで既存の変数を右クリックし、ポップアップ メニューから [プロパティ] を選択します。[変数プロパティ] ダイアログ ボックスが表示されます。

  2. 必要に応じて変数を変更し、[OK] をクリックします。

変数の用途を表示する

変数がワークフローのどこで用いられるかを閲覧する手順は、以下のとおりです。

  1. フォルダ ツリーで変数を右クリックし、ポップアップ メニューから [使用場所] を選択して [変数の使用場所] ダイアログ ボックスを表示します。このダイアログ ボックスには選択した変数が使用されている場所や値が割り当てられている場所が一覧表示されます。

    図5-14 [変数の使用場所] ダイアログ ボックス


     

  2. 選択した変数を参照する項目が表示されるまでフォルダを展開します。

  3. (省略可能)以下に示すダイアログ ボックスのボタンを使用して操作を行います。

  4. [OK] をクリックして、[変数の使用場所] ダイアログ ボックスを閉じます。

変数を削除する

どのワークフロー ノード、アクション、または式からも参照されていない変数のみ削除できます。参照変数が使用されている場所を閲覧する場合は、変数の用途を表示するの手順に従います。

変数を削除する手順は、次のとおりです。

  1. フォルダ ツリーで [変数] フォルダを展開し、削除する変数を右クリックして、ポップアップ メニューから [削除] を選択します。

  2. 警告メッセージが表示されたら、[OK] をクリックして削除を確認するか、[取消し] をクリックして削除を取り消します。

 


ノードのプロパティの定義

この節では、特定の各ノード タイプによって、ノードのプロパティを定義する方法について説明します。

開始のプロパティを定義する

各ワークフローには、ワークフローの始まりを示す開始シェイプが 1 つ以上設定されています。開始後、最初のノードは、ワークフローで最初にアクティブになるノードで、タスク、分岐またはイベント ノードのどちらかです。

注意: 開始ノードが指定されていない場合、ワークフローではノードのアクティブ化は行われません。

開始ノードには 4 つのタイプのトリガがあります。

注意: テンプレート定義の作成時、デフォルトの開始ノードは手動開始に設定されています。

以下のような多種の目的で複数の開始ノードを指定することもできます。

注意: シーケンシャルなローリング日時を採用するワークフローを指定して、1 つのフローが終了になると別のフローが開始されるようにする場合は、適切な有効日と終了日を設定して個別のテンプレート定義を行います。詳細については、テンプレート定義に関する作業を参照してください。

最後に開始ノードを用いて、そのワークフローに対して作成された変数を初期化できます。たとえば、開始時の値として 1 を設定したいワークフローにカウンタを設定する場合があります。この値を開始ノードがアクティブになる際にカウンタ変数として割り当てることができます。詳細については、イベント データからの変数を初期化するを参照してください。

開始ノードを定義する手順は、以下のとおりです。

  1. 開始ノードをダブルクリックするか、フォルダ ツリーで開始ノードを右クリックして [プロパティ] を選択して、[開始のプロパティ] ダイアログ ボックスを表示します。

    図5-15 [開始のプロパティ] ダイアログ ボックス


     

  2. (省略可能) [説明] フィールドで開始ノードの名前を固有で識別しやすい名前に変更します。

  3. ワークフローのトリガ メソッドを選択します。時限を選択した場合、時限開始ノードを定義するで説明する手順に従って追加のオプションを指定します。イベントを選択した場合、イベントトリガ型開始のプロパティを定義するで説明する手順に従います。

  4. (省略可能)ワークフロー開始時に変数を初期化するために [変数] タブを選択し、[追加] をクリックして [ワークフロー変数の割り当て] ダイアログ ボックスを表示します。

    図5-16 [ワークフロー変数の割り当て] ダイアログ ボックス


     

  5. [変数] ドロップダウン リストから初期化する変数を選択します。

  6. [式] フィールドに式を入力します。入力した式は実行時に評価され、結果として変数の値が得られます。定数の指定に使用する構文については、リテラルの使い方を参照してください。

  7. (省略可能)開始ノードの起動時に実行されるアクションを追加します。アクションに関する詳細については、アクションの定義を参照してください。

  8. [OK] をクリックして変更を保存します。

時限開始ノードを定義する

開始日式を指定することで、ワークフローを正確な日時に開始させることができます。ワークフローを開始するには、ワークフローが開始されるオーガニゼーションも指定する必要があります。

たとえば 2 日ごとなどのように、ワークフローが再開されるインターバルも指定できます。この場合、ワークフローのインスタンスはテンプレートの終了日になるまで 2 日 ごとに開始されます。テンプレートの終了日になると、ワークフローはそれ以上開始されません。

図5-17 [開始のプロパティ] ダイアログ ボックス : [時限] オプション


 

時限開始ノードを定義する手順は、以下のとおりです。

  1. [開始のプロパティ] ダイアログ ボックスで [時限] オプションを選択します。

  2. [開始日の式] フィールドに絶対値または相対値として、ワークフローの開始日時を指定する式を入力します。式は必ず Date オブジェクトを返さなければならないため、以下のように日付関数を使用する必要があります。

  3. (省略可能) [再スケジューリング] フィールドに値を入力し、ドロップダウン リストから時間の単位を選択することで、ワークフローが再開されるまでのインターバルを指定します。

    サーバが指定した開始時刻に実行されていない場合、指定した時刻に開始されるワークフローを回復するか(つまりサーバが再開始されるまで遅らせる)またはスキップするかを指定するには[回復可能] チェックボックスを設定します。

  4. (省略可能)開始日を評価するために用いるビジネス カレンダーを選択します。

  5. [開始オーガニゼーション] フィールドで、以下のいずれかを行ってワークフローを開始するオーガニゼーションを選択します。

  6. [OK] をクリックして開始ノードを保存します。

イベントおよびイベントトリガ型開始のプロパティを定義する

ワークフローの開始や、ワークフロー内のノードのトリガはイベントによって行うことができます。イベントは別のワークフローや別のアプリケーションなどの外部ソースからの非同期の通知です。開始ノードはイベントトリガ型として定義され、イベント ノードは外部イベントによってのみトリガできます。

イベント通知は、一般的には JMS (Java Message Service) メッセージに含まれ、JMS キューで受信される XML ドキュメントの形をとります。ただし、プラグインで定義することもでき、その場合イベント通知は XML ドキュメントではなく、カスタムのトリガとなります(詳細については、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照)。

ワークフローによるメッセージの消費先である WebLogic Integration のデフォルトの内部 JMS キューの JNDI 名は、com.bea.wlpiEventQueue です。ただし、別のメッセージ キューの設定も可能です。詳細については、『WebLogic Integration の起動、停止およびカスタマイズ』の「WebLogic Integration のカスタマイズ」にある「カスタム Java Message Service キューのコンフィグレーション」を参照してください。

XML イベントの型では、実際のトリガは XML メッセージのプロローグで定義された文書型(DOCTYPE)の宣言であるか、または XML メッセージのルート要素であるかのいずれかです。開始またはイベント ノードのプロパティ ダイアログ ボックスで、イベントのトリガまたはワークフローの開始に使用する DOCTYPE またはルート要素を指定します。イベントは、ノードのプロパティ ダイアログ ボックスで指定された DOCTYPE、またはルート要素が着信 XML メッセージのそれと一致しない限りトリガされません。

DOCTYPE またはルート要素の使用に加え、イベント キーやイベント条件で、イベントをさらに修飾できます。そのようなサブワークフローについて以下で説明します。

イベント キーを理解する

イベント キーを使用すれば、開始ノードまたはイベント ノードをトリガすることになる受信 XML メッセージの内容、JMS ヘッダ、またはプロパティの値を指定できます。つまり、特定の DOCTYPE またはルート要素を含むすべての受信 XML ドキュメントにノードをトリガできるのではなく、XML 本体または JMS ヘッダ フィールドに含まれる特定の値に従って受信 XML メッセージのインスタンスをフィルタリングすることで、特定の値を含む XML メッセージ(複数)だけが、実行中のワークフローに含まれるノードをトリガできます。

イベント キーは以下の 2 つの部分で構成されます。

注意: ワークフロー式言語の詳細については、ワークフロー式の使用法で、XPath および EventAttribute() 関数の詳細については、実行時のイベント データを抽出するで説明します。

XML コンテンツのイベント キーとして使用する

簡単なサンプルとして、受取勘定アプリケーションから定期的に顧客アカウント情報などを報告する XML メッセージを着信すると想定します。これらのメッセージには他のデータと並んで次の要素を含みます。

コード リスト 5-1 着信 XML ドキュメントのサンプル

<account>	
.
.
.
<number>847365</number>
<customer>John Doe</customer>
<balance>
<status>past due</status>
<date_due>7-11-2001</date_due>
<amount_due>5670.85</amount_due>
</balance>
<credit_limit>7500.00</credit_limit>
</account>

残高状態が(「OK」、あるいは「ペンディング」に対し) 「期日到来済み(past due)」である着信ドキュメントのみがワークフローをトリガするよう、期限経過勘定を処理するワークフローがあるとします。最初に、着信ドキュメントのルート要素は、ドキュメントがこのワークフローのトリガとしてみなされるよう、必ず <account> となるよう指定します。次に past due の値に対応するイベント キーを作成します。実行時にイベント プロセッサは、着信 XML ドキュメントの残高状態要素から返された値を、開始ノードで指定した値と比較します。一致した場合、ワークフローがトリガされます。

通常開始ノードは、ワークフローの複数のインスタンスが着信 XML ドキュメントの複数のインスタンスによって開始できるよう、定数をイベント キーとして使用します。一方、ワークフロー内のイベント ノードは、通常、現在のワークフローの別の場所(たとえば、開始ノードの変数初期化時)で取り込まれた特定のデータを含む XML ドキュメントの特定のインスタンスによってのみトリガされる必要があります(イベント データからの変数を初期化するを参照)。この値は設計時には決定できないため、ワークフロー変数または実行時に目的の値を返す関数として表す必要があります。たとえば、イベント インスタンスが正しいアカウント番号(この場合 847365)を含む XML インスタンスによってのみトリガされるように、リスト5-1 のドキュメントを用いてイベント キーがアカウント番号の値を指定することもできます。実行時に、イベント プロセッサは、着信 XML ドキュメントのアカウント番号から返された値を、イベント ノードで指定した式から返された値と比較します。一致した場合イベントがトリガされます。

ここで、キー値およびイベント キー式の構築方法について、このサンプルの状況内で見てみましょう。開始ノードの場合、キー値の式は次のように(ワークフロー式構文で要求されるように引用符で囲まれた)定数で構成されます。

“past due”

イベント キー コンフィグレーションで設定した XML ドキュメントからこの値を返すよう要求されたイベント キー式は次のようになります。

ToString(XPath(“/account/balance/status/text()”))

イベント ノードの場合、キー値の式はワークフロー インスタンスを実行することで早期に設定されたはずの値を持つ(ワークフロー式構文においてドル記号で示される)ワークフローで作成した変数で構成されます。

$AccountNumber

アカウント番号はワークフロー変数の中で文字列として格納され、XML ドキュメントからこの変数を返すためにイベント キー コンフィグレーションで必要になる式は次のとおりです。

ToString(XPath(“/account/number/text()”))

注意: イベント キー式は、開始あるいはイベント ノードでキー値の式によって用いられたものと同じデータ型として評価される必要があります。XPath 式はノード リストのタイプを返すため、通常、正しいデータ型を返すには、ワークフロー式の言語で記述される型キャストを実行する関数を使用する必要があります。これらの関数の詳細については、データ型を変換するを参照してください。返されたデータ型が文字列の場合、XML ドット表記を用いることもできます。詳細については、XML 要素のドット表記を参照してください。

次の図に XML ドキュメントのイベント キーのメカニズムをまとめています。

図5-18 イベント キー メカニズム


 

イベント キーとして JMS ヘッダまたはプロパティ データを使用する

EventAttribute() 関数を用いて、JMS ヘッダまたはプロパティから特定の値を検索することもできます。このメカニズムは XML ドキュメントに対しての場合とまったく同様に機能しますが、XML ドキュメントを解析してターゲット値を探すのではなく、値は JMS プロパティから抽出されます。

たとえば、送信元のアプリケーションがプロパティ フィールドを用いてメッセージの送信元の国を示し(これを Country と呼ぶ)、送信元の国によって開始される複数の異なるワークフローがあると想定します。この場合、イベント キー式は次のようになります。

ToString(EventAttribute(“Country”))

注意: イベント キー コンフィグレーション式は、開始あるいはイベント ノードでキー値の式によって用いられたものと同じデータ型として評価される必要があります。EventAttribute() 式はオブジェクト型を返すため、正しいデータ型を返すよう、ワークフロー式言語で与えられる型キャスト関数を用いる必要があります。これらの関数の詳細については、データ型を変換するを参照してください。

カナダに関連する情報のみを処理するワークフローの場合、開始ノードのキー値式は次のようになります。

“Canada”

このメッセージには、Province と呼ばれるプロパティも含まれているとします。開始ノード内でこの情報を抽出し、これを州名を含むよう変数に保存します。ワークフローがインスタンス化されると、その特定の州向けに送られたメッセージのみがワークフローの別のイベント インスタンス(たとえば、売上税の値を算出するビジネス オペレーションの呼び出しなど)のトリガに用いられるようにします。この場合、州のイベント キーを作成します。イベント キー式は次のようになります。

ToString(EventAttribute(“Province”))

キー値の式は変数名で構成されます。

$ProvinceName

イベント条件を理解する

イベントまたは開始ノードのトリガをさらに修飾するために評価する必要のある条件を指定できます。これによりイベント プロセッサがイベント キーの一致を識別しても、条件が満たされるまではイベントがトリガされません。

注意: イベント キーなしでイベント条件を用いることはできますが、これは推奨されません。イベント キーのメカニズムでは、メモリに目的の値を格納し、着信 XML ドキュメントにおける DOM 解析が軽減されるため、単純なイベント条件に比べ、はるかに優れたパフォーマンスを提供します。イベント条件は、イベントをトリガする XML メッセージ インスタンスをさらに制限する場合に、イベント キーと共に追加フィルタとしてのみ使用します。

リスト5-1 で示した XML ドキュメントのサンプルを用いて、ワークフロー内に期日到来済みで特定の額(たとえばアカウントのクレジット限度の 75%)以上の残高があるアカウントのクレジット凍結を発行するイベントがあると想定します。ワークフローでは、既に <amount_due> および <credit_limit> 要素から値を抽出し、2 つの変数 Amount_Due および Credit_Limit に格納しています。残高がクレジット限度の 75% を超えた場合にのみイベントをトリガする(および、クレジットの凍結を実行する)ための条件として次の式を用いることができます。

$Amount_Due > .75 * $Credit_Limit

リスト5-1 に示すドキュメント インスタンス サンプルの場合、条件は true として評価され、イベントがトリガされます。

また、イベント条件で XPath() および EventAttribute() 関数を用いて、XML または JMS ヘッダまたはプロパティ データからコンテンツを直接抽出して、それを定数、変数あるいは他の関数を含む他のデータと比較することもできます。前出の国の例では、送信元の国が指定した国である場合にのみ、イベントが実行されました。国情報が <country> などの XML 要素に埋め込まれていることを想定すると、条件は次のようになります。

ToString(XPath(“/root_element/child_element/country/text()”)) = “Canada”

国の値が Country と呼ばれる JMS プロパティに埋め込まれている場合は、条件は次のようになります。

ToString(EventAttribute(“Country”)) = “Canada”

注意: XPath() または EventAttribute() などの関数で条件を用いる場合は、両方程式にある式は同じデータ型として評価されなければならず、同じデータ型でない場合、条件が処理できないという点に注意してください。Studio の型キャスト関数の詳細については、データ型を変換するを参照してください。また、文字列値に XML ドット表記を用いることもできます。詳細については、XML 要素のドット表記を参照してください。

イベント データからの変数を初期化する

開始 およびイベント ノードのプロパティ ダイアログ ボックスには、ワークフロー開始時またはイベントのトリガ時に値を設定する変数の追加、更新あるいは削除に用いることのできる [変数] タブがあります(変数の詳細については、変数に関する作業を参照)。

図5-19 開始およびイベント ノードの [プロパティ] ダイアログ ボックスの [変数] タブ


 

[追加] をクリックすると [ワークフロー変数の割り当て] ダイアログ ボックスが表示されます。ここでは、ワークフローに対し既に定義された変数に値を割り当てることができます。定義済みの変数は [変数] ドロップダウン リストに表示され、ここから初期化する変数を選択できます。

図5-20 [ワークフロー変数の割り当て] ダイアログ ボックス


 

注意: [アクション] タブのワークフロー変数を設定アクションを用いても同じことができます。実際、開始あるいはイベントを除くすべてのノードに対して、あるいは XML ドキュメントを XML 変数に割り当てる場合は、必ずこのアクションを用いる必要があります(詳細については、変数値の設定を参照)。ただし、ワークフローの実行時、開始またはイベント ノードでは [変数] タブに指定されている変数はアクションが実行されるに [アクション] タブに加えられた順番で初期化されます。

この機能は、開始ノードで用いてワークフローの開始時に変数を定数値に初期化することもできますが、複数の変数値を設定するために用いられる着信イベント データの取り込みに用いることが最も便利と言えるでしょう。たとえば、ノードが JMS メッセージの着信 XML ドキュメントによってトリガされる場合、複数の式を用いて、変数をドキュメントに含まれる値あるいは JMS ヘッダまたはプロパティ フィールドで指定された値に初期化できます。

また、XML ドキュメントや JMS プロパティから現在のワークフローに渡されるインスタンス ID やテンプレート名など、他のワークフローのトラッキング属性を用いることもできます。たとえば、後に対話を開始したワークフローへのメッセージ応答で使用したい場合、これらの値を抽出して、それを変数に格納する必要があります。また、このメカニズムによって JMS トピックまたはキューを通じて外部アプリケーションに配信されるメッセージの単一の JMS プロパティ ヘッダで送ることのできる複数のワークフロー属性を集めることもできます(アドレス メッセージングおよび JMS プロパティとしてのワークフロー属性の挿入に関する詳細については、JMS トピックまたはキューへの XML メッセージのポストを参照)。

変数の値を更新する場合は、リスト内の変数名を強調表示させ、[更新] をクリックして [ワークフロー変数の割り当て] ダイアログ ボックスを開きます。

変数割り当てを削除する場合は、リストから変数名を選択し [削除] をクリックします。

イベントトリガ型開始のプロパティを定義する

イベントトリガ型での開始を定義する場合、ワークフローが開始されるオーガニゼーションを指定する必要があります。設計時にオーガニゼーションを指定するか、実行時に、たとえば着信イベント メッセージで指定されたデータを抽出するなどしてオーガニゼーションを決定する式を用いることが可能です。

イベントトリガ型開始ノードを定義する手順は、以下のとおりです。

  1. [開始のプロパティ] ダイアログ ボックスで [イベント] オプションを選択します。

    図5-21 [開始のプロパティ] ダイアログ ボックス : [イベント] オプション


     

  2. [ドキュメント タイプ/ルート要素] フィールドで、ワークフローの開始をトリガする XML メッセージの DOCTYPE またはルート要素を入力します。

  3. (省略可能) [キー値の式] フィールドに、実行時にイベントをトリガする正確な XML コンテンツ、JMS ヘッダ、あるいはプロパティ フィールド値の評価となるワークフロー式を入力して XML メッセージのキー値を定義します。式は通常、定数リテラルで構成されます。キー値式に関する詳細については、イベント キーを理解するを参照してください。式の作成方法の詳細については、ワークフロー式の使用法を参照してください。

    注意: また、プロセス エンジンがこのフィールドに指定したキー値と比較できるよう、着信 XML メッセージのキー値を配置するイベント キー コンフィグレーションを定義する必要があります。詳細については、イベント キーのコンフィグレーションを参照してください。

  4. (省略可能) [条件] フィールドで、ワークフローの開始前に評価する必要がある条件を定義します。イベント条件の詳細については、イベント条件を理解するを参照してください。

  5. [開始オーガニゼーション] フィールドで、以下のいずれかを行ってワークフローを開始するオーガニゼーションを選択します。

  6. [変数] タブを選択して、着信イベント データなどからの変数を初期化し、[追加] をクリックして [ワークフロー変数の割り当て] ダイアログ ボックスを表示します。

    図5-22 [ワークフロー変数の割り当て] ダイアログ ボックス


     

  7. [変数] ドロップダウン リストで、受信するデータを格納する変数を選択します。

  8. 以下のいずれかを実行して、実行時に評価して変数の値を生成する式を [式] フィールドに入力します。

  9. [OK] をクリックします。変数の初期化が [開始のプロパティ] ダイアログ ボックスの [変数] タブのリストに表示されます。

  10. 初期化するすべての変数に対し、手順 6 から 9 を繰り返します。

  11. [OK] をクリックして変更を保存します。

イベント プロパティを定義する

イベント ノードを定義する手順は、以下のとおりです。

  1. イベント ノードをダブルクリックするか、フォルダ ツリーでイベント ノードを右クリックして [プロパティ] を選択して、[イベントのプロパティ] ダイアログ ボックスを開きます。

    図5-23 [イベントのプロパティ] ダイアログ ボックス


     

  2. [説明] フィールドでデフォルト名を修正して、Wait for New Inventory など、イベントに識別しやすい固有の名前を付けます。

  3. [ドキュメント タイプ/ルート要素] フィールドで、イベントをトリガする XML メッセージのDOCTYPE またはルート要素を入力します。

  4. (省略可能) [キー値の式] フィールドに、実行時にイベントをトリガする正確な XML コンテンツ、JMS ヘッダ、あるいはプロパティ フィールド値の評価となるワークフロー式を入力して XML メッセージのキー値を定義します。式は通常、変数またはワークフロー関数で構成されます。キー値の式に関する詳細については、イベント キーを理解するを参照してください。式の作成方法の詳細については、ワークフロー式の使用法を参照してください。

    注意: また、プロセス エンジンがこのフィールドに指定したキー値と比較できるよう、着信 XML メッセージのキー値を配置する式を定義する必要があります。詳細については、イベント キーのコンフィグレーションを参照してください。

  5. (省略可能) [条件] フィールドで、イベントのトリガ前に評価する必要のある条件を定義します。イベント条件の詳細については、イベント条件を理解するを参照してください。

  6. [変数] タブを選択して、着信イベント データなどからの変数を初期化し、[追加] をクリックして [ワークフロー変数の割り当て] ダイアログ ボックスを表示します。

    図5-24 [ワークフロー変数の割り当て] ダイアログ ボックス


     

  7. [変数] ドロップダウン リストで、受信するデータを格納する変数を選択します。

  8. 以下のいずれかを実行して、実行時に評価して変数の値を生成する式を [式] フィールドに入力します。

  9. [OK] をクリックします。変数の初期化が [イベントのプロパティ] ダイアログ ボックスの [変数] タブのリストに表示されます。

  10. 初期化するすべての変数に対し、手順 6 から 9 を繰り返します。

  11. (省略可能)イベントのトリガ時に実行されるアクションを追加します。アクションに関する詳細については、アクションの定義を参照してください。

  12. [OK] をクリックして変更を保存します。

分岐のプロパティを定義する

ワークフローでは分岐をいくつでも使用できます。各分岐ノードには条件が指定されています。条件は、分岐ノードに移行するときに評価されます。結果は True または False となり、その結果に基づいて異なるパスに渡されたコントロールのサブシーケンス フローを持ちます。

また、条件の評価の結果が True または False のどちらの場合でも実行するアクションを指定することもできます。[True] タブおよび [False] タブに定義したアクションは、true または false の分岐先に指定されたノードの前に実行されます。また、フォルダ ツリーにおいて、これらのアクションは [分岐] フォルダ内の [True] および [False] フォルダに表示されます。

図5-25 [分岐のプロパティ] ダイアログ ボックス


 

分岐ノードを定義する手順は、以下のとおりです。

  1. 分岐ノードをダブルクリックするか、フォルダ ツリーで分岐ノードを右クリックして [プロパティ] を選択して、[分岐のプロパティ] ダイアログ ボックスを開きます。

  2. [条件] フィールドで実行時に評価される条件式を指定します。条件には、定数、変数、関数を含めることができます。式の作成方法の詳細については、ワークフロー式の使用法を参照してください。

  3. (省略可能) [False] や [True] タブにアクションを追加して、実行時の条件の結果(true または false)に基づいて実行されるアクションを指定します。これらのアクションは、後続ノードに指定されたアクションよりも前に実行される。

    アクションに関する詳細については、アクションの定義を参照してください。

  4. [OK] をクリックして変更を保存します。

タスクのプロパティを定義する

タスク ノードは、以下のように定義されます。

タスク ノードはワークフローの基本構成要素であり、フロー内の単一の操作(複数のワークフロー アクションによって実装される必要はある)を表します。

ワークフロー トランザクション モデルでは、ワークフロー ノードは、『BPM クライアント アプリケーション プログラミング ガイド』の「BPM トランザクション モデルの理解」で説明するように、トランザクションがどのように処理されるかを決定するアクティブ化および実行の状態になります。タスク以外のすべてのノードでは、これらの状態は Studio で明示的に表されているものではありません。ただし、タスク ノードでは 4 つのタスク状況のうちのいずれかに従ってアクションを指定する必要があり、フローのコントロールを効果的に操作するには、これらの意味を理解することが重要となります。

図5-26 [タスクのプロパティ] ダイアログ ボックス


 

タスクの状態を理解する

各タスク ノードは、作成時、アクティブ時、実行時 および Marked Done の 4 つの異なる状態を通じて進行します。各ステータスに対してアクションのリストを指定できる。タスクのステータスが変わると、それに応じて指定したアクションが実行される。次の表では、各タスク状態とそのタスクの到達時に実行されるアクションを示します。

表5-3 タスク状態

タスク状態

アクションの設定および実行される状況

一般的に指定されるアクション

作成時

新しいワークフロー インスタンスが作成されたとき。

タスクは、ワークフローでタスク ノードに到達するまで作成時状態が維持される。

開始ノードで変数を初期化できるため、この状態に対してはアクションを指定する必要はほとんどない。

アクティブ時

前のノードが処理を終了したとき。

タスクは、以下によって実行されるまでアクティブ時状態が維持される。

実行時

タスクが完了するまでワークフローは進行せず、タスクのステータスは [実行時] のままである。

ユーザ割り当てタスク アクションに続くアクション。

完了マーク時

以下のノードでアクションを指定できるため、この状態に対してはアクションを指定する必要はほとんどない。



 

他のノードと異なり、すべてのタスク ノードにノードの完了を知らせるために完了マークを付ける必要があります。マークされない限りワークフローは次に進みません。手動割り当てタスクの場合、実行時にタスクに完了マークを付けることを可能にするパーミッション(以下を参照)を設定できます。ただし、多くの場合、設計時にタスクに完了マークを付けるアクションの追加によって明示的にタスクに完了マークを付けます。

タスクに完了マークを付けるアクションを置くタブは、タスクが 表 5-3 に示されるどの手段によって実行されるかによって異なります。タスクに完了マークを付けるアクションを実行する場合、タスクに完了マークを付けるアクションを [実行時] タブに指定し、実行しない場合は [アクティブ時] タブに指定します。詳細については、タスクに完了マークを付けるを参照してください。

[タスクのプロパティ] ダイアログ ボックスで定義されたアクションは、その配置に従ってフォルダ ツリーの [作成時]、[アクティブ時]、[実行時] あるいは [完了マーク時] フォルダの下に表示されます。

タスク パーミッションについて

パーミッションをタスクに割り当て、Worklist (またはカスタム クライアント) ユーザ、あるいは Studio でインスタンスをモニタしている管理者による、実行時のタスクに対して行われる操作の型をコントロールできます。Studio での実行時におけるタスク操作実行に関する詳細については、タスクのパーミッションと優先度の変更およびタスクのステータスと割り当ての変更を参照してください。Worklist での実行時におけるタスク操作実行に関する詳細については、『WebLogic Integration Worklist ユーザーズ ガイド』を参照してください。

タスク ノードを作成する場合、デフォルトでは初めから割り当てられているパーミッションはありませんが、次の表に示す有効なタスク パーミッションを有効化できます。

表5-4 タスク パーミッション

パーミッション

説明

実行せずに完了マークを付ける

Worklist ユーザまたは Studio 管理者に、実行されていないタスクに完了マークを付けることを許可し、タスクの完了日付を手動で設定できる。

完了マークがあれば再実行

Worklist ユーザは、完了済みのタスクを再実行できる。

完了マークがあれば外す

Worklist ユーザまたは Studio 管理者に、完了マークが付いているタスクの状態を未完了に戻すことを許可する(ユーザが完了済みのタスクに完了済みではないというマークを付けると、タスクのステータスは Active に変更されるが、実行済みのアクションによる効果が取り消されることはない)。

実行時に変更

Worklist ユーザまたは Studio 管理者に、タスク実行前にタスクに対するパーミッションを変更することを許可する。

実行時に再割り当て

Worklist ユーザに、タスクを受けるか再割り当てすることを許可する。あるいは、Studio 管理者に、タスク実行前にタスクを別のユーザまたはロールに再り割当てすることを許可する。


 

タスクの優先順位について

手動割り当てタスクの場合、優先順位レベルを割り当てることができます。優先度は実行時におけるノードまたはノードの実行方法には影響を与えない。単にタスクを実行したりソートしたりできる Worklist のユーザに応じて表示される。

優先順位オプションは、低、中、および高です。デフォルト値は中です。

タスク ノードを定義する

タスク ノードを定義する手順は、以下のとおりです。

  1. タスク ノードをダブルクリックするか、フォルダ ツリーで [タスク] を右クリックして [プロパティ] を選択して、[タスクのプロパティ] ダイアログ ボックスを表示します。

  2. [タスク名] フィールドでデフォルト名を修正して、Confirm Order など識別しやすい固有の名前を付けます。この値は、主に Worklist アプリケーションで用いられますが、さまざまな Studio のモニタリング レポートから見ることができます。

  3. 適切なタブで各タスク状態に対して実行されるアクションを追加します。これらの状態に関する詳細については、表 5-3を参照してください。アクションの指定の詳細は、アクションの定義を参照。

  4. (省略可能)手動割り当てタスクに対し、表 5-4 で説明するように、[パーミッション] タブでチェック ボックスにチェックしてパーミッションを割り当てます。

  5. (省略可能)手動割り当てタスクに対し、[低]、[中] あるいは [高] を選択して優先順位を割り当てます。

  6. 非手動割り当てタスク、あるいは実行せずに完了マークを付けるパーミッションが無効な手動割り当てタスクに対しては、タスクに完了マークを付けます。詳細については、タスクに完了マークを付けるを参照してください。

  7. [OK] をクリックして変更を保存します。

結合のプロパティを定義する

結合ノードを使って、タスク、イベント、および分岐ノードの複数の経路を 1 つの経路に結合します。AND 結合の場合、ワークフローはすべてのパスの実行の終了を待ってから次のノードに進みます。OR 結合を使用すると、先行する 1 つの経路の実行が完了した後、その他の先行ノードは実行されずにワークフローは次のノードに進みます。

結合ノードを作成した後で、AND から OR、または OR から AND に変更できます。設計領域内の結合ノードと対応するシェイプは、自動的に更新されます。

図5-27 [結合のプロパティ] ダイアログ ボックス


 

結合ノードを定義する手順は、以下のとおりです。

  1. 結合ノードをダブルクリックするか、フォルダ ツリーで 結合ノードを右クリックして [プロパティ] を選択して、[結合のプロパティ] ダイアログ ボックスを開きます。

  2. 以下のオプションのうち 1 つを選択します。

  3. [OK] をクリックして変更を保存します。設計領域内のシェイプが更新されます。

完了のプロパティを定義する

完了ノードはワークフロー内のプロセス終了ポイントを示します。ワークフロー内の 1 つの完了ノードに到達すると、他の完了ノードに到達したかどうかとは無関係に、ワークフロー内で実行中のインスタンスは完了とマークされます。

ワークフローでは完了ノードをいくつでも指定できます。ワークフローがさまざまなポイントから終了できる場合は、必要に応じてどこにでも個別の完了ノードを配置することが可能になります。

完了ノードにアクションを追加することはできますが、推奨はされません。

完了ノードを定義する手順は、以下のとおりです。

  1. 完了ノードをダブルクリックするか、フォルダ ツリーで完了ノードを右クリックして [プロパティ] を選択して、[完了のプロパティ] ダイアログ ボックスを開きます。

    図5-28 [完了のプロパティ] ダイアログ ボックス


     

  2. (省略可能)完了ノードの到達時に実行されるアクションを追加します。

  3. [OK] をクリックして変更を保存します。

 


例外ハンドラに関する作業

例外ハンドラはサーバの例外の発生によってトリガされ、例外ハンドラの呼び出しアクションによって呼び出されて、メイン ワークフロー内のアクションのサブフローのように機能します。例外ハンドラの定義と呼び出しに関する詳細については、ワークフロー例外の処理を参照してください。

 

ページの先頭 前 次