ヒューマン・ワークフロー・タスクを使用すると、エンドツーエンドのプロセス・フロー内で、人的な相互作用とシステムやサービスの接続性とを組み合せることができます。図7-29に示すように、ヒューマン・ワークフローは他のWebサービスと同様に、WSDLを介してBPELプロセスにリンクされます。プロセスは、タスクをユーザーまたはロールに割り当て、レスポンスを待機します。ユーザーは、Oracle BPELワークリスト・アプリケーション(ワークリスト・アプリケーション)を使用してタスクを操作します。
図7-29 Oracle BPEL Process Managerにおけるヒューマン・ワークフロー
ワークフロー・サービスの機能は、次のとおりです。
タスクの割当ておよびルーティング: ビジネス・プロセスからのタスクの作成と、ユーザーまたはロールへのタスクの割当てが含まれます。その他のタスクの割当ておよびルーティング機能は、次のとおりです。
タスクの有効期限と自動期限更新のサポート
タスクの委任、エスカレーションおよび再承認のサポート
監査のためのタスク履歴情報の保管、および指定したポリシーに基づくタスク詳細のアーカイブと消去
タスク詳細を表示および更新するためのJSPベースのフォーム
複数の人的相互作用パターン: 単純承認、順序承認、パラレル承認などの標準的なパターンが含まれます。自動エスカレーション、期限更新、リマインダなどのパターンのバリエーションもサポートされます。また、複数のパターンを組み合せて調整し、複雑なパターンを作成できます。
アイデンティティ・サービス: バックエンドのID管理システムと対話し、Java AuthoriZatioN(JAZN)およびLDAPからすべてのユーザー情報を取得します。アイデンティティ・サービスによって、ロール・ベースのアクセス制御が提供されます。ロールに権限を割り当て、組織階層を認可用のロール・モデルにリンクできます。
通知サービス: 電子メール、ボイス・メッセージ、FAX、ポケットベル、SMSなど、様々な配信チャネルを使用して、タスク割当てやタスク変更をユーザーに通知します。
ワークリスト・アプリケーション: タスクにアクセスして操作できます。ワークリスト・アプリケーションは、アプリケーションに基づいて拡張またはカスタマイズできます。
human taskアクティビティとヒューマン・タスク・エディタを使用して、ヒューマン・ワークフロー・タスクを作成します。ヒューマン・タスク・エディタに入力した内容は、human_task_name
.task
ファイルに保存されます。
ヒューマン・ワークフロー・タスクを作成する手順は、次のとおりです。
「Human Task」アクティビティをBPELプロセスにドラッグ・アンド・ドロップします。
「タスク定義の作成」アイコン(図7-30を参照)をクリックします。
ヒューマン・タスク名を入力し、「OK」をクリックします。
ヒューマン・タスク・エディタを使用して、タスクを構成します。
タイトルを入力します。
優先度を選択します。
懐中電灯アイコンを使用して検索し、結果を選択します。
タスク所有者の名前を入力するか、懐中電灯アイコンまたは「式ビルダー」アイコンを使用してタスク所有者を指定します。
図7-31に示すように、ヒューマン・タスク・エディタの「パラメータ」セクションで、パラメータを指定します。
ウィンドウの右側にある「+」アイコンをクリックします。
「パラメータの追加」ダイアログで、「要素」をクリックし、次に懐中電灯アイコンをクリックします。
「タイプの選択」ウィンドウで、「プロジェクトのスキーマ・ファイル」ノードおよび「XSDファイル」ノードを開き、必要なパラメータを検索します。
「OK」をクリックします。
図7-32に示すように、ヒューマン・タスク・エディタの「割当ておよびルーティング・ポリシー」セクションで、参加者情報を指定します。
ウィンドウの右側にある「+」アイコンをクリックします。
「参加者タイプの追加」ダイアログで、「単一の承認者」、「グループ投票」、「管理チェーン」、「単一の承認者のリスト」、「FYI割当て先」および「外部ルーティング・サービス」から選択します。
参加者タイプのラベル(「承認マネージャ」など)を入力します。
タスクを操作する必要があるユーザーまたはグループを指定します。
条件を満たす場合はスキップする参加者を指定します。
「詳細」セクションを開き、タスクの期間を制限したり、参加者による他の参加者の招待を許可します。
「OK」をクリックします。
(オプション)「全参加者による他の参加者の招待を許可」または「条件付き中途完了の有効化」を選択します。
図7-33に示すように、「有効期限およびエスカレーション・ポリシー」セクションで、「期限切れなし」、「期限切れまでの時間」、「期限更新までの時間」または「エスカレートまでの時間」から選択し、適切なパラメータを指定します。
図7-34に示すように、「通知設定」セクションで、ユーザーにタスクを割り当てる方法、またはタスク・ステータスが変化したことをユーザーに通知する方法を指定します。
いずれかのタスク・ステータス・タイプ(「割当て」、「完了」、「エラー」、「期限切れ」、「情報のリクエスト」、「結果の更新」、「一時停止」または「取消」)を選択します。
「割当て」タスク・ステータスは、順序リストでユーザーまたは新規ユーザーに割り当てられたタスクに対して、または期限更新、委任、再割当てまたはエスカレートされたタスクに対して使用します。あるいはタスクの情報が発行された場合に使用します。
いずれかの通知メッセージ受信者(「割当て先」、「起案者」(タスクの作成者)、「承認者」または「所有者」)を選択します。
「編集」アイコンをクリックし、デフォルトの通知メッセージ・テキストを変更します。
このメッセージは、通知(電子メール、ボイス、FAX、ポケットベルまたはSMS)を作成すると、選択した通知チャネルに適用されます。電子メールおよびFAXメッセージには、このメッセージに定義したワークリスト・タスク詳細も挿入できます。
図7-35に示すように、「詳細設定」セクションで、カスタム・エスカレーション・ルール、添付用のカスタム・スタイル・シート、多言語設定、カスタム・タスク・アクションとエラー・メッセージ、コールバック・クラスなどの詳細設定を指定します。
詳細は、『Oracle BPEL Process Manager開発者ガイド』の次の項目に関する説明を参照してください。
セキュアな通知の送信
アクション可能な電子メールの送信
インバウンドおよびアウトバウンド添付の送信
詳細設定の指定
ヒューマン・タスク・エディタで指定したヒューマン・タスク設定は、メタデータ・タスク構成ファイルに格納されます。この.task
ファイルは、アプリケーション・ナビゲータのBPELプロジェクトの「インテグレーション・コンテンツ」ディレクトリの下に表示されます(図7-36を参照)。
図7-37に示すように、SOA Order Bookingアプリケーションでは、ヒューマン・ワークフロー・タスク(ApproveOrder)を作成すると、ApproveOrder.task
ファイルが生成されます。「ApproveOrder」タスクは、「requiresApproval」switchアクティビティの一部です。このワークフローによって、マネージャは、「Gold」ステータスの顧客による$1,000以上の注文を承認または却下できます。
式ビルダーを使用して、各フィールドをBPELプロセス変数にマップします。
入出力パラメータを割り当てる手順は、次のとおりです。
以前に作成したhuman taskアクティビティをダブルクリックします。
「ヒューマン・タスクの追加」ダイアログを使用して、BPELプロセスへのヒューマン・ワークフロー・タスクの関連付けを完成します。
タスク・タイトルを手動で入力するか、式ビルダーを使用してタイトルを動的に作成します。
これは必須フィールドです。この入力によって、ヒューマン・タスク・エディタの「タイトル」フィールドに入力したタスク・タイトルが上書きされます。このタイトルは、ワークリスト・アプリケーションに表示されます。
タスクの起案者を手動で入力するか、式ビルダーを使用します。
起案者は、ワークリスト・アプリケーションを使用して、作成したタスクを表示したり、リクエストの承認または却下などのアクションを実行できます。起案者が指定されていない場合は、「Human Task」ダイアログの「詳細」タブで指定したタスク所有者にデフォルト設定されます。タスク所有者も指定されていない場合、起案者は「bpeladmin
」にデフォルト設定されます。
「優先度」リストから「1」(最高)から「5」の優先度値を選択します。
これはユーザーが参照するためのフィールドで、実行時にこのタスクの優先度が高くなるわけではありません。
「BPEL変数」列の懐中電灯アイコンをクリックし、タスク・パラメータをBPEL変数にマップします。
入力データを保持するタスク・パラメータのみをマップする必要があります。ワークリスト・アプリケーションから渡される出力データについては、対応する変数をマップする必要はありません。
「変数」ナビゲーション・ツリーを開き、適切なタスク変数を選択します。
図7-38に示すように、「Human Task」ダイアログで「適用」をクリックします。
「Human Task」ダイアログの「詳細」タブを使用して、スコープ名、グローバル・タスク変数名、タスク所有者、識別キーおよびその他の詳細設定を指定します(オプション)。
次の詳細設定については、『Oracle BPEL Process Manager開発者ガイド』を参照してください。
スコープ名およびグローバル・タスク変数名の指定
タスク所有者の指定
識別キー(ユーザー定義のタスクID)の指定
他のヒューマン・ワークフロー・タスクのタスク履歴の挿入
BPELコールバックでのタスクおよびルーティングのカスタマイズの許可
タスク表示フォームは、タスク・ペイロードをワークリスト・アプリケーションに表示する方法を定義します。タスク表示フォームはテンプレートを使用して生成されます。Oracle JDeveloperには、3種類のテンプレートと2種類のデフォルトJSPがあります。
3種類のテンプレートは、次のとおりです。
3つのリージョンのJSP: ヘッダー、本文およびフッターの各リージョンで構成されます。これらのリージョンは、カスタムJSP、カスタムXSL、デフォルトのJSPまたは自動生成されたJSPを使用して表示できます。自動生成のJSPには本文リージョンが表示されます。
2つのリージョンのJSP: ヘッダーおよびフッターの各リージョンで構成されます。
1つのリージョンのJSP: 本文リージョンで構成されます。
2種類のデフォルトJSPは、次のとおりです。
ヘッダーJSP: タスク番号、優先度、タイトルなどのタスク属性を表示します。
フッターJSP: 添付、コメントなどのタスク属性を表示します。
詳細は、『Oracle BPEL Process Manager開発者ガイド』の次の項目に関する説明を参照してください。
カスタム・タスク表示フォームの生成
ADFデータ・コントロールでのタスク表示フォームの生成
カスタムJSPフォームの作成
単純なタスク表示フォームを生成する手順は、次のとおりです。
タスク表示フォームを必要とするヒューマン・ワークフロー・タスク(たとえば、SOA Order Bookingアプリケーションの「ApproveOrder」タスク)のフォルダを右クリックします。
「単純タスク・フォームの自動生成」を選択します。
3つのリージョンのテンプレートで単純タスク・フォームが生成されます。ヘッダー・リージョンはHeader1.jsp
ファイルを使用して表示されます。フッター・リージョンはFooter1.jsp
ファイルを使用して表示されます。本文リージョンはペイロードに基づいてpayload-body.jsp
ファイルを使用して表示されます。
タブの「X」をクリックしてpayload-body.jsp
を閉じます。
タスク表示フォームを生成すると、.tform
ファイルが作成されます。このファイルには、テンプレートのURIおよびリージョン情報が格納されます。ワークフロー・タスク表示フォームは、deployForm
antターゲットを使用してデプロイされます。このターゲットは、BPELプロセスをデプロイする際に実行されます。ターゲットによってEARファイルが生成されます。このEARファイルには、生成されたデフォルトJSPまたはカスタムJSPすべてが格納されます。生成されたEARファイルは、Oracle BPEL Process Managerアプリケーションの子としてデプロイされます。
例7-14に、SOA Order BookingアプリケーションのApproveOrder_Display.tform
ファイルのソース・コードを示します。
例7-14 タスク表示フォームApproveOrder_Display.tformのソース・コード
<?xml version = '1.0' encoding = 'UTF-8'?> <taskDisplay targetNamespace="http://xmlns.companyABC.com/workflow/orderTaskDisplay" generateInternationlizedJSP="false" xmlns:po="http://xmlns.oracle.com/bpel/workflowApproveOrder" xmlns:task="http://xmlns.oracle.com/bpel/workflow/task" xmlns="http://xmlns.oracle.com/bpel/workflow/taskDisplay"> <taskDefinitionId>${domain_id}_${process_id}_${process_revision}_ApproveOrder</taskDefinitionId> <applicationName>worklist</applicationName> <templateName>ThreeRegionJSP</templateName> <template>${http_url}/${domain_id}/${process_id}/${process_revision}/ ApproveOrder/ApproveOrder.jsp</template> <regions> <defaultJSP regionName="Header"> <jspURI>Header1.jsp</jspURI> </defaultJSP> <autoGeneratedJSP regionName="Body" editable="true"> <jspURI>payload-body.jsp</jspURI> <messageAttribute editable="false">PurchaseOrder</messageAttribute> </autoGeneratedJSP> <defaultJSP regionName="Footer"> <jspURI>Footer1.jsp</jspURI> </defaultJSP> </regions> </taskDisplay>
ワークリスト・アプリケーションでは、ブラウザ・インタフェースを使用して、割り当てられたヒューマン・ワークフロー・タスクをユーザーが操作できるようにします。Internet Explorer 6.0またはMozilla Firefox 1.0.4を使用して、ワークフロー・アプリケーションにアクセスします。
ワークリスト・アプリケーションの詳細は、『Oracle BPEL Process Manager開発者ガイド』を参照してください。
ワークリスト・アプリケーションにログインする手順は、次のとおりです。
Webブラウザを開きます。
次のURLに移動します。
http://hostname:portnumber/integration/worklistapp/Login
hostname
には、Oracle BPEL Process Managerがインストールされているホストの名前を指定します。
インストール時に使用されたportnumber
(通常は8888)は、次のディレクトリにあるbpelsetupinfo.txt
に記載されています。
SOA_Oracle_Home\install\
または、「スタート」→「すべてのプログラム」→「Oracle - Oracle - soademo」→「Oracle BPEL Process Manager」→「Worklist Application」の順に選択することもできます。
ユーザー名とパスワードを入力し、「ログイン」をクリックします。
jcooper
とwelcome1
を使用してログインできます。
「ApproveOrder」プロセスがSOA Order Bookingアプリケーションの一部として実行されている場合、プロセスは、レスポンスを待機(つまり、注文に対するマネージャの承認を待機)している開始済アクティビティとして、Oracle BPEL Controlに表示されます。マネージャは、ワークリスト・アプリケーションを使用してリクエストを承認または却下します。ログイン後、マネージャはタスクのリストを参照し、タスク・タイトル(Approve Order)をクリックし、タスクを申告して承認または却下します。第7.12.4項「タスク表示フォームの生成方法」および図7-39に記載されているように、タスク詳細は、タスク表示フォームを使用して表示されます。
マネージャが注文を承認すると、メッセージがBPELフローに返信されます。マネージャが注文を却下すると、プロセスによって注文が取り消されます。