プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.1.3)
E53007-05
目次へ移動
目次

前
次

31 ヒューマン・ワークフローのチュートリアル

この章では、最初のワークフローを設計する方法を最初から最後まで説明します。

この章の内容は次のとおりです。

31.1 ヒューマン・ワークフローのチュートリアルの概要

このチュートリアルで開発するアプリケーションは、次のユースケースに基づいています。

  • 従業員は休暇申請を提出します

  • マネージャは休暇申請を承認または却下します

  • 従業員は、自分の申請が承認または却下された通知を受け取ります

このチュートリアルでは、新しいアプリケーションとSOAプロジェクトを作成する方法と、承認または却下のために休暇申請をマネージャに送信するヒューマン・タスクを設計する方法について説明します。

結果としてSOAコンポジット・アプリケーションには、次のコンポーネントが含まれます。

  • BPELプロセス

  • ヒューマン・タスク。従業員が提出した休暇申請を承認します。

また、Oracle ADFベースのタスク・フォームの作成方法についても説明します。Oracle ADFベースのタスク・フォームを使用して、アプリケーションがデプロイされて実行されたときに、エンド・ユーザーが休暇申請の操作を行えるようにします。Oracle ADFベースのタスク・フォームを作成するには、新しいアプリケーションと新しいプロジェクトを作成する必要があります。

このチュートリアルでは、次のタスクをガイドします。

  • の使用

  • ヒューマン・タスク・エディタの使用

  • Oracle BPELデザイナを使用した単一承認ワークフローのモデリング

  • Oracle ADFベースのOracle BPM Worklistの作成

  • Oracle BPM Worklistを使用したタスクの表示および応答

31.2 前提条件

このチュートリアルでは、次の内容を前提にしています。

  • Oracle SOA Suiteは、SOAインフラストラクチャが構成されているホストにインストールされています。

  • BPELアクティビティやパートナ・リンクなどの基本的なBPEL構成要素と、基本的なXPath関数について理解しているユーザーを対象にしています。このユーザーは、と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>

注意:

VacationRequest.xsdファイルは、チュートリアルworkflow-100-VacationRequestの一部としてダウンロードすることもできます。このチュートリアルと他のチュートリアルのダウンロードの詳細は、「その他のチュートリアル」を参照してください。

31.3 BPELプロセスを使用したアプリケーションおよびプロジェクトの作成

BPELプロセスを使用してアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。

  1. Oracle JDeveloperを起動します。「ファイル」メイン・メニューから、「新規」「アプリケーション」「SOAアプリケーション」を選択します。

    「OK」をクリックします。

  2. 「アプリケーション名」フィールドにVacationRequestと入力し、「次へ」をクリックします。
  3. 「プロジェクト名」フィールドにVacationRequestと入力し、「次へ」をクリックします。
  4. 「コンポジット・テンプレート」リストで、BPELプロセスを使用するコンポジットを選択し、「終了」をクリックします。

    「BPELプロセスの作成」ダイアログが表示されます。

  5. 「名前」フィールドに、VacationRequestProcessと入力します。

    「BPELプロセスの作成」ダイアログの下部に移動します。

  6. 「入力」フィールドの右側にある「検索」アイコンをクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  7. 右上隅にある「スキーマ・ファイルのインポート」アイコンをクリックします。

    「スキーマ・ファイルのインポート」ダイアログが表示されます。

  8. 「前提条件」で作成したVacationRequest.xsdファイルを参照して選択します。

    図31-1に示すように、「タイプ・チューザ」ダイアログに戻るまで、「OK」をクリックします。

    図31-1 リクエスト要素とレスポンス要素が表示された「タイプ・チューザ」ダイアログ・ボックス

    図31-1の説明が続きます
    「図31-1 リクエスト要素とレスポンス要素が表示された「タイプ・チューザ」ダイアログ・ボックス」の説明
  9. 入力要素の「VacationRequestProcessRequest」を選択して、「OK」をクリックします。

    「BPELプロセスの作成」ダイアログに戻ります。

  10. 「出力」フィールドの右側にある「検索」アイコンをクリックします。
  11. 出力要素の「VacationRequestProcessResponse」を選択して、「OK」をクリックします。

    図31-2に示すように、「BPELプロセスの作成」ダイアログに戻ります。

    図31-2 BPELプロセス・ダイアログ

    図31-2の説明が続きます
    「図31-2 BPELプロセス・ダイアログ」の説明
  12. 残りのすべての設定に対するデフォルト値をそのまま使用し、「OK」をクリックします。

    図31-3に示すように、BPELプロセス・サービス・コンポーネントはSOAコンポジット・エディタに作成されます。「BPELプロセスの作成」ダイアログで「SOAPサービスとして公開」を選択したため、BPELプロセスはサービス・バインディング・コンポーネントに自動的に接続されます。このサービスでは、SOAコンポジット・アプリケーションが外部の顧客に公開されます。

    図31-3 SOAコンポジット・エディタのBPELプロセス

    図31-3の説明が続きます
    「図31-3 SOAコンポジット・エディタのBPELプロセス」の説明

    サービス・コンポーネントおよびSOAコンポジット・エディタの詳細は、「SOAコンポジット・アプリケーションの開発のスタート・ガイド」を参照してください。

