Oracle BPM 11gを使用した初めてのプロセスの構築

目的

このチュートリアルでは、Oracle BPM Suite 11gR1を使用して、簡単なHello Worldアプリケーションの構築方法を説明します。 また、BPMエンジンへのプロセスのデプロイとBPMワークスペースでのプロセスのテスト方法も説明します。

所要時間

約2時間

概要

このチュートリアルでは、Studio(JDeveloperベースのIDE)を使用して、簡単なHello Worldプロセスを作成します。 このプロセスでは、ファイル・サービスおよびヒューマン・ワークフロー・エンジンと条件分岐によって実装された対話型タスクを使用しています。 条件分岐としての条件は、ビジネス・オブジェクトとビジネス・ルールの使用によって決定されます。 また、変数を初期化するスクリプト・タスクも使用します。 プロセスを構築した後、BPMエンジンへデプロイし、実行環境でテストします。

シナリオ

Hello Worldプロセスには2つのロールがあります。 メッセージの送信者を担う「Requester」ロールとレビュー担当者を担う「Reviewer」ロールです。 「Request Hello」アクティビティにより、Helloメッセージ、挨拶およびメッセージの日付の入力がリクエスタに指示されます。 フォームが提出された後、ビジネス・ルールがメッセージのコンテンツに適用され、挨拶とメッセージ・フィールドの長さに基づいて、 メッセージの見直しが必要かどうかを判定します。

見直しの必要がない場合、プロセスはスクリプト・タスクに進み、ここで次のタスクに必要な変数を初期化します。 その後、メッセージはファイル・システムに書き込むための「Write Message」アクティビティに送信されます。 レビューの必要がある場合、メッセージのレビュー、承認または却下の入力がレビュー担当者に指示されます。 メッセージが却下された場合、リクエスタがメッセージを修正できるように、プロセスは「Request Hello」アクティビティに戻ります。 その他の場合、ファイル処理を行うために、プロセスは直接「Write Message」アクティビティに進みます。

Software to install

ソフトウェアとハードウェアの要件

このチュートリアルを実行するためには、Oracle BPM 11gR1およびSOAとBPMの拡張機能を 組み込んだJDeveloper 11.1.1.3を事前的にインストールしておく必要があります。また、Hello Worldプロセスで 定義したロールをマッピングするために、OBPMがインストールされているWebLogicサーバーの内部LDAPデータベースに 少なくとも一つのユーザーが存在している必要があります。 これらの2つの作業(インストールとLDAPデータベースへの ユーザーのシード)は、Oracle BPM 11gのインストール OBEを実行することによって完了できます。

前提条件

基本的なHello Worldアプリケーションの作成

この項では、JDeveloper Studioを使用してHello Worldプロセスの基本的な開始点を作成します。 2つのアクティビティ-対話型アクティビティとサービス・アクティビティを作成します。 エンド・ユーザーは、BPM Workspaceを使用して、Helloメッセージを入力することができます。 メッセージはビジネス・オブジェクトによってキャプチャされ、ファイル・サービスに渡されます。 その後、ファイル・サービスはメッセージをディスク・ファイルに書き込みます。 後の項では、このプロセスを拡張してより複雑なプロセスに変更します。

この項では、いくつかのプロセス要素を作成します。ここでは以下のネーミング規則を使用します。

名前 説明
HelloWorld_OBE アプリケーションの名前
HelloWorldProject メイン・プロジェクトの名前
HelloWorld_UI ユーザー・タスクのWebフォームを含むプロジェクト
HelloWorldProcess プロセスの名前

プロセス・モデルの作成


.

Windowsのスタート・メニューから JDeveloper Studio 11.1.1.3 を開きます。ロールの選択が指示される場合は、「 Default Role」を選択して「OK」をクリックします。

「Tip of the Day」ウィンドウを閉じます。

.

新しいアプリケーションを作成します。左側のパネルで、「New Application」 バーをクリックします。

BPM Applicationウィザードが開きます。アプリケーションに「HelloWorld_OBE」と名前を付け、アプリケーション・ファイルを 格納するためのデフォルトのディレクトリ (C:\JDeveloper\mywork) をそのまま使用します。 「Application Template」パネルで「BPM Application」 を選択します。

Next」をクリックします。

.

Create BPM Application」ウィザードの 「Step 2」 では、HelloWorld_OBEアプリケーションのプロジェクトを作成します。アプリケーションの名前として、 「HelloWorldProject」と入力します。 「BPM」 と 「SOA」 が デフォルトのProject Technologiesとして選択されていることを確認してください。「Finish」をクリックします。

JDeveloper Studioウィンドウの左上隅の、ナビゲータ・パネルを参照してください。 ここには、このチュートリアルを実行するために重要となる2つのタブがあります。「Application Navigator」タブと 「BPM Project Navigator」タブです。 最初は「Application Navigator」タブがデフォルトで選択されています。HelloWorld_OBEアプリケーションは、 パネル上のドロップリストに表示され、HelloWorldProjectは親ノードとして、パネル内に表示されています。 HelloWorldProject は 斜体 で表示されます。 これは、このプロジェクトがまだ保存されていないことを示しています。

メイン・ツールバーで「Save All 」アイコンをクリックします。

.

プロジェクト内に新しいプロセスを作成するには、まず「BPM Project Navigator」タブをクリックします。 次に「Processes」を右クリックし、 「New>Process 」を選択します。

BPMN Process」ウィザードで 「From Pattern」ラジオ・ボタンを選択して、 「Manual Process」パターンを選択します。「Next」をクリックします。

次の画面で、プロセスに「HelloWorldProcess」と名前を付け、「Finish」をクリックします。

プロセス・モデルが、JDeveloperウィンドウの中央にあるデザイン・エディタ・パネルに表示されます。 タブの名前は、新しいプロセスの名前と同じになります。

再度「Save All」 アイコンをクリックします。

使用しないタブを閉じます。カーソルをタブに近づけると、タブの右上隅に 「 X 」が表示されます。 「X」をクリックして、タブを閉じます。 タブは、メニューやナビゲータ・パネルのいずれかから再度開くことができます。

.

デザイン・モデルでユーザー・タスクの名前を変更します。 モデルは二つの円形のアイコンで開始および終了します。左側の円は 「Start」アクティビティで、右側の円は 「End」 アクティビティです。二つの円を接続しているのは、アクティビティの流れを表す線です。これはシーケンス・フロー と呼ばれ、「遷移線」と呼ばれることもあります。 「Start」アクティビティと「End」アクティビティの間に ユーザー・タスク タイプのアクティビティがあります。これを右クリックし、「Properties」を選択します。

Properties」 ダイアログ・ボックスが表示されるので、 「Basic」 タブで、アクティビティの名前を 「Request Hello」に変更します。 「OK」をクリックします。

実装が定義されていないことを示す警告メッセージが表示されますが、無視しても問題ありません。 後ほど実装を定義します。

Save All」をクリックします。

.

メニューから「View> Component Palette」を選択して JDeveloperウィンドウ にComponent Paletteを追加します。パレットは、ウィンドウの右ペイン に表示されます。

