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

BPM ユーザーズ ガイド

 前 次 目次 PDFで表示  

Business Process Management とサンプル ワークフローの紹介

このチュートリアルで紹介するサンプル ワークフローは SAMPLES_HOME/integration/samples/bpm_tutorial フォルダ内の Tutorial.jar ファイルに入っており、WebLogic Integration の Business Process Management (BPM) の最も一般的な機能について説明しています。これらのサンプル ワークフローは実際に使用されているものではありませんが、次に挙げる Business Process Management の 2 つのクライアント アプリケーションを実際に使用することで、ごく単純化されたシナリオを体験することができます。そのクライアント アプリケーションは、Studio (設計環境) と Worklist (実行環境) の 2 つです。

注意: Worklist クライアント アプリケーションは WebLogic Integration リリース 7.0 より非推奨となりました。代替機能に関する詳細については、『WebLogic Integration リリース ノート』を参照してください。

この概要では、サンプル ワークフローのコンテキストを説明し、全体像を理解した後で、チュートリアルの残りの各章でそれを組み合わせて完成できるようにします。特に、この節では以下のことについて説明します。

 


シナリオの概要

このサンプル ワークフローは、一般的な Web ベースでの受注販売のシナリオに、だいたい基づいています。いったん受注すると、承認、在庫確認、出荷、請求という段階を経ながら、ワークフローによって受注の実行と処理が制御されます。次に、このシナリオを構成するプロセスとデータについて説明します。

  1. 顧客が CDExpress という音楽メディア小売店にブラウザ ベースの発注フォームなどのオンライン メカニズムを使用して商品を発注します。その顧客は、氏名、連絡用 E メール アドレス、出荷先の国または州名、希望商品(ID および商品)、発注数量を指定します。

  2. 処理システムによってデータが読み取られ、ID 番号が付けられて受理されます。

  3. その受注はカスタマサービスに転送され、顧客の信用情報がチェックされます。

  4. 信用チェックができなかった場合、カスタマサービスが顧客に通知し、正しい信用情報を取得する必要があります。これ以降のプロセスは手動で行います。

  5. 信用チェックが通ると、商品 ID を基に受注商品の現在の目録がデータベースでチェックされ、出荷可能な商品の数量と受注数量が比較されます。

  6. 在庫が十分ではない場合は、次の新規入庫の到着までその受注は保留されます。新規入庫の在庫表が受領されると、その在庫が受注に対応可能であると確認できるまで、手順 5 が繰り返されます。

  7. 十分な在庫がある場合、その受注は出荷業務を行う出荷担当者と、請求書の発行をシステムに指示する会計担当者に同時に転送されます。

  8. 国または州の売上税を含め、請求書の合計金額の計算に必要な入力の処理中にエラーが発生した場合、請求プロセスを開始した会計担当者に通知され、正しい情報の入力が求められます。

  9. 受注に対する合計金額が算出されます。

  10. 次に、受注品が出荷されたことがシステムで確認され、顧客に E メールで通知されます。

  11. 出荷前のトランザクションにおけるどの時点でも、顧客からの通知により受注をキャンセルできます。

このワークフローがどのようなものかを理解するための基本的なフローチャートは次の図のとおりです。各セクションにつけられた番号は、これまで説明してきた受注販売の各手順に対応しています。

図1-1 受注販売のシナリオ


 

 


BPM 環境の概要

Studio のワークフローを使用して、たとえば、クライアントへの E メールの送信や手動で行う作業の Worklist ユーザーへの割り当てなどの一定のビジネス プロセスを直接実行できますが、ほとんどの場合は、外部のソフトウェア コンポーネントを統合するワークフローを作成し、このような外部のプログラム モジュールの呼び出しシーケンスを制御するようにワークフローを定義します。したがって、ワークフローを作成する前に、Enterprise JavaBeans、Java クラスといった、インタフェースが必要なアプリケーションについて外部コンポーネントを識別する必要があります。