31.4 ヒューマン・タスク・サービス・コンポーネントの作成

ヒューマン・タスク・サービス・コンポーネントを作成し、そのコンポーネントでヒューマン・タスクを設計します。

ヒューマン・タスク・サービス・コンポーネントを作成する手順は、次のとおりです。

  1. 「コンポーネント」ウィンドウの「サービス・コンポーネント」セクションから、「ヒューマン・タスク」にドラッグします。

    「ヒューマン・タスクの作成」ダイアログが表示されます。

  2. 表31-1に記載されている詳細を入力します。

    表31-1 「ヒューマン・タスクの作成」ダイアログのフィールドと値

    フィールド

    名前

    VacationRequestTaskと入力します。

    ネームスペース

    デフォルトの値をそのまま使用します。

    SOAPバインディングを持つコンポジット・サービスの作成

    チェック・ボックスを選択しないでください。かわりに、後で「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けるヒューマン・タスクを作成します。このBPELプロセスは、自動的にバインドされたWebサービスを使用して作成されています。


  3. 「OK」をクリックします。

    図31-4に示すように、BPELプロセスの上部にあるに、「ヒューマン・タスク」アイコンが表示されます。

    図31-4 の「ヒューマン・タスク」アイコン

    図31-4の説明が続きます
    「図31-4 の「ヒューマン・タスク」アイコン」の説明
  4. 「ヒューマン・タスク」アイコンをダブルクリックします。

    ヒューマン・タスク・エディタが表示されます。ヒューマン・タスクの設計を開始します。

31.5 ヒューマン・タスクの設計

ヒューマン・タスクを設計する手順は、次のとおりです。

  1. 「タスクのタイトル」フィールドに、Request for Vacationと入力します。
  2. 結果のデフォルト値(「APPROVE」および「REJECT」)をそのまま使用します。このタスクの場合、これらの結果は、休暇申請に対するマネージャの操作に2つの選択肢があることを示しています。
  3. エディタの左側にある「データ」タブをクリックし、「追加」アイコンをクリックしてタスク・ペイロードを指定します
  4. 「文字列パラメータの追加」を選択します。

    「タスク・パラメータの追加」ダイアログが表示されます。XSDファイル内の要素を表すパラメータを作成します。これにより、ペイロード・データがワークフロー・タスクで使用できるようになります。

  5. 「要素」を選択します。「要素」フィールドの右側にある「検索」アイコンをクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  6. 「プロジェクトのスキーマ・ファイル」「VacationRequest.xsd」「プロセス」の順に開いて選択し、「OK」をクリックします。図31-5に詳細を示します。

    図31-5「タイプ・チューザ」ダイアログ

    図31-5の説明が続きます
    「図31-5 「タイプ・チューザ」ダイアログ」の説明

    「ワークリストにより編集可能」チェック・ボックスが選択されていることを確認します。この選択によって、実行時にOracle BPM Worklistからこのパラメータを変更するオプションが提供されます。

    「タスク・パラメータの追加」ダイアログで、「OK」をクリックします。

  7. エディタの左側にある「割当て」タブをクリックします。
  8. 「コンポーネント」ウィンドウの「参加者」セクションから、「単一の参加者」タイプをドラッグして「参加者をここにドロップ」ボックスにドロップします(図31-6を参照)。休暇申請タスクを操作するのは単一の割当て先であるマネージャのため、このタイプを選択します。

    Oracle SOA Suiteには、特定のビジネス・ニーズに対応するために、参加者タイプと呼ばれるすぐに使用できるパターンが複数用意されています。詳細は、「タスクの割当ておよびルーティング」を参照してください。

    図31-6 割当ておよびルーティング・ポリシー

    図31-6の説明が続きます
    「図31-6 割当ておよびルーティング・ポリシー」の説明
  9. 追加した参加者をダブルクリックします。

    「参加者タイプの編集」ダイアログ・ボックスが開きます。

  10. 「参加者名」表で、「追加」アイコンをクリックし、「ユーザーの追加」を選択します。

    この参加者タイプは、タスクに対して単独で機能します。

  11. 「データ型」列をクリックし、表示されたリストから「式別」を選択します。図31-7に詳細を示します。

    このアクションを使用すると、タスクのコンテンツによってタスクを動的に割り当てることができます。休暇申請を提出している従業員は、このタスクに渡されたパラメータ(「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」でインポートしたXSDファイル内のcreator要素)から取得されます。このタスクは、その従業員のマネージャに自動的にルーティングされます。

    図31-7 「データ型」列での「式別」の選択

    図31-7の説明が続きます
    「図31-7 「データ型」列での「式別」の選択」の説明
  12. 「値」列で、「参照」アイコン(...)をクリックして、「式ビルダー」ダイアログを起動します。
  13. 「関数」セクションのドロップダウン・リストで、「アイデンティティ・サービス関数」を選択します。
  14. 「getManager」を選択します。この関数によって、休暇申請タスクを作成したユーザーのマネージャが取得されます。
  15. 「関数」セクション上部にある「式に挿入」をクリックします。関数のカッコ内にカーソルを置きます。
  16. 「スキーマ」セクションで、「task:task」「task:payload」「ns1:VacationRequestProcessRequest」「ns1:creator」の順に展開します。

    ここで、ns1はこの例のネームスペースであり、ユーザーのネームスペースとは異なる場合があります。

  17. 「式に挿入」をクリックします。

    「式ビルダー」ダイアログの「式」セクションに、XPath式が表示されます。図31-8に詳細を示します。

  18. 「OK」をクリックして、「式ビルダー」ダイアログを閉じます。「OK」を再度クリックして、「参加者タイプの追加」ダイアログを閉じます。
  19. 「ファイル」メニューから「すべて保存」を選択します。