下図で示すように、Component Paletteの上部にあるドロップダウン・リストから、 「BPM」を選択して「Activities」アコーディオン・パネルを展開します。

.

プロセスへサービス・アクティビティを追加します。 シーケンス・フロー上に別のアクティビティのためのスペースを確保する必要があります。

Request Hello」アクティビティと 「End」アクティビティの間に 他のアクティビティのアイコンが収まる十分なスペースを確保するために、 「End」 アクティビティをクリックし、右側にドラッグしてデザイン・パネルの右側にドロップします。

今度は、Component Paletteで「Service」 アクティビティをクリックし、「Request Hello」 アクティビティと 「End」アクティビティ間のシーケンス・フロー上にドラッグし、 ドロップします。 ドロップ・ターゲット領域が遷移線に近づくと、遷移線は青色になります。

重要: アクティビティを接続するためには、 オブジェクトをドロップする時に遷移線が 青くなっている必要があります。

アクティビティをドロップすると、「Properties 」ダイアログ・ボックスが開きます。 「Basic 」 タブで、アクティビティの名前を 「Write Message」に変更します。

OK」をクリックします。

.

Save All」をクリックします。 プロセス・モデルは下図のようになります。

ビジネス・オブジェクトの作成


.

次に、「Request Hello」アクティビティでユーザーが入力したメッセージに関連した複数のデータを 格納するためのビジネス・オブジェクトを作成します。このオブジェクトは、ユーザーがメッセージを 入力したときに移入されます。このオブジェクトは 後で「Write Message」アクティビティに渡され、メッセージがファイルに書き込まれます。

ビジネス・オブジェクトは、Business Catalog内の モジュール に格納されます。BPM Project Navigatorで、 「HelloWorldProject」ノードを展開します。 「Business Catalog 」を右クリックし、 「New>Module」を選択します。

新しいモジュールに名前を付けるためのプロンプトが表示されるので、「HelloTypes」と入力し、「OK」をクリックします。

HelloTypes」 モジュールが「Business Catalog」ノードの下に表示されます。

.

HelloTypes」モジュールを右クリックし、 「New>Business Object」を選択します。

「Create Business Object」ウィンドウで、「Name」に「HelloObject」と入力し、「Destination Module」として「HelloTypes 」を選択します。「OK」をクリックします。

「HelloObject」エディタが開きます。

.

「HelloObject」に以下の三つの属性を追加します。

属性名 タイプ
date Time
greeting String
message String

次の手順では、「date」 属性を作成する方法について説明します。

以下に示すように、 「Business Object」 エディタの 「Attributes」 セクションの隣にあるプラス記号をクリックします。

Create Attribute」 ポップアップが表示されます。 「Name」の値として「date」 と入力します。 「Type」としてドロップダウン・リストから「Time」 を選択します。 「OK」をクリックします。

「data」属性は、「Business Object」エディタの「Attributes」セクションに表示されます。

上記の方法で作業を行い、他の2つの属性も作成します。完了すると、 「Business Object」エディタは下図のようになります。

Save All」 をクリックし、エディタ・パネルで「HelloObject」タブを閉じます。

.

プロセスで使用する「HelloObject」タイプのプロセス・ データ・オブジェクト を作成します。