このシナリオに必要な外部コンポーネントの識別を容易にするため、はじめに WebLogic Server と Java 2 Enterprise Edition (J2EE) モデル ビュー コントローラ多層アプリケーションの中間層との関連における WebLogic Integration のロールを検討します。分散 J2EE/WebLogic Server アプリケーション内での、このシナリオの実行に必要なその他のコンポーネントとの関連における WebLogic Integration サーバを次の図に示します。

図1-2 WebLogic Integration BPM の環境


 

BPM は J2EE フレームワークのビジネス ロジック レイヤで図のように動作します。このことは、ワークフローが Java クラスや EJB (Enterprise JavaBeans) などのビジネス オブジェクトを直接統合する一方、他のコンポーネントやアプリケーションとの通信には、JMS (Java Message Service) の中間コードを通じて XML (eXtensible Markup Language) 言語のメッセージを交換することを意味します。

実際には、外部クライアントからのインプットの受信やフォーマットを行うフロントエンド アプリケーション全体は BPM ワークフローには表れません。Web コンポーネントと EJB レイヤとのやりとりが必要な場合に、ワークフローが処理を管理します。このように、ワークフローの開始は外部イベント、すなわち JMS トピック上へ該当する XML ドキュメントが到達することによって、通常、図のようにトリガされます。

このフレームワークでは、通常 BPM ワークフローにこのシナリオの発注プロセスは含まれません。チュートリアルの目的上、このプロセスをシミュレートします(詳細については、「サンプル ワークフローを使った作業」を参照してください)。実際は、次の図で示すように、受注が処理プロセスに渡された時点が、ワークフローの開始となります。

図1-3 受注販売のシナリオ : 開始のメカニズム


 

シナリオのフローチャートを更新し、ワークフローの開始点や、キャンセル通知のインターセプトに必要な追加手順をより正確に表します。

図1-4 受注販売のシナリオ : 開始と終了


 

 


WebLogic Integration におけるシナリオのモデル化

シナリオの定義と WebLogic Integration BPM 環境の確認を行ったあと、実際のプロセスとシナリオ中のエンティティを、WebLogic Integration Studio が生成したワークフローのモデル構成にマップする方法を決める必要があります。マップ方法の決定には、以下の点について確認が必要です。

これらのモデル化の作業については、以下の節で説明します。

アプリケーション ユーザの定義

実際にワークフローをモデル化する前に、まず対象となる実際の担当者の観点からシステムを定義する必要があります。Studio は、用法のコンテキストを明確にする 3 つの構成要素、すなわち オーガニゼーション、ユーザ、ロールを定義します。これらの構成要素について次の節で解説し、それぞれがチュートリアルのシナリオでどのように使用されるかについても説明します。

オーガニゼーション

オーガニゼーションとは、企業やサイト ロケーションを表します。オーガニゼーションは、Studio 内で作成する Business Process Management 固有の構成要素であり、WebLogic Server で定義されるユーザまたはグループには対応しません。しかし、ユーザをオーガニゼーションに関連付けて、ロール(ロールを参照)をオーガニゼーション内に定義することができます。ワークフローは、単一のオーガニゼーションだけではなく複数のオーガニゼーションにも関連付けることができます。

このシナリオのオーガニゼーションは CDExpress という予め定義されたオーガニゼーションです。

ユーザ

ユーザとは、Studio と Worklist クライアント アプリケーションのユーザであり、WebLogic Server のセキュリティ レルムで定義されます。ユーザは Studio で作成され、少なくとも 1 つのデフォルトのオーガニゼーションに関連付けられる必要があります。ユーザはどのオーガニゼーションと関連付けられたワークフローにもアクセス可能ですが、実行可能なワークフローはユーザを割り当てたオーガニゼーション内のワークフローに限ります。ユーザはロールにも関連付けできます(ロールを参照)。

ここで使用する CDExpress というオーガニゼーションには、Studio で作成した、 joe、mary、admin という 3 人のデフォルト ユーザがいます。

ユーザとパーミッションの詳細は、『WebLogic Integration Studio ユーザーズ ガイド』の「データ管理」の中の「ユーザの保守」を参照してください。