31.6 ヒューマン・タスクとBPELプロセス・サービス・コンポーネントの関連付け

ヒューマン・タスクを「BPELプロセスを使用したアプリケーションおよびプロジェクトの作成」で作成したBPELプロセスに関連付けます。

ヒューマン・タスクとBPELプロセス・サービス・コンポーネントを関連付ける手順は、次のとおりです。

  1. 「アプリケーション」ウィンドウで、「composite.xml」をダブルクリックします。
  2. で、「VacationRequestProcess」BPELプロセス・サービス・コンポーネントをダブルクリックします。

    BPELプロセスがOracle BPELデザイナに表示されます。

  3. 「コンポーネント」ウィンドウで、「SOAコンポーネント」を開きます。
  4. 「receiveInput」receiveアクティビティの下に、「ヒューマン・タスク」をドラッグ・アンド・ドロップします。アクティビティをダブルクリックします。

    「Human Task」ダイアログが表示されます。

  5. 「タスク定義」リストから、作成した「VacationRequestTask」タスクを選択します(現在表示されていない場合)。

    ダイアログが図31-9に示すようにリフレッシュされ、他のフィールドが表示されます。

    図31-9 「Human Task」ダイアログ

    図31-9の説明が続きます
    「図31-9 「Human Task」ダイアログ」の説明
  6. 図31-10に示すように、「BPEL変数」列で「参照」アイコン(...)をクリックします。

    図31-10 BPEL変数のエントリ

    図31-10の説明が続きます
    「図31-10 BPEL変数のエントリ」の説明

    「タスク・パラメータ」ダイアログが表示されます。

  7. 「タイプ」リストで「変数」を選択します。
  8. 「プロセス」「変数」「inputVariable」「payload」「ns1:VacationRequestProcessRequest」の順に展開します。図31-11に詳細を示します。

    「OK」をクリックします。

  9. 「OK」をクリックして「ヒューマン・タスク」ダイアログを閉じます。

    図31-12に示すように、ヒューマン・タスク・アクティビティが表示されます。

    図31-12 Oracle BPELデザイナのヒューマン・タスクおよびパートナ・リンク

    図31-12の説明が続きます
    「図31-12 Oracle BPELデザイナのヒューマン・タスクおよびパートナ・リンク」の説明
  10. SOAコンポジット・エディタに戻ります。BPELプロセス・サービス・コンポーネントとヒューマン・タスク・サービス・コンポーネントが自動的に接続されていることに注意してください。図31-13に詳細を示します。「ファイル」メニューから「すべて保存」を選択します。

    図31-13 SOAコンポジット・エディタ

    図31-13の説明が続きます
    「図31-13 SOAコンポジット・エディタ」の説明

