この章では、最初のワークフローを設計する方法を最初から最後まで説明します。
この章の内容は次のとおりです。
このチュートリアルで開発するアプリケーションは、次のユースケースに基づいています。
従業員は休暇申請を提出します
マネージャは休暇申請を承認または却下します
従業員は、自分の申請が承認または却下された通知を受け取ります
このチュートリアルでは、新しいアプリケーションとSOAプロジェクトを作成する方法と、承認または却下のために休暇申請をマネージャに送信するヒューマン・タスクを設計する方法について説明します。
結果としてSOAコンポジット・アプリケーションには、次のコンポーネントが含まれます。
BPELプロセス
ヒューマン・タスク。従業員が提出した休暇申請を承認します。
また、Oracle ADFベースのタスク・フォームの作成方法についても説明します。Oracle ADFベースのタスク・フォームを使用して、アプリケーションがデプロイされて実行されたときに、エンド・ユーザーが休暇申請の操作を行えるようにします。Oracle ADFベースのタスク・フォームを作成するには、新しいアプリケーションと新しいプロジェクトを作成する必要があります。
このチュートリアルでは、次のタスクをガイドします。
SOAコンポジット・エディタの使用
ヒューマン・タスク・エディタの使用
Oracle BPELデザイナを使用した単一承認ワークフローのモデリング
Oracle ADFベースのOracle BPM Worklistの作成
Oracle BPM Worklistを使用したタスクの表示および応答
このチュートリアルでは、次の内容を前提にしています。
Oracle SOA Suiteは、SOAインフラストラクチャが構成されているホストにインストールされています。
BPELアクティビティやパートナ・リンクなどの基本的なBPEL構成要素と、基本的なXPath関数について理解しているユーザーを対象にしています。このユーザーは、SOAコンポジット・エディタとOracle BPELデザイナ(BPELプロセスを設計およびデプロイするための環境)についても理解している必要があります。
次の構文を使用して、VacationRequest.xsd
というファイルを作成します。このファイルには、休暇申請と後続のレスポンスに対するスキーマが含まれています。
<schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/VacationRequest" xmlns="http://www.w3.org/2001/XMLSchema"> <element name="VacationRequestProcessRequest"> <complexType> <sequence> <element name="creator" type="string"/> <element name="fromDate" type="date"/> <element name="toDate" type="date"/> <element name="reason" type="string"/> </sequence> </complexType> </element> <element name="VacationRequestProcessResponse"> <complexType> <sequence> <element name="result" type="string"/> </sequence> </complexType> </element> </schema>
注意:
|
BPELプロセスを使用してアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperを起動します。
「ファイル」メイン・メニューから「新規」→「アプリケーション」→「SOAアプリケーション」の順に選択します。
「OK」をクリックします。
「アプリケーション名」フィールドにVacationRequest
と入力し、「次へ」をクリックします。
「プロジェクト名」フィールドにVacationRequest
と入力し、「次へ」をクリックします。
「コンポジット・テンプレート」リストで、BPELプロセスを使用するコンポジットを選択し、「終了」をクリックします。
「BPELプロセスの作成」ダイアログが表示されます。
「名前」フィールドに、VacationRequestProcess
と入力します。
「BPELプロセスの作成」ダイアログの下部に移動します。
「入力」フィールドの右側にある「検索」アイコンをクリックします。
「タイプ・チューザ」ダイアログが表示されます。
右上隅にある「スキーマ・ファイルのインポート」アイコンをクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
第31.2項「前提条件」で作成したVacationRequest.xsdファイルを参照して選択します。
図31-1に示すように、「タイプ・チューザ」ダイアログに戻るまで、「OK」をクリックします。
図31-1 リクエスト要素とレスポンス要素が表示された「タイプ・チューザ」ダイアログ・ボックス
入力要素の「VacationRequestProcessRequest」を選択して、「OK」をクリックします。
「BPELプロセスの作成」ダイアログに戻ります。
「出力」フィールドの右側にある「検索」アイコンをクリックします。
出力要素の「VacationRequestProcessResponse」を選択して、「OK」をクリックします。
図31-2に示すように、「BPELプロセスの作成」ダイアログに戻ります。
残りのすべての設定に対するデフォルト値をそのまま使用し、「OK」をクリックします。
図31-3に示すように、BPELプロセス・サービス・コンポーネントはSOAコンポジット・エディタに作成されます。「BPELプロセスの作成」ダイアログで「SOAPサービスとして公開」を選択したため、BPELプロセスはサービス・バインディング・コンポーネントに自動的に接続されます。このサービスでは、SOAコンポジット・アプリケーションが外部の顧客に公開されます。
サービス・コンポーネントおよびSOAコンポジット・エディタの詳細は、第2章「Oracle SOA Suiteを使用したSOAコンポジット・アプリケーションの開発」を参照してください。
ヒューマン・タスク・サービス・コンポーネントを作成し、そのコンポーネントでヒューマン・タスクを設計します。
ヒューマン・タスク・サービス・コンポーネントを作成する手順は、次のとおりです。
コンポーネント・パレットの「サービス・コンポーネント」セクションから、ヒューマン・タスクをSOAコンポジット・エディタにドラッグします。
「ヒューマン・タスクの作成」ダイアログが表示されます。
表31-1に記載されている詳細を入力します。
表31-1 「ヒューマン・タスクの作成」ダイアログのフィールドと値
フィールド | 値 |
---|---|
名前 |
|
ネームスペース |
デフォルトの値をそのまま使用します。 |
SOAPバインディングを持つコンポジット・サービスの作成 |
チェック・ボックスは選択しないでください。かわりに、ヒューマン・タスクを作成し、後で、このヒューマン・タスクを第31.3項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けます。このBPELプロセスは、自動的にバインドされたWebサービスを使用して作成されています。 |
「OK」をクリックします。
図31-4に示すように、BPELプロセスの上部にあるSOAコンポジット・エディタに、「ヒューマン・タスク」アイコンが表示されます。
「ヒューマン・タスク」アイコンをダブルクリックします。
ヒューマン・タスク・エディタが表示されます。ヒューマン・タスクの設計を開始します。
ヒューマン・タスクを設計する手順は、次のとおりです。
「タスクのタイトル」フィールドに、Request for Vacation
と入力します。
結果のデフォルト値(「APPROVE」および「REJECT」)をそのまま使用します。このタスクの場合、これらの結果は、休暇申請に対するマネージャの操作に2つの選択肢があることを示しています。
エディタの左側にある「データ」タブをクリックします。
「追加」アイコンをクリックして、タスク・ペイロードを指定します。
「文字列パラメータの追加」を選択します。
「タスク・パラメータの追加」ダイアログが表示されます。XSDファイル内の要素を表すパラメータを作成します。これにより、ペイロード・データがワークフロー・タスクで使用できるようになります。
「要素」を選択します。
「要素」フィールドの右側にある「検索」アイコンをクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」→「VacationRequest.xsd」→「VacationRequestProcessRequest」の順に開いて選択し、「OK」をクリックします。図31-5に詳細を示します。
「ワークリストにより編集可能」チェック・ボックスが選択されている必要があります。この選択によって、実行時にOracle BPM Worklistからこのパラメータを変更するオプションが提供されます。
「タスク・パラメータの追加」ダイアログで、「OK」をクリックします。
エディタの左側にある「割当て」タブをクリックします。
図31-6に示すように、「Stage1」の下部にある<Edit participant>ボックスがハイライト表示されます。
ヒューマン・タスク・エディタの上にある「編集」アイコンをクリックします。
「参加者タイプの編集」ダイアログが表示されます。このタスクに参加者を追加します。第27.2.1.1.2項「参加者タイプ」で説明したように、Oracle SOA Suiteには、特定のビジネス・ニーズに対応する参加者タイプと呼ばれる組込みパターンが複数用意されています。
「タイプ」リストに表示されている、デフォルトの参加者タイプの「単一」をそのまま使用します。休暇申請タスクを操作するのは単一の割当て先であるマネージャのため、このタイプを選択します。
「参加者名」表で、「追加」アイコンをクリックし、「ユーザーの追加」を選択します。
この参加者タイプは、タスクに対して単独で機能します。
「データ型」列をクリックし、表示されたリストから「式別」を選択します。図31-7に詳細を示します。
このアクションを使用すると、タスクのコンテンツによってタスクを動的に割り当てることができます。休暇申請を提出している従業員は、このタスクに渡されたパラメータ(第31.3項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」でインポートしたXSDファイル内のcreator
要素)から取得されます。このタスクは、その従業員のマネージャに自動的にルーティングされます。
「値」列で、「参照」アイコン(...)をクリックして、「式ビルダー」ダイアログを起動します。
「関数」セクションのドロップダウン・リストで、「Identity Service Functions」を選択します。
「getManager」を選択します。この関数によって、休暇申請タスクを作成したユーザーのマネージャが取得されます。
「関数」セクション上部にある「式に挿入」をクリックします。
関数のカッコ内にカーソルを置きます。
「スキーマ」セクションで、「task:task」→「task:payload」→「ns1:VacationRequestProcessRequest」→「ns1:creator」の順に展開します。
ここで、ns1はこの例のネームスペースであり、ユーザーのネームスペースとは異なる場合があります。
「式に挿入」をクリックします。
「式ビルダー」ダイアログの「式」セクションに、XPath式が表示されます。図31-8に詳細を示します。
「OK」をクリックして、「式ビルダー」ダイアログを閉じます。
「OK」をクリックして、「参加者タイプの追加」ダイアログを閉じます。
「ファイル」メニューから「すべて保存」を選択します。
ヒューマン・タスクを第31.3項「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けます。
ヒューマン・タスクとBPELプロセス・サービス・コンポーネントを関連付ける手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「composite.xml」をダブルクリックします。
SOAコンポジット・エディタで、「VacationRequestProcess」BPELプロセス・サービス・コンポーネントをダブルクリックします。
BPELプロセスがOracle BPELデザイナに表示されます。
「コンポーネント・パレット」で、「SOAコンポーネント」を開きます。
「receiveInput」receiveアクティビティの下に、「Human Task」をドラッグ・アンド・ドロップします。
アクティビティをダブルクリックします。
「Human Task」ダイアログが表示されます。
「タスク定義」リストから、作成した「VacationRequestTask」タスクを選択します(現在表示されていない場合)。
ダイアログが図31-9に示すようにリフレッシュされ、他のフィールドが表示されます。
図31-10に示すように、「BPEL変数」列で「参照」アイコン(...)をクリックします。
「タスク・パラメータ」ダイアログが表示されます。
「タイプ」リストで「変数」を選択します。
「プロセス」→「変数」→「inputVariable」→「payload」→「ns1:VacationRequestProcessRequest」の順に展開します。図31-11に詳細を示します。
「OK」をクリックします。
完成すると、ダイアログは図31-12のようになります。
「OK」をクリックして「Human Task」ダイアログを閉じます。
図31-13に示すように、ヒューマン・タスク・アクティビティが表示されます。
SOAコンポジット・エディタに戻ります。BPELプロセス・サービス・コンポーネントとヒューマン・タスク・サービス・コンポーネントが自動的に接続されていることに注意してください。図31-14に詳細を示します。
「ファイル」メニューから「すべて保存」を選択します。
Oracle SOA Suiteがインストールされ、SOAインフラストラクチャで構成されたアプリケーション・サーバーへの接続を作成します。ここでは、Oracle WebLogic Serverへの接続を作成する方法について説明します。IBM WebSphere Serverなどの他のアプリケーション・サーバーへの接続を作成する方法は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。
アプリケーション・サーバー接続を作成する手順は、次のとおりです。
「ファイル」メイン・メニューから、「新規」→「接続」→「アプリケーション・サーバー接続」の順に選択します。
「OK」をクリックします。
「接続名」フィールドに、接続名を入力します。
「接続タイプ」リストで「WebLogic 10.3」を選択します。
「次へ」をクリックします。
「ユーザー名」フィールドに、weblogic
と入力します。
「パスワード」フィールドに、アプリケーション・サーバーに接続するためのパスワードを入力します。
「次へ」をクリックします。
SOAインフラストラクチャで構成されているアプリケーション・サーバーのホスト名を入力します。
「WebLogicドメイン」フィールドに、Oracle WebLogic Serverドメインを入力します。
「次へ」をクリックします。
「接続のテスト」をクリックします。
成功した場合は、図31-15に示すメッセージが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」を選択します。
接続を作成したアプリケーション・サーバーにデプロイします。
SOAコンポジット・アプリケーションをデプロイする手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「VacationRequest」プロジェクトを右クリックし、「デプロイ」→「VacationRequest」の順に選択します。
デプロイメント・ウィザードの各ページの指示に従い、プロジェクトをデプロイします。
プロジェクトがデプロイされます。
デプロイメントの詳細は、第43.7項「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
プロセス・インスタンスを開始する手順は、次のとおりです。
プロセス・インスタンスを開始する「Webサービスのテスト」ページにアクセスする手順の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。
タスク・フォームのプロジェクトを作成します。これは、ヒューマン・タスクを作成したプロジェクトとは別のプロジェクトです。
タスク・フォームのプロジェクトを作成する手順は、次のとおりです。
「VacationRequestTask」ヒューマン・タスクをダブルクリックします。
ヒューマン・タスク・エディタが表示されます。
上部の「フォームの作成」メニューから、「タスク・フォームの自動生成」を選択します。図31-16に詳細を示します。
「プロジェクトの作成」ダイアログが表示されます。
「プロジェクト名」フィールドに、VacationRequestTaskFlow
と入力し、「OK」をクリックします。
「ファイル」メイン・メニューから「すべて保存」を選択します。
Oracle BPM Worklistでタスクを解決する手順は、次のとおりです。
Oracle BPM Worklistに移動します:
http://hostname:7001/integration/worklistapp
Oracle BPM Worklistにログインします。
タスクを解決します。
タスク・フォームをデプロイする手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「VacationRequestTaskFlow」プロジェクトを右クリックし、「デプロイ」→「VacationRequestTaskFlow」の順に選択します。
デプロイメント・ウィザードの各ページの指示に従い、タスク・フォームをデプロイします。
タスク・フォームがデプロイされます。
デプロイメントの詳細は、第43.7項「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
Oracle BPM Worklistに戻ります。
Oracle BPM Worklistの下部に、タスク・フォームが表示されることに注意してください。
休暇申請のユースケースに加えて、他のチュートリアルもOracle SOA Suiteサンプルから入手できます。
表31-2に、複数のサンプルの概要を示します。すべてのサンプルは、ワークリスト・アプリケーションとワークフロー通知の使用を説明しています。サンプルの完全なリストについては、このURLを参照してください。
表31-2 エンドツーエンドの例
サンプル | 説明 | 名前 |
---|---|---|
デモ・コミュニティ・シード・アプリケーション |
デモ・コミュニティのシードを実行します。他のすべてのワークフロー・サンプルの前提条件となります。 |
workflow-001-DemoCommunitySeedApp |
休暇申請 |
承認または却下のため、マネージャに割り当てられる休暇申請を提出するサンプルを提供しています。また、このサンプルは、休暇申請のOracle ADFタスク・フォームを作成して、タスクを操作する方法を説明しています。 |
workflow-100-VacationRequest |
売上げ見積り要請 |
多重タスクに関連する複雑なワークフローのサンプルを提供しています。 |
workflow-102-SalesQuote |
契約承認 |
契約を承認するサンプルを提供しています。このサンプルは、タスクのデジタル署名を使用します。 |
workflow-104-ContractApproval |
反復設計 |
設計プロセスの中でワークフロー・タスクが割当て先との間を何度も通過できるサンプルを提供しています。拡張ルーティング・ルールでルーティング動作を実装します。 |
workflow-106-IterativeDesign |
ワークフロー・カスタマイズ |
ワークフロー・サービスAPI(タスク属性、ビュー名などのカスタム・リソース文字列など)にカスタマイズを実装する方法を示します。 |
workflow-110-workflowCustomizations |
MLSサンプル |
タスク・タイトルに複数の翻訳があるタスクの設定方法を示します。 |
workflow-114-MLSSample |
ワークフロー・イベント・コールバック |
ワークフロー・イベント・コールバックの使用方法を示します。タスク・ライフサイクル・イベントで生成されるワークフロー・イベントがOracle Mediatorによって使用されます。 |
workflow-116-WorkflowEventCallback |
ユーザー構成データ・マイグレータ |
ユーザー構成(ビュー、マップ済属性など)を、中間エクスポート・ファイルを介して、あるインスタンスから別のインスタンスに移動します。 |
workflow-117-UserConfigDataMigrator |
Javaサンプル |
Javaを使用してヒューマン・ワークフローと対話するサンプル各種を提供します。 |
workflow-118-JavaSamples |