ロール

ロールとは、個人のユーザ アカウントとは無関係にユーザが実行できる汎用的なビジネス機能のことで、 たとえば、部門、職務、役職などがロールとなる場合もあります。このシナリオでは、カスタマサービス担当者、会計、出荷がロールに相当します。

ロールはオーガニゼーション内に含まれるので、それぞれのオーガニゼーションは固有なロールのセットを持つことになります。Studio でロールを作成する際に、自動的に WebLogic Server グループを作成できても、WebLogic Server 上でコンフィグレーションされたグループにロールをマップする必要があります。

また、1 ユーザに対して 1 ロール、複数ユーザに対して 1 ロール、1 ユーザに対して複数のロールを関連付けできます。つまり、1 人のユーザが複数のロールを受け持ったり、あるいは 1 つのロールを数人で担う場合もあります。

CDExpress のオーガニゼーションには次のようなロール、マッピング、メンバー ユーザが存在し、それらはすべて予め定義されています。

表1-1 CDExpress のデフォルトのロール、グループ、メンバー ユーザ

ロール

WebLogic Server グループへのマッピング

メンバー ユーザ

CustomerService

CustomerServiceCDE

admin

Accounting

AccountingCDE

admin

joe

Shipping

ShippingCDE

admin

mary


 

ロールとパーミッションの詳細は、『WebLogic Integration Studio ユーザーズ ガイド』の「データ管理」の中の「ロールを保守する」を参照してください。

外部コンポーネントの指定

このシナリオでは、目的の作業を遂行するワークフロー内で統合の必要がある Web とバックエンドのコンポーネントを、以下のように指定できます。

ここでは、ワークフローが外部コンポーネントとインタフェースをとる方法の詳細は省きますが(ワークフロー インタフェースの定義で説明)、この基本のワークフローが、どの時点で外部コンポーネントを必要とするかを次の図に示します。

図1-5 受注販売のシナリオ : 外部コンポーネント


 

サンプル ワークフローでは、他のコンポーネントに対するインタフェースがワークフローで定義されていますが、上の図の中で識別された EJB レベルのコンポーネントだけが組み込まれて実行されます。したがって、サンプル ワークフローでは外部コンポーネントを次のように表します。

  1. プロセス全体を起動するフロントエンドのクライアント アプリケーションまたはサーブレットは供給されません。このモジュールはサンプル ワークフローを使った作業で説明する別のワークフローでシミュレートされます。

  2. 在庫チェックのメソッドとして、WebLogic Integration の lib ディレクトリに、セッション EJB の POBean.jar が用意されています。実際のアプリケーションにおいても、EJB はデータベースをクエリします。このサンプルでは、商品 ID のデータベースを Bean クラスにハードコード化した値の配列によってシミュレートします。

    注意: POBean EJB は、WebLogic Integration サーバが起動したときに自動的に WebLogic Server 上にデプロイされます。

  3. 実際のアプリケーションは在庫の報告には使用されず、そのアプリケーションに対するインタフェースがサンプル ワークフロー内に作成されます。詳細については、イベントの作成 : Wait for New Inventory イベントの定義を参照してください。

  4. 合計金額を計算するメソッドは、POBean.jar セッション EJB に用意されています。実際のアプリケーションにおいても、EJB はデータベースをクエリします。このサンプルでは、合衆国各州のデータベースを、Bean クラスにハードコード化した値の配列によってシミュレートします。

  5. 発注のキャンセル プロセスのためのコンポーネントは用意されていませんが、そのようなコンポーネントに対するインタフェースがサンプル ワークフローに作成されます。詳細については、イベントの作成 : Watch for Cancellation イベントの定義を参照してください。

ワークフロー オブジェクトの定義

アプリケーションで使用する外部コンポーネントが識別されると、ワークフローに必要なオブジェクトを定義して、シナリオ プロセスのモデル化を始めることができます。ワークフロー オブジェクトと、各オブジェクトがサンプル ワークフローにおいて果たす機能の例を以下の節で紹介します。