HelloWorldProcess」 タブがエディタ・パネルで開いている場合、 デザイン・エディタ内の任意の場所をクリックし、「HelloWorldProcess」にフォーカスを移します。 (開いていない場合は、BPM Project Navigatorで 「HelloWorldProject>Processes」 を展開して「HelloWorldProcess」を表示させ、選択します。

プロセスにフォーカスを置くと、JDeveloperウィンドウの左下隅にある 「Structure」 ペインにプロセスの 構造の詳細アウトラインが表示されます。

「Structure」ペインで「Process Data Objects」を右クリックし、「New」を選択します。

Create Data Object 」ポップアップで「Name」の値として「hello」 を入力し、省略記号ボタンをクリックして複合データ・タイプを検索するウィンドウを開きます。

Browse Types」  ウィンドウで、「Type」として「<Component>」を選択し、 下に表示されたコンポーネント・リストから「HelloObject 」を選択します。「OK」をクリックします。

「Create Data Object」ウィンドウに戻り、再度「OK」をクリックします。 「hello」 データ・オブジェクが「Structure」ペインに表示されます。

Save All」をクリックします。

ユーザー・タスクの実装

.

すべての対話型アクティビティは、実装を提供するためには タスク・サービスにバインドさせる必要があります。ユーザー・タスク(例えば、Request Hello)の場合、 ヒューマン・タスク タイプのタスク・サービスにバインドさせる必要があります。 ここでの手順では、ヒューマン・タスクを作成します。

デザイン・エディタで「Request Hello」アクティビティを右クリックし、「Properties」を選択して 「Properties」ウィンドウを開きます。

Implementation」 タブをクリックします。下図で示すように、「Human Task」 フィールドの隣にあるプラス記号ボタンをクリックします。

Create Human Task」 ダイアログ・ボックスの上部のフィールドに、以下の値を入力または選択します。

フィールド
Name SayHello
Pattern Initiator
Value Please Enter a Hello Message
Outcomes Submit <パターンを選択すると、これは自動的に選択されます。 >

「Parameters」パネルの右上にあるプラス・アイコンをクリックして、パラメータを追加します。

「Parameter」パネルにドラッグできる、有効なデータ・オブジェクトを表示する「Data Object」ウィンドウが 開きます。「hello」データ・オブジェクトをクリックして、 「Parameter」パネルにドラッグします。新しいパラメータの「Editable」チェック・ボックスを選択します。

Data Object」 ウィンドウを閉じ、「Create Human Task」 ウィンドウで「OK」をクリックします。

「RequestHello」 アクティビティの「Properties」ウィンドウに戻ります。 「OK」をクリックします。

Save All」をクリックします。

.

次に、Helloメッセージを入力するためのフォームを提供する必要があります。フォームは 「hello」 データ・オブジェクトとリンクする必要があります。

BPM Project Navigatorで、 「Business Catalog >Human Tasks」を展開します。 ここで、 「SayHello.task」 オブジェクトを参照します。 これは、先ほど定義したヒューマン・タスクです。

ダブル・クリックして、エディタで開きます。エディタが開いたら、エディタ・ツールバーの左側にある 「Create Form」ドロップダウン・リストをクリックし、 「Auto-Generate Task Form ...」を選択します。

Create Project 」ウィンドウが開きます。 UI要素(ADFフォーム)を含むプロジェクトを作成する必要があります。「Project Name」として 「HelloWorld_UI」と入力し、 デフォルトのディレクトリをそのまま使用します。完了したら「OK」をクリックします。

フォームの作成および必要となるエディタが開くには、数秒(リソース次第では1分程度)かかります。 最終的に、エディタが下図のように表示されます(表示の一部です)。 強調しているセクションは、エンド・ユーザーに見える部分です。 「Date」、「Greeting」および「Message」フィールドを参照してください。

上図に示すように「Message」フィールドを 選択します。この操作を行うと、このフィールドのプロパティがJDeveloperウィンドウの右下隅の パネルに表示されます。このパネルで 「Appearance」アコーディオン・パネルを展開し、 「Rows」プロパティの値を「5」に変更します。

フォーカスをこのフィールドから離して、変更を有効にします。

Save All」をクリックします。 「HelloWorldProcess」 タブ以外の、エディタ内の すべてのタブを閉じます。

ファイル・サービスの実装

.

SOA Composite」 エディタを使用して、「Write Message」 サービス・アクティビティの実装を作成します。 下図で示すように、デザイン・エディタのツールバーで 「Goto Composite Editor」ボタンをクリックします。

SOA Compositeエディタが開きます。XMLソースではなくデザイン・エディタを表示するには、 Composite エディタ・パネルの左下のマージンにある「Design」タブをクリックします。「HelloWorldProcess」BPMN コンポーネントと「SayHello」ヒューマン・タスク・コンポーネントがCompositeエディタに表示されます。 これらは、SOAコンポジットのコンポーネントとみなされます。

.

Component Palette」から「File Adapter」 サービス・アダプタをクリックします。 Component PaletteはデフォルトでSOA コンポーネントを表示しています。

File Adapterをエディタ内のExternal Reference列にドラッグ&ドロップします。

ドロップすると、Adapter Configuration Wizardが開きます。

.

Adapter Configuration Wizardの 「Welcome」ページで 「Next」をクリックします。

ウィザードの「Service Name」ページで、サービスに 「MessageWriter」と名前を付けます。 「Next」をクリックします。

「Adapter Interface」ページで、「Define from operation and schema (specified later) 」を選択します。「Next」をクリックします。

「Operation」ページで、「Write File」を選択します。 「Operation Name」 の値は 「Write」に設定されます。 この値を使用し、「Next」をクリックします。

「File Configuration」ページで、「Directory specified」として「Physical Path」 を選択します。 「Directory for Outgoing Files (physical path)」フィールドにドット(「.」) を入力します。 「File Naming Convention」 に以下の値を入力します。

Hello_%SEQ%.xml

Next」をクリックします。

「Messages」ページで、ファイルに書き込む 情報 を決定します。 「URL」 フィールドの隣にある虫眼鏡のアイコンをクリックして、 「Type Chooser」ポップアップを開きます。 「Project Schema Files>HelloObject.xsd」 を展開し、 「HelloObject」を検索し、選択します。 下図のように表示されます。「OK」をクリックして 選択を決定し、ウィザードの「Messages」ウィンドウに戻ります。

「Messages」ウィンドウで「 Next 」をクリックします。

ウィザードの最後のページで「Finish」 をクリックします。サービスが作成され、SOA Compositeエディタに表示されます。

Save All 」をクリックし、 Compositeエディタ・タブを閉じます。

.

作成したサービス実装を、BPMプロセス内の 「Write Message」アクティビティにワイヤします。 BPM Processのデザイン・エディタでこれを行います。

: 必要に応じて、 BPM Project Navigatorで 「HelloWorldProcess」をダブル・クリックして、 デザイン・エディタを開きます。

Write Message」アクティビティを右クリックし、「Properties」を選択します。

「Properties」ウィンドウで、「Implementation」タブをクリックします。

Implementation」として 「Service Call」を選択します。 サービスを参照するには、 「Name」 フィールドの隣にある虫眼鏡アイコンをクリックします。 「Type」 ポップアップ・ウィンドウが表示され、「MessageWriter」サービスが表示されます。 これを選択し、「OK 」をクリックします。

「Properties」ウィンドウに戻ります。「Operation」フィールドの値は自動的に 「write」に設定されています。

Data Associations」 パネルで「 Use Associations」 チェック・ボックスをクリックし、その隣にある鉛筆アイコンをクリックします。 これにより、データをアクティビティにマッピングするエディタが開きます。ここでは「MessageWriter」サービスが メッセージを書き込むことができるように、 「hello」 オブジェクトをアクティビティにマッピングします。

開いた「Data Associations」 ウィンドウで、「hello」 データ・オブジェクトを 右列からウィンドウの左側にある 「Inputs」フィールドにドラッグします。 これにより 「hello」 データ・オブジェクトが、アクティビティの サービス実装への入力である「helloObject」 にマッピングされます。

「Data Associations」ウィンドウで「 OK」をクリックしてマッピングを保存し、「Properties」ウィンドウに戻ります。

「Properties」ウィンドウで「OK」 をクリックします。

Save All」をクリックします。

基本的なHello Worldプロセスの拡張

この項では、ユーザーが入力したメッセージのレビュー機能を追加することにより、 作成した基本的なプロセスを拡張します。レビューに関連したデータを保持するビジネス・オブジェクトを作成し、 挨拶とメッセージの長さをテストするビジネス・ルールで使用します。 「Reviewer」ロールを持つユーザーが入力したメッセージを確認し、メッセージを承認または却下することができるように、 ユーザーとの対話も追加します。その後プロセス・モデルを変更し、条件分岐によって 「Review Message」アクティビティに進み、却下された場合は「Request Hello」アクティビティに戻るように設定します。 条件分岐ロジックで使用される変数を初期化するために、スクリプト・タスクが必要となります。

まず、「Request Hello」アクティビティを実行するユーザーに割り当てられたロールの名前を、より 分かりやすく変更します。 その後、メッセージをレビューするユーザーに新しいロールを追加します。

ReviewNeededビジネス・オブジェクトの追加

.

Role」ロールの名前を変更します。BPM Project Navigatorで、 「HelloWorldProject」の下にある 「Organization」ノードを右クリックし、「Open」を選択します。

パネルの中央でOrganizationエディタが開きます。「Role」ロールを選択し、 変更するために鉛筆のアイコンをクリックします。

「Role」ポップアップ・ウィンドウが表示されます。「Name」フィールドに「Requester」と入力し、「OK」をクリックします。

.

Organizationエディタがまだ開いている状態で、 緑のプラス記号をクリックして、新しいロールを追加します。

「Role」ポップアップ・ウィンドウの「Name」フィールドに「 Reviewer」 と入力し、「OK」をクリックします。

Organizationエディタは下図のようになります。

.

Save All 」をクリックし、 Organizationエディタを閉じます。

.

上記のビジネス・オブジェクトの作成 と同じ方法で、新しいビジネス・オブジェクトを追加します。 ビジネス・オブジェクトの作成 の手順2と手順3に従いますが、新しいビジネス・オブジェクトは HelloTypes モジュールに格納し、 以下の名前と属性を持つものとします。

オブジェクトに 「ReviewObject」 と名前を付け、 以下の属性を追加します。

属性名 タイプ
review String
reason String

Save All」をクリックし、 オブジェクト・エディタを閉じます。「ReviewObject」はBPM Navigatorの「HelloTypes」フォルダの配下に 表示されます。

.

上記のビジネス・オブジェクトの作成 と同じ方法で 「ReviewObject」タイプのプロセス・データ・オブジェクトを 宣言します。 ビジネス・オブジェクトの作成 の手順4に従いますが、データ・オブジェクトの名前は「review」 とします。

.

Stringタイプのプロセス・データ・オブジェクトを追加し、「reviewOutcome」と名前を付けます。 前の手順と同じですが、タイプとしてStringを選択します。

ビジネス・ロールの追加

.

デザイン・モデルにビジネス・ロールを追加します。

始めに、シーケンス・フローで「Request Hello」と「Write Message」アクティビティの間のスペースを広げます。 「End」アクティビティと「Write Message」アクティビティを右へ移動します。

Component Paletteで「Activities」 アコーディオン・パネルを展開し、「Business Rule」 をクリックし、 デザイン・エディタにドラッグして「Request Hello」 と「 Write Message」間のシーケンス・フローにドロップします。

オブジェクトをドロップすると、ビジネス・ロールの「Properties」ダイアログが表示されます。 「Name」フィールドに 「ReviewNeeded」 と入力します。「OK」をクリックします。

Save All」をクリックします。

.

次の手順では、Compositeエディタを使用して、「ReviewNeeded」ビジネス・ルールの実装を定義します。 Compositeエディタで2つのビジネス・オブジェクトを利用するためには、 「businessCatalog\HelloTypes」フォルダ からオブジェクトを作成したときに生成されたxsd ファイルをプロジェクトのディレクトリ構造の「xsd」 フォルダにコピーする必要があります。 [これは、製品のこのリリースでの既存のバグに対する回避策です。]

Windowsファイル・エクスプローラーを開き、次のディレクトリに移動します。

C:\JDeveloper\mywork\HelloWorld_OBE\HelloWorldProject\businessCatalog\HelloTypes

このフォルダで、次の2つのxsdファイルを検索し、コピーします。
  • HelloObject.xsd
  • ReviewObject.xsd

これらを次のフォルダにペーストします。

C:\JDeveloper\mywork\HelloWorld_OBE\HelloWorldProject\xsd

.

デザイン・エディタのツールバーで「Goto Composite Editor」をクリックし、 Compositeエディタを開きます。

.

Composite エディタで「 Business Rule」 コンポーネントを追加します。 右側のComponent Paletteパネルの「Service Components」セクションから、 「Business Rule」をクリックし、ドラッグして、CompositeエディタのComponents列にドロップします。

コンポーネントをドロップすると、「Properties」ダイアログが表示されます。「Name」フィールドに「HelloRules」 と入力します。その後、 「 Inputs/Outputs」 セクションの上にある緑色のプラス・ボタンをクリックし、 「Input...」を選択します。

Type Chooser」 ポップアップ・ウィンドウが 表示されます。二番目の「HelloObject.xsd」エントリを展開し、その下にある 「HelloObject」を選択し、 「OK」をクリックします。

緑色のプラス・ボタンをもう一度をクリックし、「Output...」を選択します。 「Type Chooser」ポップアップ・ウィンドウが表示されるので、二番目の「 ReviewObject.xsd」エントリを展開し、 「ReviewObject」を選択します。「OK」をクリックします。

「Business Rule」プロパティ・ウィンドウに戻り、「OK」をクリックします。

Save All」をクリックします。

.

作成した実装( HelloRules ビジネス・ルール) をBPMプロセスの 「ReviewNeeded」ビジネス・ルール・アクティビティにワイヤします。 「HelloWorldProcess」 タブをクリックして、フォーカスを BPMデザイン・エディタに移動します。

ReviewNeeded」 アクティビティを右クリックして、 プロパティ・ウィンドウを開きます。 「Implementation」タブを選択します。 「Business Rule」 フィールドの右にある虫眼鏡を クリックします。

「Browse Business Rules」ウィンドウが開くので、 「HelloRules」 ビジネス・ルールの実装を参照します。 これを選択し、「OK」をクリックします。

.

「Properties」ウィンドウで、「Use Associations」の隣に あるチェック・ボックスをクリックします。「Type」はデフォルト値である「Simple」を使用し、 「Edit Data Associations」 ボタン (鉛筆アイコン)をクリックします。

「Data Associations」ウィンドウが開きます。このウィンドウで、 プロセス・データ・オブジェクト(helloreview) を 「HelloRules」 ビジネス・ルール実装に対して定義されたInputsおよびOutputsにマップします。 下図で示すように、右列から「 review」データ・オブジェクトをクリックし、 ドラッグして、 「Outputs」 フィールドにドロップします。

右列から「hello」データ・オブジェクトをクリックし、 ドラッグして、「Inputs」フィールドにドロップします。「OK」をクリックしてマッピングを保存し、 「Data Associations」ウィンドウを閉じます。

「Properties」ウィンドウで「OK」 をクリックします。「Save All」をクリックします。

ビジネス・ルールのデシジョン・テーブルの定義

この項では、ユーザーがhelloメッセージや挨拶を入力したときに適用されるルールを定義します。 ルールと適用する方法を下表に示します。

HelloObject.greeting」 と 「HelloObject.message」 文字列の長さが評価されます。 挨拶とメッセージの長さの組み合わせによって四つのルールを定義し、「ReviewObject」のプロパティである 「reason」と 「review」に適切な値を設定します。 例えば、挨拶の長さがMediumで、メッセージの長さがShortの場合、 「ReviewObject」の「reason」プロパティは「Length is too short」に設定され、 「review」プロパティは「true」に設定されます。 その後、プロセスが「ReviewNeeded」アクティビティに流れ、レビュー担当者が承認または却下します。

デシジョン・テーブルは、様々な方法で設定することができます。 このシナリオでは、デシジョン・テーブルは次の4つの要素で構成されます。

デシジョン・テーブルは、ハイレベルな手順としては5つの手順で作成されます。

  1. 条件の定義(下記の手順2)
  2. バケットセットの定義(下記の手順3)
  3. 各条件にバケットセットを割当て(下記の手順4)
  4. アクションの定義(下記の手順5)
  5. ルールの定義(下記の手順6-9)

.

Rules エディタを開きます。

BPM Navigatorで、「Business Catalog>Rules>Helloworldproject」 を展開します。「HelloRules.rules」をダブル・クリックします。

Rulesエディタが開きます。デフォルトでは、エディタの左側のパネルで 「Ruleset_1」が選択されています。

.

ルールのデシジョン・テーブルを作成します。

ツールバーで緑色のプラス記号をクリックし、ドロップダウン・メニューから「Create Decision Table」を選択します。

Ruleset_1エディタが変化し、デシジョン・テーブルを定義するためのテーブルが表示される ようになります。 デシジョン・テーブルのデフォルトの名前「 DecisionTable_1」 を 「ReviewDecisionTable」に変更します。デフォルトの名前を 含むフィールドをクリックすると、テキスト・フィールドが、 その下に表示されます。新しい名前を入力し、値を確定するためにEnterキーを押します。

テーブルでチェックする2つの条件を追加します。

  • HelloObject.greeting.length( )
  • HelloObject.message.length( )

下図で示すように、テーブル内の「<insert_condition>」フィールドをクリックして、 最初の条件を追加します。これにより、自動的に<edit_ condition>というリンクがついた条件行が追加されます。

<edit_condition>」フィールドを右クリックし、 「Edit Condition」を選択します。 ドロップダウン・リストが表示され、 プロジェクト内で定義されたデータ・オブジェクト・タイプが表示されます。「HelloObjectType」を展開し、「greeting」を選択します。

HelloObjectType.greeting」を右クリックし、再度 「Edit Condition」を選択します。

今度は、ドロップダウン・リストには、より多くのオプションが表示されています。 「HelloObjectType>greeting」 を展開し、「length( )」関数を選択します。

「Conditions」テーブルの上にある緑色のプラス記号をクリックし、ドロップダウン・メニューから 「Condition」を選択して、二番目の条件を追加します。

最初の条件の編集と同様にして、新しく追加された条件を右クリックし、 「Edit Condition」を選択します。今度は、条件の一部としてlength( )関数を追加します。 「HelloObjectType>message」 を展開し、「 length( )」を選択します。

Save All」をクリックします。

.

ルールでは、バケットセットと呼ばれる値の範囲に対して、それぞれの条件が比較されます。 バケットセットを作成するには、Rulesエディタの左側のパネルで 「Bucketset」ノードをクリックします。

緑色のプラス記号をクリックし、ドロップダウン・メニューから 「List of Ranges」を選択します。

新しいバケットセットの行が挿入されます。 この行が選択された状態で鉛筆のアイコンをクリックし、範囲リストを編集します。

表示された「Edit Bucketset」ウィンドウで、 「Name」 フィールドの値を 「Lengths」に変更します。 「Data Type」フィールドは、「int」に設定されたままにしておきます。

Range Bucket Valuesテーブルにはデフォルトで一行定義されており、 「Endpoint」が 「-Infinity」に設定されています。 緑色のプラス記号ボタンを二回クリックして、2つの行を追加します。

Endpoint」の値を 「0」 (ゼロ)から 「5」 に変更します。 これにより、範囲が[5..50]<5に変更されます。

下図で示すように、各行のAliasを「Short」、「Medium」、「Long」 に設定します。 デフォルトのAlias値をダブル・クリックすると、編集可能になります。

OK」 をクリックして、 「Edit Bucketset」ウィンドウを閉じます。

Save」をクリックします。

.

条件テーブル内の各条件に、長さの範囲を割り当てます。Rulesetエディタで 「 Ruleset_1」ノードをクリックして、デシジョン・テーブル・エディタに戻ります。

C1」条件をクリックして、 選択します。「Conditions」テーブル上で「Local List of Ranges」ドロップダウン・リストをクリックし、 「Lengths」を選択します。

C2」 条件に対して、同じ作業を行います。

.

値の範囲と条件の組み合わせに対して適用されるルールを定義するための準備はほぼ完了しました。 始めに、ルールが実行された時に実行するアクションを定義する必要があります。

新しいアクションを作成します。「Actions」 パネルで「<insert_action>」フィールドをクリックし、「 Assert New」を選択します。

assert new ( )」 の行が表示されたら、それを右クリックし、「Edit」を選択します。

Action Editor 」ウィンドウが開きます。 「Facts」パネルから 「ReviewObjectType 」を選択します。このオブジェクト・タイプのプロパティがウィンドウの下部に ある「Properties」パネルに表示されます。 「reason」と 「review」プロパティの「Parmeterized」と「Constant」チェック・ボックスを選択します。

これにより、「Value」フィールドに 「assert new( ) 」文が構成されます。このassertは 「reason」 プロパティ(String)と 「review」 プロパティ(String)の値を持つ「ReviewObject」を 初期化します。上図のスクリーンショットで assert文を参照できます。次の手順で定義する各ルールでは、これらのプロパティに対して特定の値を提供します。

OK」をクリックして、「Save」をクリックします。

.

最初のルールを定義します。 「R1」列の下の 「C1」 行をクリックします。 ドロップダウン・リストには、ルール・セットで定義したバケットセットが表示されます。「Short」をチェックし、「OK」をクリックします。

C2」行の 「R1」 列をクリックします。 これは「message」 プロパティの長さです。 今回の場合ではこの長さの値は重要ではないので、ダッシュ (-) を入力し、「OK」をクリックします。

Actions」 パネルで、 「assert new」 文の右の列にあるチェック・ボックスをクリックします。 これは「ReviewObject」をアサ―トすることを意味しています。その後、 「reason」プロパティの隣のチェック・ボックスの下に ある行をクリックします。テキスト・フィールドが表示されたら、 「"Greeting is too short"」と入力します。 完了したら、Enterキーを押します。

「review」プロパティの隣の列をクリックし、テキスト・フィールドに 「"true"」 と入力します。完了したらEnterキーを押します。

Rule 1」の定義は完了です。このルールでは、「greeting」が 「Short」(5文字より少ない)である場合にはメッセージはレビューされ(review = "true")、 「ReviewObject.reason」は「Greeting is too short」に設定されます。

.

二番目のルールを定義します。Rules列の上の緑色のプラス記号をクリックし、 「Rule」を選択します。

新しいルール列が追加され、見出しが「R1」 となります。先に作成したルールは右に移動され、見出し「R2」の下に表示されます。

注: 新しいルールを編集する場合、 それは元の場所に移動され、元の見出しになります。 編集したいルールを編集していることを確認してください。

下表を使用して、前のルールと同様にルールを編集します。

デシジョン・テーブルの項目 プロパティ 設定する値
Condition
HelloObject.greeting.length( ) Medium
Condition
HelloObject.message.length( ) Short
Action
ReviewObject.reason "Length is too short"
Action
ReviewObject.review "true"

.

この項の冒頭で示したテーブルの最後のルールを定義します。 前の手順でルールを定義した同じ方法で定義します。下表で、設定する値を示します。

デシジョン・テーブルの項目 プロパティ 設定する値
Condition
HelloObject.greeting.length( ) Long
Condition
HelloObject.message.length( ) -
Action
ReviewObject.reason null
Action
ReviewObject.review "false"

テキスト・フィールドに「null」と入力するのではなく、ドロップダウン・リストから 「null」 を選択する必要があることに注意してください。

.

Gap Analysis ツールを実行し、 最後のルールを自動的に作成します。これは既存のルールでカバーされていない条件を判断します。 デシジョン・テーブル・エディタのツールバーで「Gap Analysis」ボタンをクリックします。

「Gap Analysis」ウィンドウが開き、欠けているルールが表示されます。ルール上のチェック・ボックスを クリックして、ルールがデシジョン・テーブルに含まれるようにします。「OK」をクリックします。

ルールは「Rule3」としてデシジョン・テーブルに表示されます。 前の手順で定義したルールは「Rule4」の位置に移動されます。「Rule3」(列 R3) のアクションをアサートし、次のアクションの値を追加します。

  • reason = null
  • review = "false"

Save」をクリックし、 「HelloRules.Rules」タブを閉じます。

ユーザーとの対話用Review Messageの追加

.

「HelloWorldProcess」に新しいユーザー対話型アクティビティを追加します。必要に応じて、 デザイン・エディタで「HellpWorldProcess」タブをクリックして、これを前面に移動します。

Component Paletteの「Activities」アコーディオン・パネルを展開し、 「Interactive」セクションからユーザー・アクティビティをクリックし、ドラッグして、「Requester」レーンの 外側、「ReviewNeeded」アクティビティの直下にドロップします。

「Properties」ウィンドウが開くので、アクティビティに 「Review Message」 と名前を付け、「OK」をクリックします。

次に、アクティビティにロールを割り当てるように求められるので、ドロップダウン・リストから 「Reviewer」ロールを選択します。 「OK」をクリックします。

.

「Review Message」アクティビティに実装を定義します。デザイン・エディタで 「Review Message」を右クリックし、「Properties」を選択します。

「Properties」ウィンドウで「 Implementation」タブを選択します。 「Human Task」フィールドの隣に ある緑色のプラス記号ボタンをクリックして、新しいヒューマン・タスクの実装を定義します。

「Create Human Task」ウィンドウで以下のプロパティを定義します。他のデフォルトの値はそのまま使用します。

  • Name: ReviewMessage
  • Title: Review the Message

上図に示すように、「Parameters」 パネルの隣にある 緑色のプラス記号ボタン をクリックして、パラメータを追加します。

Data Object」 ポップアップ・ウィンドウが「Create Human Task」ウィンドウの隣に表示されます。 「hello」 と 「review」 プロセス・データ・オブジェクトを 「Parameters」 パネルにドラッグします。 「hello」データ・オブジェクトの 「Editable」チェック・ボックスを選択します。 「reviewOutcome」プロセス・データ・オブジェクトを 「Outcome Target」 フィールドにドラッグします。

「Data Object」ポップアップ・ウィンドウで「 Close」をクリックし、「Create Human Task」ウィンドウで「OK」をクリックします。

「Propertise」ウィンドウで「OK」をクリックします。

Save All」をクリックします。

.

前の手順で作成した「ReviewMessage」ヒューマン・タスクに基づいて、 新しいタスク・フローを作成します。

Application Navigator」タブをクリックし、「HelloWorld_UI」プロジェクト・ノードを右クリックし、 「New...」を選択します。

New Galleryウィザードが開きます。「All Technologies」タブをクリックします。 「 Web Tier 」カテゴリを展開し、 「JSF」を選択します。「Items」パネルから 「ADF Task Flow Based on Human Task」を選択します。この手順により、 作成したタスク・フローは以前作成したヒューマン・タスク・フローと同じプロジェクトに保存されます。

OK」をクリックします。

「ReviewMessage」ヒューマン・タスク・フローを 定義するときに生成されたXMLを指定するように求められ、「SOA Resource Browser」 ウィンドウが開きます。

HelloWorld_UI 」フォルダが表示されます。 「HelloWorld_OBE」 フォルダまで上に1レベル移動し、「HelloWorldProject」 フォルダを開きます。 「ReviewMessage.task」ファイルを選択します。

OK」をクリックします。

Create Task Flow」 ウィンドウでデフォルトの値をそのまま使用し、「OK」をクリックします。

.

ウィザードを使用して作成したバウンド・タスク・フローはTask Flowエディタ(Diagramタブ)に 表示されていますが、まだ「taskDetails2_jspx」に関連付けられたWebページを 持っていません。これがエラー参照が表示されている理由です。「Request Hello」タスク・フローのフォームを 生成する時はStudioで自動的にフォームを生成しましたが、 今回は、自分で「Review Message」タスク・フローのフォームを作成します。

Task Flowエディタで「 taskDetails2_jspx」 アイコンをダブル・クリックします。 「Create JSF Page」ウィンドウが開きます。デフォルトの値をそのまま使用し、「OK」をクリックします。

JSFページ・デザイナーが初期化されるには、数秒かかります。

.

コンポーネントを選択するために、 Studioウィンドウの左側にあるいくつかのアコーディオン・パネルのサイズを変更し、「Data Controls」 アコーディオン・パネルを大きくします。

HelloWorld_UI_ReviewMessage>getTaskDetails>Return」を展開します。 「Task」をクリックし、 Taskflow デザイン・エディタにドラッグします。ドロップするとメニューが表示されるので、 「Human Task>Complete Task with Payload」 を選択します。

.

次に 「Edit Action Binding」 ウィンドウが開きます。「HelloWorld_UI_ReviewMessage」 ノードを展開できない場合は、このウィンドウで 「OK」をクリックします。

二番目の 「Edit Action Binding」 ウィンドウが表示されます。 「HelloWorld_UI_ ReviewMessage>getTaskDetails(...)>Return」を展開します。 「Task」オブジェクトを選択します。「OK」をクリックします。

数秒後に、JSFページがデザイン・エディタ(デザイン・モード)で表示されます。 そこには二つのボックスが含まれています。上のボックスはユーザーが入力したメッセージの内容に対応し、 下のボックスはレビュー担当者が入力したレビュー・コメントに対応します。

これで、タスク・フローおよびJSFページの作業は完了です。「Save All」をクリックします。 「HelloWorldProcess」以外のすべてのタブを閉じます。.

条件分岐の追加

.

プロセス・モデルに排他ゲートウェイを追加します。

この項では、デザイン要素を移動させます。デフォルトではデザイン・エディタのAutomatic LayoutがONに 設定されています。 移動したデザイン要素がもとに戻らないように、オフに変更します。ツールバーで「Layout」ボタンをクリックします。

表示されているAtoumaitc Layoutメニューで、「ON」ボタンをクリックし、 「OFF」ボタンに変更します。このメニューに戻り、 自動レイアウト変更を1回行う、 または自動レイアウト設定に戻ることもできます。

End」と 「Write Message」 アクティビティを右に移動して、 プロセス・モデル変更のためのスペースを確保します。

Component Paletteの「Gateway」アコーディオン・パネルから「Exclusive Gateway」をクリックし、 ドラッグして、「ReviewNeeded」と「Write Message」間のシーケンス・フローにドロップします。

重要: ゲートウェイを遷移線に接続するためには、 ゲートウェイをドロップする時に遷移線がに変わっている必要があります。 遷移線を青に変えるには、ゲートウェイをアクティビティの間のスペースの中央近くにドロップ してください。 ゲートウェイをドロップした後、左に移動させることができます。

ゲートウェイをドロップすると、「Properties」ウィンドウが開きます。ゲートウェイの名前を 「g1」 に変更し、「OK」をクリックします。

次の手順で追加する排他ゲートウェイのためのスペースを確保するために、 「g1」ゲートウェイを左に移動します。

.

g1」 と「 Write Message」 の間にある遷移線に、 二番目の排他ゲートウェイを追加します。前の手順を参照してください。このゲートウェイに「g2」と名前を付けます。

.

g1」 から「Review Message」までシーケンス・フローを追加します。 「g1」を右クリックし、「Add conditional sequence flow」を選択します。

Review Message」をクリックして遷移線を 接続します。デフォルト・シーケンス・フローが存在しないという警告メッセージは無視してください。 次の手順でこれを修正します。

下図のように遷移線をクリックして、見やすい形にドラッグします。

.

Review Message」 から 「g2」にデフォルト・シーケンス・フローを追加します。 「Review Message」を右クリックし、「Add default sequence flow」を選択します。

「g2」をクリックして、 シーケンス・フローのもう一方の端を接続します。前の手順と同様に、遷移線の形を調整します。

.

g2」 から 「Request Hello」までの条件シーケンス・フローを追加します。 他の二つの遷移線と同じように、この遷移線の形を調整します (既存のメイン・シーケンス・フローによって見えにくくなる場合があります)。これが完了すると、下図のようになります。

.

g1」 から 「Review Message」までのシーケンス・フローの条件を 定義します。二つのオブジェクトの間にある遷移線をダブル・クリックします。 「Transition」プロパティ・ウィンドウが開きます。

Description」 タブで、遷移に 「Review Needed」と名前を付けます。

Properties」タブをクリックします。 このタブでは、式を定義します。この式の結果によって、 プロセス・フローは遷移を「Review Message」アクティビティに移動するかどうか決定します。 言い換えると、ここでは条件シーケンス・フローの条件を定義します。ウィンドウの右側の 「Expression Builder」 ボタンをクリックします。

Expression Builderが開きます。三つの手順で式を作成します。

  1. 「Variables」パネルで、「review」を展開し、「review」属性を選択します。
  2. Insert Into Expression」ボタンをクリックします。これにより「review.review」 が上部の「Expression」パネルに置かれます。
  3. 「Expression」パネルで、

= "true"」 を既存の変数参照に追加します。

完了したら、「OK」 をクリックしてExpression Builderを閉じます。

OK」 をクリックして、「Transition」プロパティ・ウィンドウを閉じます。

.

g2」 から 「Request Hello」までのシーケンス・フローの条件を定義します。 二つのオブジェクトの間にある遷移線をダブル・クリックします。「Transition」プロパティ・ウィンドウが開きます。

Description」 タブで、遷移に 「Message Rejected」と名前を付けます。

Properties」 タブをクリックします。「Expression Builder」 ボタンをクリックしてExpression Builderを開きます。前の手順と同様に、次の式を定義します。

reviewOutcome = "REJECT"

OK」をクリックして、式を保存します。

「Properties」ウィンドウで「OK」をクリックします。

.

プロセスは下図のようになります。

スクリプト・タスクの追加

.

プロセス・フローは、二番目のゲートウェイ(g2)に達すると 「reviewOutcome」 変数の値をチェックします。 プロセスは「Write Message」アクティビティに移動するために 「reviewOutcome」変数の値が存在している必要があります。この値が「REJECT」の場合、プロセスは「RequstHello」に戻ります。 メッセージにレビュー用のフラグが付いている場合は、レビュー担当者が「REJECT」または「ACCEPT」をクリックして「reviewOutcome」 変数の値を設定します。

プロセスがレビュー分岐をスキップし、直接「g1」ゲートウェイから「g2」ゲートウェイに移動する場合、 「reviewOutcome」 変数は値を持ちません。

スクリプト・タスクを追加して、「g1」と「g2」の間で「reviewOutcome」を初期化します。 Component Paletteの「Activities」アコーディオン・パネルから 「Script」タスクをクリックし、ドラッグして、「g1」と「g2」の間にある遷移線にドロップします。

「Properties」ウィンドウが表示されたら、「Basic」タブでアクティビティに 「InitApproval」 と名前を付け、「OK」をクリックします。

.

「InitApproval」タスクの実装を定義します。「 InitApproval」を右クリックし、「Properties」を選択します。

「Properties」ウィンドウが開くので、「Implementation」タブをクリックします。 「Use Associations」チェック・ボックスを選択します。 鉛筆アイコンをクリックして、「Data Associations」ウィンドウを開きます。

「Data Associations」ウィンドウで、右側のパネルから 「reviewOutcome」 プロセス・データ・オブジェクトを、 左側にある 「Custom Assignments」 というラベルが付いている灰色のボックスにドラッグします。灰色のボックスの左側にあるテキスト・フィールドに、 「reviewOutcome」変数の初期値として「 "ACCEPT"」を入力します。

「Data Associations」ウィンドウで、「OK」 をクリックします。

「Properties」ウィンドウで、「OK」をクリックします。

Save All」をクリックします。 Hello Worldプロセスが完成しました!

アプリケーションのデプロイとテスト

この項では、SOAインストール環境の一部であるWebLogic サーバーで実行されているBPMエンジンへ、 Hello Worldアプリケーションをデプロイします。このチュートリアルでは、サーバーがリモートの Linuxマシン上で実行されていることを前提としています。次の情報を確認しておく必要があります。

アプリケーションをデプロイする前に、WebLogicサーバーの内部LDAPレルムに接続し、 「Reviewer」と「Requester」ロールをLDAP内のユーザーにマッピングします。

デプロイした後、 Oracle BPM Workspace Webアプリケーションを実行して、Hello World アプリケーションをテストします。

StudioロールとLDAPロールとのマッピング

.

BPM Project Navigatorで、「HelloWorldProject」 を展開し、 「Organization」ノードを右クリックし、 「Open」を選択します。

Organizationエディタが開くには、数秒かかります。

.

「Request」ロールにユーザーを追加します。 Organization エディタで、 「Requester」ロールを選択します。 「Members」 パネルの右側にある緑色のプラス記号ボタンをクリックします。

Identity Lookup」 ウィンドウが開きます。 Studioはまだリモート・サーバーを認識していないので、 JDeveloperとともにインストールされた統合WebLogicサーバーのみが表示されています。

リモート・サーバーへ接続するための新しいプロファイルを作成します。 「Application Server」 フィールドの隣にある緑色のプラス・アイコンをクリックして、 Create Application Server Connectionウィザードを起動します。

.

ウィザードの「Name and Type」ページで、 「Connection Name」として 「Remote_WLServer」 と入力します。 「Connection Type」が 「WebLogic 10.3」であることを確認し、「Next」をクリックします。

ウィザードの「Authentication」ページで、 「Username」として 「weblogic」 と入力し、 「Password」として 「welcome1」 と入力します (もしくは各自のwebLogicのパスワードと置き換えます)。 「Next」をクリックします。

ウィザードの「Configuration」ページで、 「Weblogic Hostname」を入力し、 デフォルトの「Port」と「SSL Port」はそのまま使用し、 「Weblogic Domain」 フィールドに 「domain1」と入力します。「Next」をクリックします。

ウィザードの「Test」ページで、「Test Connection」 ボタンをクリックします。以下のような結果が表示されるはずです。表示されない場合、「Back」 ボタンをクリックしてエラーを修正し、再びテストします。

Finish」をクリックします。

「Identity Lookup」ウィンドウに戻ります。

.

Application Server」リストから 「Remote_WLServer」 プロファイルを選択します。数秒でStudioはリモート・サーバーのLDAPサーバーに接続し、 「Realm」フィールドに 「jazn.*」が表示されます。

User Name」 フィールドの隣にある参照アイコンをクリックして、 LDAPサーバーで保持しているDemo Community内のすべてのユーザーのリストを表示させます。リストから 「jcooper」を選択し、 「Select」ボタンをクリックします。

jcooper」 は「Selected Users」パネルに表示されます。「OK」をクリックし、Organizationエディタに戻ります。

.

前の手順と同様に、「jcooper」 を 「Reviewer」 ロールに追加します。

.

Save All」をクリックして、 Organizationエディタを閉じます。

プロセスのデプロイ

.

HelloWorldProjectをデプロイします。

Application Navigatorで「HelloWorldProject」を右クリックし、 「Deploy > HelloWorldProject... 」を選択します。

Deploy HelloWorldProject ウィザードが開きます。

.

ウィザードの「Deployment Action」ページで「Deploy to Application Server」 を選択し、 「Next」をクリックします。

「Deploy Configuration」ページで、「Overwrite any existing composites with the same revision ID」チェック・ボックスをクリックし、「Next」をクリックします。

「Task flow deployment」ページで、 「Projects」の隣のチェック・ボックスを選択します。 これによりHelloWorldProject内のすべてのタスク・フロー・プロジェクトが選択されるので、 HelloWorld_UIも選択されることがわかります。

Next」をクリックします。

「Select Server」ページで、「Remote_WLServer」を選択し、「Finish」をクリックします。デプロイメントが始まります。

Studioウィンドウの下側の中央部にある 「Log」パネルで 「Deployment」 タブを確認して進行状況を監視し、デプロイメントが完了したかを確認します。 最初のSOA Composite(以下のログ・ビューアのスクリーンショットで sca_HelloWorldProject_rev1.0.jarとして示されている)のデプロイメントは すぐに終わります。タスク・フロー(HelloWorld_UI.war)を含む WARファイルのデプロイメントは多少時間がかかります。 使用している環境に依存しますが、デプロイメントに15分ぐらいかかる場合もあります。

Workspaceでプロセスのテスト

.

ブラウザ(サーバー上、またはWindowsマシンから)を開き、次のURLを入力します。

http://<your server hostname>:7001/bpm/workspace

WorkspaceのWelcomeページが表示されたら、 「Username」 フィールドに 「jcooper」 と入力し、 「Password」フィールドに 「welcome1」 と入力します。「Log In」をクリックします。

Workspaceのメイン・ウィンドウが開きます。

.

ウィンドウの左側の「Tasks」タブで、 「Applications」 の下にある「HelloWorldProcess v1.0」 リンクをクリックして、プロセスをインスタンス化します。

注: HelloWorldProcess v1.0リンクが「Task」タブの「Applications」パネルに表示されない場合、 「Process Tracking」タブをクリックしてください。 リンクが表示されているはずです。「Process Tracking」タブからもプロセスのインスタンス化ができます。

このアクションにより、プロセスの最初のタスク(Request Hello)が実行されます。

.

まずレビューを必要としない メッセージを入力します。表示された 「Please Enter a Hello Message」 ポップアップ・ウィンドウで、フォーマット 「MMM d, yyyy」 (例: Jun 2, 2010)を使用して、 「Date」 フィールドに値を入力します。 「Greeting」と 「Message」フィールドに値を入力します (「Greeting」フィールドの値の長さは5より大きく、「Message」フィールドの値の長さは5より大きくしてください)。 「Submit」をクリックします。

メッセージを提出した後、プロセスは「ReviewNeeded」ビジネス・ルールに移動します。 「Greeting」と「Message」の長さは「Medium」と見なされるので、 メッセージのレビューは必要としません。したがって、プロセスは 「g1」 ゲートウェイを通過し、スクリプト・タスクによって 「reviewOutcome」 が初期化され、「g2」ゲートウェイを通過し、「Write Message 」アクティビティに移動します。

「Write Message」アクティビティは対話型アクティビティではなくサービス型のアクティビティであるため、 Workspaceの「Tasks」パネルにはアクションの指示はでません。

.

「Write Message」の実装によって作成されたファイルを開きます。前の手順でファイルをパス 「.」 (ドット)に 書き込むようにファイル・アダプタを設定しました。これはWebLogicファイル構造内の domain1ディレクトリに対しての相対パスです。

サーバー上で、次に示すようにターミナル・ウィンドウまたは エクスプローラ・スタイルのウィンドウを使用して、次の場所に移動します。

<path to your mwhome>/mwhome/user_projects/domains/domain1

Hello_1.xml を検索します。テキスト・エディタでHello_1.xmlを開き、プロセスの結果を確認します。

結果は以下のようになります。

.

HelloWorldProcess v1.0」リンクをもう一回クリックして、 HelloWorldプロセスの別のインスタンスを作成します。 今度は、「Review Message」アクティビティを通過するメッセージを入力します。

Please enter a hello message」 ウィンドウが表示されたら、 「Data」フィールドに値を入力し、 「Greeting」フィールドには 長さが5以下 の情報を入力します。 「Message」 フィールドは空白のままにしておきます。「Submit」をクリックします。

.

プロセスはビジネス・ルールに移動し、ここで「greeting」が「Short」と判断されました。 「greeting」が「short」の場合、「Message」フィールドの値にかかわらずレビューが必要になります。 結果として、プロセスは「Reviewer」ロールが割り当てられた「Review Message」アクティビティに移動します。

Review Message」 アクティビティは 「My Tasks」 タブに表示されます(jcooperも 「Reviewer」ロールを持っています)。 アクティビティをクリックして、このタブの下のパネルに表示される詳細を確認します。

詳細パネルでは、このアクティビティに対して作成されたタスク・フローのフォームを参照できます。 このフォームには、「HelloObject」と「ReviewObject」の両方のフォーム要素が含まれています。 このメッセージに対してビジネス・ルールを実行すると、「ReviewObject」属性がBusiness Rulesエンジンによって割り当てられます。

詳細を確認した後、 「Reject」をクリックします。

.

プロセスは「g2」 ゲートウェイに移動し、ここで 「reviewOutcome」 変数の値がチェックされます。 「reviewOutcome」変数の値がレビュー担当者によって「REJECT」 と設定されているので、プロセスが「Request Hello」に戻ります。

Please enter a hello message」 リンクが「My Tasks」パネルに表示されます。これは、「Request Hello」 タスクに関連付けられた ヒューマン・タスク・フローのタイトル文字列です。前の手順では、このウィンドウはプロセスを インスタンス化するとすぐに開かれてました。 今回は、このウィンドウは「My Task」パネルに表示されています。

手順3と同様に、リンクをクリックして入力フォームを参照し、レビューを必要と しない 適切なメッセージを入力します。終了したら、「Submit」をクリックします。

プロセスは2つのゲートウェイを通過し、「Write Message」アクティビティと 「End」アクティビティに移動します。「My Tasks」パネルは空になります。プロセスは完了しました。

.

Workspaceからログアウトします。以上でチュートリアルは終了です!

まとめ

このチュートリアルでは、Oracle BPMのモデリングと実装に関する基本的な機能に ついて説明する簡単なプロセスを作成しました。これは第一歩にすぎませんが、 以下のような製品の主なメリットを学習するために、非常に役立ちます。

参考資料

著者

Hardware and Software Engineered to Work Together 会 社情報 |オラクルとサン | Oracle RSS Feeds | 採用情報 | お問い合わせ | サイ トマップ | 情報保護基 本方針 | ウェ ブサイトのご使用条件 | 個人情報保護基本方針