31.7 タスク・フォームのプロジェクトの作成

タスク・フォームのプロジェクトを作成します。これは、ヒューマン・タスクを作成したプロジェクトとは別のプロジェクトです。

タスク・フォームのプロジェクトを作成する手順は、次のとおりです。

  1. 「VacationRequestTask」ヒューマン・タスクをダブルクリックします。

    ヒューマン・タスク・エディタが表示されます。

  2. 上部の「フォーム」メニューから、「タスク・フォームの自動生成」を選択します。図31-14に詳細を示します。

    図31-14 タスク・フォームの作成

    図31-14の説明が続きます
    「図31-14 タスク・フォームの作成」の説明

    「プロジェクトの作成」ダイアログが表示されます。

  3. 「プロジェクト名」フィールドに、VacationRequestTaskFlowと入力し、「OK」をクリックします。
  4. 「ファイル」メイン・メニューから、「すべて保存」を選択します。

31.8 タスク・フォームのデプロイ

タスク・フォームをデプロイする手順は、次のとおりです。

  1. 「アプリケーション」ウィンドウで、「VacationRequestTaskFlow」プロジェクトを右クリックして「デプロイ」「VacationRequestTaskFlow」の順に選択します。
  2. デプロイメント・ウィザードの各ページの指示に従い、タスク・フォームをデプロイします。

    タスク・フォームがデプロイされます。

    デプロイメントの詳細は、「Oracle JDeveloperでのSOAコンポジット・アプリケーションのデプロイ」を参照してください。

  3. Oracle BPM Worklistに戻ります。
  4. Oracle BPM Worklistの下部に、タスク・フォームが表示されることに注意してください。

31.9 アプリケーション・サーバー接続の作成

Oracle SOA Suiteがインストールされ、SOAインフラストラクチャで構成されたアプリケーション・サーバーへの接続を作成します。ここでは、Oracle WebLogic Serverへの接続を作成する方法について説明します。IBM WebSphere Serverなど別のアプリケーション・サーバーへの接続の作成方法の詳細は、を参照してください。

アプリケーション・サーバー接続を作成する手順は、次のとおりです。

  1. 「ファイル」メイン・メニューから、「新規」「接続」「アプリケーション・サーバー接続」を選択します。

    「OK」をクリックします。

  2. 「接続名」フィールドに、接続名を入力します。
  3. 「接続タイプ」リストで「WebLogic 10.3」を選択します。

    「次へ」をクリックします。

  4. 「ユーザー名」フィールドに、weblogicと入力します。
  5. 「パスワード」フィールドに、アプリケーション・サーバーに接続するためのパスワードを入力します。

    「次へ」をクリックします。

  6. SOAインフラストラクチャで構成されているアプリケーション・サーバーのホスト名を入力します。
  7. 「WebLogicドメイン」フィールドに、Oracle WebLogic Serverドメインを入力します。

    「次へ」をクリックします。

  8. 「接続のテスト」をクリックします。

    成功した場合は、図31-15に示すメッセージが表示されます。

  9. 「終了」をクリックします。
  10. 「ファイル」メニューから「すべて保存」を選択します。

31.10 SOAコンポジット・アプリケーションのデプロイ

接続を作成したアプリケーション・サーバーにデプロイします。

SOAコンポジット・アプリケーションをデプロイする手順は、次のとおりです。

  1. 「アプリケーション」ウィンドウで、「VacationRequest」プロジェクトを右クリックして「デプロイ」「VacationRequest」の順に選択します。
  2. デプロイメント・ウィザードの各ページの指示に従い、プロジェクトをデプロイします。

    プロジェクトがデプロイされます。

    デプロイメントの詳細は、「Oracle JDeveloperでのSOAコンポジット・アプリケーションのデプロイ」を参照してください。

31.11 プロセス・インスタンスの開始

プロセス・インスタンスを開始するために「Webサービスのテスト」ページにアクセスする方法の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』を参照してください。

31.12 Oracle BPM Worklistでのタスクの操作

Oracle BPM Worklistでタスクを解決する手順は、次のとおりです。

  1. Oracle BPM Worklistに移動します。
    http://hostname:7001/integration/worklistapp
    
  2. Oracle BPM Worklistにログインします。
  3. タスクを解決します。

31.13 その他のチュートリアル

休暇申請のユースケースに加えて、他のチュートリアルも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