ノードと接続

ノードとは、ワークフローを構築し、ビジネス プロセスの境界を示す主要な単位です。接続によってノード間の移行が設定されます。次の表に示す 7 タイプのノードを使用して、ビジネス シナリオにおけるさまざまな要件を満たすことができます。

表1-2 WebLogic Integration Studio のノード

機能要件

通常モデルのノード

Studio でのシェイプ

手動もしくはソフトウェアで行う作業を指定。

タスク ノード


プロセスの境界設定

開始ノード


完了ノード


作業の実行順序を指定 : 順次処理または並列処理

接続


AND ノード


OR ノード


アクションの繰り返し、または前の手順への戻りを指定(ループ化)

接続


判定結果により実行するアクションを指定

分岐ノード


外部イベントまたは特別なイベントの結果を基に実行するアクションを指定

イベント ノード



 

通常 1 つのノードの完了が次のノードの起因となり、そのフローが特定のアクションでオーバーライドされない限り、連続的にアクティブとなります(詳細はアクションを参照)。

イベントは、ワークフロー中で待機状態で機能する特殊なタイプのノードです。イベントは前のノードの完了によりアクティブになりますが、イベントがリスンするようコンフィグレーションされた XML ドキュメントの到着後にイベントが非同期でトリガされます。XML メッセージは、外部 JMS キューを通じて外部アプリケーションから受け取るか、内部 JMS キューを通じて別のワークフローから受け取ります。

注意: イベント ノードは、JMS 上の XML 以外のメカニズムを使用できるプラグイン定義イベントからも、トリガできます。プラグインのプログラミングの詳細は、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照してください。

このサンプル ワークフローでは、起動、タスク、完了などの必須ノード以外にも以下のノードを使用します。

したがって、このシナリオを次の図のように表すことができます。

図1-6 受注販売のシナリオ : Studio ワークフロー


 

上記のサンプル ワークフローにおいて、この単一のワークフローは、 次の図のように、メイン ワークフローとサブ ワークフローの 2 つに分割されています。

図1-7 受注販売のシナリオ : メイン ワークフローとサブ ワークフロー


 

図で示すように、サブ ワークフローを呼び出すために追加ノードがメイン ワークフローで使用されています。

ワークフローの作成でノードを引き出し、それをワークフローのノードの定義で定義します。

アクション

アクションはワークフローの構築に使用する作業の基本単位です。Studio には 28 の種類のアクションがあり、WorkList ユーザに対する手動タスクの割り当て、プログラム全体の流れの制御、外部コンポーネントの統合および情報のやり取りなど、それぞれが異なる動作をします。

注意: デフォルトのアクション カタログを、プラグインを使用して拡張できます。プラグインのプログラミングの詳細は、『WebLogic Integration BPM プラグイン プログラミング ガイド』を参照してください。

アクションはワークフローで見える形では表現されず、ノード(通常はタスク ノード)で指定されます。ただし、起動、判定、イベント、例外ハンドラ(例外ハンドラを参照)、さらに他のアクションにおいてもアクションを指定できます。

サンプル ワークフローでは次のようなアクションを使用することがあります。

このチュートリアルではさまざまなアクションを使用します。

変数

変数とは、ワークフローが値を格納できるコンテナであり、その値とは、テキスト、数値、日付、さらに Java オブジェクトや EJB への参照なども格納できます。ワークフローのテンプレートを定義する場合、変数は幾つでも作成できます。ワークフローの有効期間中は変数の値を変更できます。

一般的に、変数は実行時のワークフローによって収集される実際のデータ項目を表します。変数には、ビジネス オペレーションワークフロー インタフェースの定義を参照)から返される値、XML ドキュメントから抽出される値、ワークフローのアクションにより明示的に設定される値などがあります。また、変数はワークフローによって、分岐ノードにおける条件の評価や、Worklist ユーザの XML メッセージへの応答結果の格納など、さまざまな目的で使用できます。

サンプル ワークフローでは、以下のようなさまざまな機能の変数を使用します。

変数はワークフローの作成で作成します。

例外ハンドラ

WebLogic Integration では、すべてのワークフロー インスタンスまたは実行中のワークフローによって、デフォルトで使用されるシステム例外ハンドラが用意されています。実行中に例外が発生した場合、システム例外ハンドラはアクティブなトランザクションをロール バックし、再び例外を送出します。

ワークフロー用のカスタム例外ハンドラも設定できます。ロール バックやトランザクションのコミット時に機能する例外ハンドラに対して、特定のアクションを定義します。

カスタム例外ハンドラの使い方において、POBeancalculate() メソッドに、無効なデータが渡される可能性に対して対処する例外ハンドラの定義と起動を行います。

ワークフロー インタフェースの定義

このシナリオとワークフローの設計では、ワークフローは以下に述べる仮想のコンポ-ネントや実際のコンポーネント、またアプリケーションともインタフェースする必要があります。

ワークフローが外部コンポーネントとインタフェースをとるためのさまざまな方式を、次の図に示しています。

図1-8 外部コンポーネントと外部アプリケーションとのインタフェース


 

これらのインタフェースについて、以下の節で詳しく説明します。

ビジネス オペレーション

Java のクラスまたは Enterprise JavaBean のメソッドをワークフローから呼び出すには、ビジネス オペレーションを作成します。ビジネス オペレーションを実行すると、ワークフローの変数の値を入力パラメータとして EJB または Java オブジェクトのメソッドに渡すことができます。パラメータが渡されると、これらのメソッドは値をワークフローの変数に返します。

サンプル ワークフローでは、ビジネス オペレーションを以下の目的で使用します。

ワークフローの作成 で、ビジネス オペレーションを定義し、実行します。

XML ドキュメント

WebLogic Integration のワークフローは、サーブレットやバックエンド アプリケーションといった異なるタイプのサーバ側コンポーネントと非同期方式でやりとりを行うため、JMS トピックまたはキューにパブリッシュされる XML ドキュメント、または JMS キューから受け取った XML ドキュメントを通じてデータを共有します。

実際に、複数のワークフロー間で非同期で情報交換する場合にも、WebLogic Integration サーバは、内部トピックにポストされた XML ドキュメントを使用します。また、ワークフローと Worklist クライアント間の通信は、WebLogic Integration アプリケーション プログラミング インタフェース(API)を介して行われますが、多くの場合、リクエストとその応答は XML ドキュメントの形式をとります。

注意: WebLogic Integration API の詳細は、『BPM クライアント アプリケーション プログラミング ガイド』と『BEA WebLogic Integration Javadoc』を参照してください。

このように、これらのワークフローでは、多くの外部コンポーネントとの通信、また内部コンポーネントとの通信においても、XML メッセージを作成して、それを Worklist クライアントのユーザや、外部や内部のトピックまたはキューに送信する必要があります。XML 要素と属性は、実行時に値が使用されるワークフロー変数に対応します。サンプル ワークフローでは、送信する XML ドキュメントを次の目的に使用します。

XML ドキュメントは、その XML ドキュメントの参照に使用するアクションによっては、特定のワークフローに埋め込むことができます。一方、そのドキュメントを、XML ドキュメントや文書型定義(DTD)、そしてワークフロー定義外のその他の XML エンティティを格納する XML リポジトリへエクスポートしたり、インポートしたりすることもできるので、1 つのワークフロー内で作成したドキュメントにアクセスして別のワークフローに再利用することができます。XML ドキュメントの作成、リポジトリへのエクスポート、リポジトリからのインポートはXML リポジトリの使い方 : Neworder XML ドキュメントのエクスポートXPath 文を定義するで行います。

イベント キー

ワークフロー イベントが受信した XML ドキュメントをリスンするよう定義する場合、イベントが想定するドキュメントのドキュメント タイプまたはルート要素を指定します。受信 XML ドキュメントをフィルタ処理し、特定の要素または属性値を持つ XML ドキュメントに限りイベントをトリガできるようにするには、イベントキーを指定します。イベント キーは、ドキュメント タイプ、および XPath 式により XML ドキュメントから抽出される要素の値を識別します。イベント キーは 1 つのテーブルに格納され、実行時に XML ドキュメントから返された値がサーバのイベント プロセッサによってイベント ノードで指定されたキーの値と比較されます。一致した場合にイベントがトリガされます。このメカニズムについては、イベントの作成 : Wait for New Inventory イベントの定義で詳しく説明します。

ワークフローで使用するイベントの例には、以下のような目的で送信される XML メッセージを認識するためのイベント キーがあります。

ワークフローの作成で、イベント キーと XPath 式を定義します。

 


サンプル ワークフローを使った作業

Business Process Management に使用するサンプル ワークフローでは、シナリオは次の 3 つのワークフローとして実行されます。すなわち、メイン ワークフロー、サブ ワークフロー、トリガ ワークフローの 3 つです。トリガ ワークフローはチュートリアルとともに使用されます。同じシナリオを単純に 1 つのワークフローとして実行することもできますが、長く複雑なワークフローの構築には 2 つのワークフローにプロセスを分割する方式がよいでしょう。

3 つのサンプル ワークフローの関係を、次の図に表します。

図1-9 3 つのサンプル ワークフローの関係


 

各ワークフローについてはチュートリアルの各節で詳しく説明しますが、各ワークフローの概要をこの節で説明します。

このチュートリアルで説明する 3 つのワークフローの完全な使用可能バージョンは、SAMPLES_HOME/integration/samples/bpm_tutorial フォルダの Tutorial.jar パッケージに用意されています。このパッケージには、テンプレート、テンプレート定義、ビジネス オペレーション、ワークフローの実行に必要なイベント キーが入っています。

このチュートリアルの手順に従うことをお勧めしますが、チュートリアルを使用せずにデモンストレーションとしてワークフローを実行したい場合は次のようにします。

  1. WebLogic Integration Studio の起動の手順に従って Studio にログオンします。

  2. Tutorial.jar ワークフロー パッケージ全体をインポートし、ワークフローをアクティブにします。ワークフロー オブジェクトのインポート : チュートリアル パッケージ ファイルのインポートで説明する手順のステップ 5 のオプション 1 を選択します。

  3. サンプル ワークフローの実行とモニタの手順に従って Worklist にログオンし、ワークフローを実行します。

 


チュートリアルの使い方

このチュートリアルは、Studio と Worklist アプリケーションの、多くの一般機能の使い方を学習できるように編成されています。最初の 4 つの各節では、Studio とワークフローの設計の異なる側面が 1 つのサンプル ワークフローを使って強調され、最後の節ではアクションのワークフロー全体を示します。

WebLogic Integration Studio 入門では、Studio にログオンし、Order Processing Trigger と Order Fulfillment のワークフローをインポートして Studio インタフェースのさまざまな側面を調べます。この節で説明するトピックは次のとおりです。

ワークフロー オブジェクトとプロパティで、Order Processing Trigger ワークフローを使用してワークフローのプロパティを調べ、ワークフローに埋め込まれている XML メッセージを編集します。この節で説明するトピックは以下のとおりです。

ワークフローの作成で、Order Processing ワークフローを次の手順で新しく作成します。

ワークフローのノードの定義で、変数、アクション、その他のワークフロー オブジェクトの追加と定義を行い、Order Processing ワークフローのノードを定義します。この節で説明するトピックは以下のとおりです。

カスタム例外ハンドラの使い方では、Order Fulfillment ワークフローを使用して、WebLogic Integration 例外ハンドラの機能と、他の Worklist ユーザとのやり取りについて説明します。

最後に、サンプル ワークフローの実行とモニタで、Worklist アプリケーションにログオンし、サンプル ワークフローを実行しながら、同時に Studio で Worklist アプリケーションをモニタします。

このチュートリアルで説明されない Studio の機能には、以下のようなものがあります。

これらの機能の使い方については、『WebLogic Integration Studio ユーザーズ ガイド』を参照してください。

 

ページの先頭 前 次