28 ヒューマン・タスクの作成

ヒューマン・タスクの作成方法、保存方法、およびヒューマン・タスクをBPELプロセスに関連付ける方法を学習します。また、ヒューマン・タスクの削除方法と、ヒューマン・タスクとBPELプロセスの関連付けを削除する方法についても説明します。

ヒューマン・タスクの概念の詳細は、「ヒューマン・ワークフローのスタート・ガイド」を参照してください。

ヒューマン・ワークフロー問題のトラブルシューティングの詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』ヒューマン・ワークフローのトラブルシューティングに関する項を参照してください。

デモ・ユーザー・コミュニティと呼ばれるユーザーおよびグループの組織階層のインストールおよび使用方法の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』の付録「データベースでのデモ・ユーザー・コミュニティのインストール」を参照してください。

28.1 ヒューマン・タスクの概要

Oracle SOA Suiteには、タスク・メタデータをモデリングするための、ヒューマン・タスク・エディタと呼ばれるグラフィカル・ツールが用意されています。

モデリング・プロセスは、次のタスクで構成されています。

  • SOAコンポジット・エディタでのヒューマン・タスク・サービス・コンポーネントの作成とモデリング

  • BPELプロセスとの関連付け

  • 実行時にOracle BPM Worklistにヒューマン・タスクを表示するためのタスク・フォームの生成。

ヒューマン・タスク・エディタを使用するには、次の内容も含めてヒューマン・タスクの設計概念を理解する必要があります。

  • タスクを割り当てるユーザーのタイプ

  • ユーザーをタスクに割り当てる方法(静的、動的またはルールベース)

  • ユーザーを割り当てるタスクのモデリングに使用可能なタスクの参加者タイプ

  • タスク参加者のリストを作成するためのオプション

  • タスクのライフ・サイクル全体に関与する参加者

この項では、これらのモデリング・タスクの概要について説明し、特定のモデリング手順の参照先を示します。

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

使用可能なサンプルの詳細は、「ヒューマン・ワークフローのチュートリアル」を参照してください。

28.1.1 ヒューマン・タスク定義の作成の概要

ヒューマン・タスク・エディタでは、ヒューマン・タスク・メタデータ(タスクの結果、ペイロード構造、割当ておよびルーティング・ポリシー、有効期限およびエスカレーション・ポリシー、通知設定など)を指定できます。この情報は、メタデータ・タスク構成ファイル(拡張子.task)に保存されます。また、ワークフロー・パターンによっては、Oracle Business Rulesデザイナを使用して、タスクのルーティング・ポリシーまたは承認者のリストを定義する必要があります。

ヒューマン・タスクの作成後に、ヒューマン・タスクのメタデータを構成するには、ヒューマン・タスク・エディタを使用します。メタデータの詳細および構成手順は、「ヒューマン・タスクの構成」を参照してください。

ヒューマン・タスクのメタデータは、次の2つのいずれかの方法で定義します。

  • ヒューマン・タスクを「コンポーネント」ウィンドウからOracle BPELデザイナのBPELプロセスにドラッグし、自動的に表示される「ヒューマン・タスクの作成」ダイアログで「追加」アイコンをクリックする方法。この操作で、ヒューマン・タスク・サービス・コンポーネントを作成するためのダイアログが表示されます。作成を完了すると、ヒューマン・タスク・エディタが表示されます。

  • ヒューマン・タスク・サービス・コンポーネントを「コンポーネント」ウィンドウからSOAコンポジット・エディタにドラッグする方法。この操作で、ヒューマン・タスク・コンポーネントを作成するためのダイアログが表示されます。作成を完了すると、ヒューマン・タスク・エディタが表示されます。

詳細は、「ヒューマン・タスクの作成」を参照してください。

28.1.2 ヒューマン・タスク定義とBPELプロセスの関連付けの概要

ヒューマン・タスク設定を構成する.taskファイルは、Oracle BPELデザイナで、BPELプロセスに関連付けることができます。図28-1に示すように、構成のためにBPELプロセス・フローにドラッグしたヒューマン・タスクとの関連が作成されます。

図28-1 BPELプロセスへのヒューマン・タスクのドラッグ

図28-1の説明が続きます
「図28-1 BPELプロセスへのヒューマン・タスクのドラッグ」の説明

タスク定義、タスク・イニシエータ、タスク優先度、およびBPEL変数に入力データを渡すタスク・パラメータ・マッピングも指定します。さらに、拡張機能も定義できます。たとえば、スコープとグローバル・タスク変数名(デフォルト名をそのまま使用しない場合)、タスク所有者、識別キー、BPELコールバックのカスタマイズ、およびヒューマン・タスクを拡張して他のワークフロー・タスクを追加するかどうかなどです。

関連付けが完了すると、タスク・サービス・パートナ・リンクが作成されます。タスク・サービスでは、タスクの操作に必要な操作が公開されます。

SOAコンポジット・エディタでは、BPELプロセスに関連付けないスタンドアロン・コンポーネントとしてのヒューマン・タスクを作成することもできます。スタンドアロン・ヒューマン・タスク・サービス・コンポーネントは、アプリケーションで自動化されたアクティビティが必要のない環境で役に立ちます。スタンドアロンの場合、クライアントは独自にタスクを作成できます。

詳細は、「ヒューマン・タスクとBPELプロセスの関連付け」を参照してください。

28.1.3 タスク・フォームの生成の概要

タスク・フォームは、Oracle Application Development Framework (ADF)を使用して生成できます。このフォームは、実行時にOracle BPM Worklistで操作するタスクの詳細を表示するために使用されます。

タスク・フォームの生成の詳細は、「ヒューマン・タスク用のタスク・フォームの設計」を参照してください。

28.2 ヒューマン・タスクの作成

ヒューマン・タスク・エディタを使用すると、タスクのメタデータを定義できます。エディタでは、ヒューマン・タスク設定(タスクの結果、ペイロード構造、割当ておよびルーティング・ポリシー、有効期限およびエスカレーション・ポリシー、通知設定など)を指定できます。

ヒューマン・タスク・サービス・コンポーネントは、SOAコンポジット・エディタまたはOracle BPELデザイナで作成します。作成後に、ヒューマン・タスク・エディタでコンポーネントを設計します。ヒューマン・タスク・サービス・コンポーネントを作成する方法によって、後でそのコンポーネントをBPELプロセス・サービス・コンポーネントに関連付けるのか、SOAコンポジット・エディタでスタンドアロン・コンポーネントとして存在するのかが決まります。

28.2.1 SOAコンポジット・エディタを使用してヒューマン・タスクを作成する方法

SOAコンポジット・エディタを使用して、ヒューマン・タスクを作成できます。この方法は、ヒューマン・タスクを作成し、後でBPELプロセッサに関連付けるか、スタンドアロン・コンポーネントとして使用する場合に使用できます。

SOAコンポジット・エディタでヒューマン・タスク・サービス・コンポーネントを作成するには:

  1. SOAコンポジット・エディタでヒューマン・タスク・サービス・コンポーネントを作成するSOAプロジェクトに進みます。

  2. 「コンポーネント」ウィンドウのリストから、「SOA」を選択します。

    リストがリフレッシュされ、サービス・コンポーネントおよびサービス・アダプタが表示されます。

  3. リストからデザイナに「Human Task」をドラッグします。

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

  4. 「名前」フィールドに、名前を入力します。

    入力した名前は、.taskファイル名になります。

  5. 「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスに注目します。このチェック・ボックスの選択によって、ヒューマン・タスク・サービス・コンポーネントの作成方法が決まります。

    1. 後でBPELプロセス・サービス・コンポーネントに関連付けるヒューマン・タスク・サービスを作成する場合は、「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスを選択しないでください。ヒューマン・タスク・サービス・コンポーネントは、BPELプロセス・サービス・コンポーネントに明示的に関連付けられるコンポーネントとして作成されます。図28-2に詳細を示します。

      図28-2 ヒューマン・タスク・コンポーネント

      図28-2の説明が続きます
      「図28-2 ヒューマン・タスク・コンポーネント」の説明
    2. ヒューマン・タスク・サービス・コンポーネントをSOAコンポジット・エディタでスタンドアロン・コンポーネントとして作成するには、「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスを選択します。これにより、Simple Object Access Protocol (SOAP) Webサービスと自動的に接続されるヒューマン・タスク・サービス・コンポーネントが作成されます。図28-3に詳細を示します。

      図28-3 スタンドアロン・ヒューマン・タスク・コンポーネント

      図28-3の説明が続きます
      「図28-3 スタンドアロン・ヒューマン・タスク・コンポーネント」の説明

      このWebサービスは、外部の顧客に、SOAコンポジット・アプリケーションのヒューマン・タスク・サービス・コンポーネントへのエントリ・ポイントを提供します。

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

SOAコンポジット・エディタにおけるヒューマン・タスク・サービス・コンポーネントの作成方法の詳細は、「SOAコンポジット・アプリケーションの開発のスタート・ガイド」を参照してください。

28.2.2 Oracle BPELデザイナを使用してヒューマン・タスクを作成する方法

Oracle BPELデザイナを使用して、ヒューマン・タスクを作成できます。通常、この方法は、BPELプロセスで使用するヒューマン・タスクを作成する場合に使用します。

Oracle BPELデザイナでヒューマン・タスクを作成するには:

  1. 「コンポーネント」ウィンドウで、「SOAコンポーネント」を開きます。
  2. リストからデザイナに「Human Task」をドラッグします。

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

  3. 「追加」アイコンをクリックして、ヒューマン・タスクを作成します。
  4. 「名前」フィールドに、名前を入力します。

    入力した名前は、.taskファイル名になります。

  5. 「タイトル」フィールドにタスクを入力します。
  6. 「OK」をクリックします。

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

ノート:

後でBPELプロセスに関連付けるヒューマン・タスクも作成できますが、その場合は、「ファイル」メイン・メニューから「新規」を選択し、次に「SOA層」「サービス・コンポーネント」「ヒューマン・タスク」の順に選択してください。

28.2.3 ヒューマン・タスク作成時の処理内容

ヒューマン・タスクが作成されると、次のフォルダとファイルが表示されます。

  • ヒューマン・タスク・エディタで指定したヒューマン・タスク設定が、メタデータ・サービス(MDS)リポジトリのメタデータ・タスク構成ファイル(拡張子.task)に保存されます。このファイルは、「SOA_Project_Name」「SOA」の下にある「アプリケーション」ウィンドウに表示されます。次をダブルクリックすると、このファイル内の設定を再編集できます。

    • SOAコンポジット・エディタまたはOracle BPELデザイナの「アプリケーション」ウィンドウにある.taskファイル

    • SOAコンポジット・エディタ、またはOracle BPELデザイナのBPELプロセスにある「ヒューマン・タスク」アイコン

    これにより、.taskファイルがヒューマン・タスク・エディタで再び開きます。

  • 作成したヒューマン・タスクを含むヒューマン・タスク・フォルダは、SOAコンポジット・エディタの「構造」ウィンドウに表示されます。

図28-4に、これらのフォルダとファイルを示します。

図28-4 ヒューマン・タスクのフォルダとファイル

図28-4の説明が続きます
「図28-4 ヒューマン・タスクのフォルダとファイル」の説明

使用可能なサンプルの詳細は、「ヒューマン・ワークフローのチュートリアル」を参照してください。

28.3 ヒューマン・タスクの構成

ヒューマン・タスクの作成後、ヒューマン・タスク・エディタを使用して設定を変更します。

ヒューマン・タスクの構成方法の詳細は、「ヒューマン・タスクの構成」を参照してください。

28.4 ヒューマン・タスク・エディタの終了と変更の保存

ヒューマン・タスクの変更は、いつでも保存できます。「アプリケーション」ウィンドウでメタデータ・タスク構成ファイル(.task)をダブルクリックすると、後からタスクを再編集できます。

ヒューマン・タスク・エディタを終了し、変更内容を保存するには:

  1. 「ファイル」メイン・メニューから「保存」を選択するか、「X」記号(図28-5を参照)をクリックして、.taskメタデータ・タスク構成ファイルを閉じます。

    図28-5 ファイルのクローズ

    図28-5の説明が続きます
    「図28-5 ファイルのクローズ」の説明
  2. 「X」記号をクリックして、変更内容の保存を求めるプロンプトが表示された場合は「はい」を選択します。

28.5 ヒューマン・タスクとBPELプロセスの関連付け

SOAコンポジット・エディタで作成したヒューマン・タスク・サービス・コンポーネントをBPELプロセスに関連付けるには、次の指示に従います。関連付けが完了すると、Oracle BPELデザイナにタスク・サービス・パートナ・リンクが作成されます。タスク・サービスでは、タスクの実行に必要な操作が公開されます。

28.5.1 ヒューマン・タスクをBPELプロセスに関連付ける方法

ヒューマン・タスク・サービス・コンポーネントをBPELプロセスに関連付ける方法は2種類あります。

  • SOAコンポジット・アプリケーションでヒューマン・タスク・サービス・コンポーネントを作成した場合は、Oracle BPELデザイナでヒューマン・タスク・アクティビティをBPELプロセスにドラッグします。次に、「ヒューマン・タスクの作成」ダイアログの「タスク定義」リストから既存のヒューマン・タスク・サービス・コンポーネントを選択します。次に、タスクのタイトル、イニシエータ、パラメータ値およびその他の値を指定します。

  • ヒューマン・タスク・サービス・コンポーネントを作成していない場合は、Oracle BPELデザイナのBPELプロセスにヒューマン・タスク・アクティビティをドラッグします。次に、「ヒューマン・タスクの作成」ダイアログの「タスク定義」リストの右側にある「追加」アイコンをクリックします。これで、新しいヒューマン・タスク・サービス・コンポーネントの名前、パラメータおよび結果を指定できます。次に、残りのタスク・メタデータを設計するためのヒューマン・タスク・エディタが開きます。設計完了後、ヒューマン・タスク・エディタを閉じます。

ヒューマン・タスクをBPELプロセスに関連付けるには:

  1. SOAコンポジット・エディタに移動します。
  2. ヒューマン・タスク・サービス・コンポーネントの.taskファイルを関連付ける先のBPELプロセス・サービス・コンポーネントをダブルクリックします。
  3. 「コンポーネント」ウィンドウで、「SOAコンポーネント」を開きます。
  4. 新規のHuman TaskアクティビティをBPELプロセスにドラッグ・アンド・ドロップします。
  5. ヒューマン・タスク・アクティビティをダブルクリックします。

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

  6. 「一般」タブの「タスク定義」リストから、ヒューマン・タスクを選択します(図28-6を参照)。

    図28-6 「タスク定義」リストの選択

    図28-6の説明が続きます
    「図28-6 「タスク定義」リストの選択」の説明

    ヒューマン・タスク・サービス・コンポーネントの.taskファイルがBPELプロセスに関連付けられます。

    ノート:

    ヒューマン・タスク・アクティビティをBPELプロセスに関連付けて「ヒューマン・タスクの作成」ダイアログを閉じた後は、そのヒューマン・タスク・アクティビティをOracle BPELデザイナでダブルクリックして、このダイアログにいつでも再アクセスできます。

28.5.2 ヒューマン・タスクとBPELプロセス間のワイヤの削除に関する必知事項

BPELプロセスとそのプロセスが起動するヒューマン・タスク・サービス・コンポーネント間のワイヤを削除すると、ヒューマン・ワークフローのinvokeアクティビティがBPELプロセスから削除されます。ただし、アクションを実行する(承認、却下、その他のタスクの結果を含む)「taskSwitch」switchアクティビティはそのまま残ります。このように設計されている理由は、次のとおりです。

  • switchアクティビティには、ユーザーが入力したBPELコードが格納されています。

  • このswitchは、ワイヤの削除が単に別のヒューマン・タスクを指すことを意図している場合は再利用できます。

  • switchの削除はシングルステップのアクションです。

次に、同じ「taskSwitch」switchアクティビティを使用するためにヒューマン・タスク・サービス・コンポーネントをBPELプロセスにドラッグ・アンド・ドロップすると、新しい「taskSwitch」switchアクティビティが作成されます。BPELプロセスに同じ名前の2つのswitchアクティビティが存在する状態になります。どちらを削除するかを判断するには、「taskSwitch」switchアクティビティの承認、却下および他の結果を調査し、修正した古いswitchと新しいswitchを判断する必要があります。

28.5.3 ヒューマン・タスク・アクティビティのタイトル、イニシエータ、優先度およびパラメータ変数の定義方法

図28-7に、ヒューマン・タスクを選択した後に表示される「一般」タブを示します。

図28-7 「Human Task」 — 「一般」タブ(選択後)

図28-7の説明が続きます
「図28-7 「Human Task」 — 「一般」タブ(選択後)」の説明

「Human Task」アクティビティ・ダイアログの「一般」タブでは、表28-1に示す操作を実行できます。

表28-1 「Human Task」 - 「一般」タブ

フィールド 参照...

タスクのタイトル

タスクのタイトルの指定

イニシエータ

優先度

タスク・イニシエータとタスク優先度の指定

タスク・パラメータ

タスク・パラメータの指定

28.5.3.1 タスクのタイトルの指定

タスクのタイトルは、実行時にOracle BPM Worklistに表示されます。これは必須フィールドです。「タスクのタイトルの指定方法」の説明に従ってヒューマン・タスク・エディタの「一般」セクションの「タスクのタイトル」フィールドに入力したタスクのタイトルは、このフィールドに入力したタイトルによってオーバーライドされます。

「一般」タブの「タスクのタイトル」フィールドに、タイトルを手動で入力してタスクのタイトルを入力します。または、フィールドの右側にあるアイコンをクリックして「式ビルダー」ダイアログを表示し、タイトルを動的に作成します。

同じタイトルに静的なテキストと動的な式を併用することもできます。動的なテキストを使用するには、テキストの適切な位置にカーソルを置き、右側にあるアイコンをクリックして「式ビルダー」ダイアログを起動します。

28.5.3.2 タスクの起案者と優先度の指定

タスク・イニシエータを指定できます。イニシエータとは、タスクを開始するユーザーです。イニシエータは、作成したタスクをOracle BPM Worklistで参照したり、特定のタスク(タスクの取下げや一時停止など)を実行することができます。

タスク・イニシエータとタスク優先度を指定するには:

  1. 「一般」タブの「イニシエータ」フィールドに、イニシエータ(たとえばjcooper)を入力するか、右側にあるアイコンをクリックして「式ビルダー」ダイアログを表示し、イニシエータを動的に指定します。このフィールドはオプションです。イニシエータが指定されていない場合は、「Human Task」ダイアログの「詳細」タブで指定したタスク所有者にデフォルト設定されます。タスク所有者も指定されていない場合、イニシエータはbpeladminにデフォルト設定されます。
  2. 「優先度」リストで1 (最高値)から5の優先度値を選択します。これはユーザーが参照するためのフィールドで、このタスクの優先度が実行時に高くなることはありません。優先度を使用して、Oracle BPM Worklistでタスクをソートします。ヒューマン・タスク・エディタの「一般」セクションの「優先度」リストで選択した優先度値は、この優先度値によってオーバーライドされます。

ヒューマン・タスク・エディタの優先度の指定の詳細は、「タスクのタイトルの指定方法」を参照してください。

28.5.3.3 タスク・パラメータの指定

「タスクのタイトル」および「イニシエータ」フィールドを完了すると、タスク・パラメータ表(図28-8を参照)にタスク・パラメータのリストが表示されます。

図28-8 タスク・パラメータ表

図28-8の説明が続きます
「図28-8 タスク・パラメータ表」の説明

タスク・パラメータを指定するには:

  1. 「BPEL変数」列で、「...」をダブルクリックして、タスク・パラメータをBPEL変数にマップします。選択するためにこの「...」を表示するには、データ・パラメータがすでに指定されている必要があります。データ・パラメータの指定方法の詳細は、「タスク・ペイロード・データ構造の指定方法」を参照してください。マップする必要があるのは、入力データを使用するタスク・パラメータのみです。Oracle BPM Worklistから入力された出力データの場合、対応する変数のマップは不要です。

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

  2. 「変数」ツリー(図28-9を参照)を開き、適切なタスク変数を選択します。

    図28-9 「変数」ツリー

    図28-9の説明が続きます
    「図28-9 「変数」ツリー」の説明
  3. 「OK」をクリックします。

    図28-10に示す「Human Task」ダイアログが次のように表示されます。

    図28-10 「Human Task」ダイアログ

    図28-10の説明が続きます
    「図28-10 「Human Task」ダイアログ」の説明
  4. ヒューマン・タスク・アクティビティの拡張機能を定義するには、「詳細」タブをクリックして「ヒューマン・タスク・アクティビティの拡張機能の定義方法」に進みます。それ以外の場合は、「OK」をクリックしてヒューマン・タスク・ダイアログを閉じます。

28.5.4 ヒューマン・タスク・アクティビティの拡張機能の定義方法

図28-11に、「詳細」タブを示します。

図28-11 ヒューマン・タスクの作成 — 「詳細」タブ

図28-11の説明が続きます
「図28-11 ヒューマン・タスクの作成 — 「詳細」タブ」の説明

「Human Task」アクティビティ・ダイアログの「詳細」タブでは、表28-2に示す操作を実行できます。

表28-2 「Human Task」 - 「詳細」タブ

フィールド 参照...

スコープ名

グローバル・タスク変数名

スコープ名とグローバル・タスク変数名の指定

所有者

タスク所有者の指定

識別キー

識別キーの指定

アイデンティティ・コンテキスト

アイデンティティ・コンテキストの指定

アプリケーション・コンテキスト

アプリケーション・コンテキストの指定

タスク履歴の追加元

他のヒューマン・タスクのタスク履歴の追加

28.5.4.1 スコープ名とグローバル・タスク変数名の指定

デフォルトのスコープ名とグローバル・タスク変数名は、ヒューマン・タスク・アクティビティの作成時に自動的に入力されます。ただし、ヒューマン・タスク・アクティビティの作成時にスコープとグローバル変数に名前を指定するためのカスタム名は指定できます。

スコープ名およびグローバル・タスク変数名を指定するには:

  1. 「詳細」タブの「スコープ名」フィールドに、生成するBPELスコープの名前を入力します。

    このBPELスコープにより、ワークフロー・サービスとBPEL変数の操作を使用する相互作用全体がカプセル化されます。

  2. 「詳細」タブの「グローバル・タスク変数名」フィールドに、グローバル・タスク変数名を入力します。

    これは、ワークフローの相互作用に使用されるBPELタスク変数の名前です。

28.5.4.2 タスク所有者の指定

タスク所有者は、所有するビジネス・プロセスに属するタスクを参照し、タスク割当て先のユーザーにかわって操作を実行できます。また、所有者は、タスクの再割当て、取消しまたはエスカレートも実行できます。

「Human Task」ダイアログの「一般」タブでタスク・イニシエータを指定しない場合は、ここで指定した所有者にデフォルト設定されます。「詳細」タブの「所有者」フィールドに、タスク所有者名を入力するか、右側にあるアイコンをクリックし、「式ビルダー」を使用してこのタスクの所有者を動的に指定します。

28.5.4.3 識別キーの指定

識別キーは、タスクのユーザー定義IDとして使用できます。たとえば、注文書の承認に関するタスクの場合は、タスクの識別キーとして注文書IDを設定できます。タスクは、識別キーを使用してOracle BPM Worklistで検索できます。この属性にデフォルト値はありません。

キーを指定するには、「詳細」タブの「識別キー」フィールドに、識別キーの値を入力します(オプション)。

28.5.4.4 アイデンティティ・コンテキストの指定

複数のレルムが構成されている場合は、タスクに対してアイデンティティ・レルム名が使用されます。同じタスクを実行している複数のレルムから割当て先を指定することはできません。複数のレルムを使用している場合、このフィールドは必須です。アイデンティティ・コンテキストを指定するには、「詳細」タブの「アイデンティティ・コンテキスト」フィールドに値を入力します

28.5.4.5 アプリケーション・コンテキストの指定

アプリケーションのストライプ名には、タスクで使用されるアプリケーション・ロールが含まれます。アプリケーション・コンテキストを指定するには、「詳細」タブの「アプリケーション・コンテキスト」フィールドに値を入力します。

28.5.4.6 他のヒューマン・タスクのタスク履歴の追加

この機能を使用すると、あるヒューマン・タスクを別のヒューマン・タスクで継続できるようになります。単一のBPELプロセス内に複数の関連タスクを持つシナリオは多数あります。たとえば、次のようなヒューマン・タスクがあると想定します。

  • コンピュータに対するマネージャの承認を取得するための調達プロセス

  • 間にある複数のBPELアクティビティ

  • IT部門がコンピュータを購入するための別のタスク

2番目のタスクの参加者が、マネージャが購入を承認したときに作成された承認履歴、コメントおよび添付を表示する必要があるとします。このオプションを使用して2番目のタスクを最初のタスクに連鎖すると、BPELプロセスでこれらの異なるタスクをリンクできます。

連鎖したタスクの場合は、新しいタスクのタイトルをタスク・メタデータ(.taskファイル)から設定することはできません。たとえば、既存のタスクAが新しいタスクBに連鎖し、タスクBにヒューマン・タスク・エディタで新しいタイトルが設定されている場合、このタイトルは認識されません。したがって、連鎖したタスクに異なるタイトルが必要な場合、そのタイトルは、タスク・サービスreinitiate操作をコールする前に、タスク・インスタンスに設定する必要があります。BPELプロセスがタスクを開始する場合は、ワークフロー・サービスAPIがコールされる前にタスクのタイトルを設定します。JavaプログラムがワークフローAPIをプログラムでコールしている場合は、タイトルを設定する必要があります。

タスクの履歴を他のタスクに追加するには:

  1. 「詳細」タブの「タスク履歴の追加元」チェック・ボックスを選択して、BPELプロセス内の前のワークフロー・タスクを拡張します。このチェック・ボックスを選択すると、前のタスクからタスク履歴、コメントおよび添付が追加されます。これにより、完全なエンドツーエンドの監査証跡が得られます。

    ヒューマン・タスクを別のヒューマン・タスクで続行する場合は、次の情報が新規ワークフローに引き継がれます。

    • タスク・ペイロードと、前のワークフローでペイロードに追加された変更内容

    • タスク履歴

    • 前のワークフローでタスクに追加されたコメント

    • 前のワークフローでタスクに追加された添付

    • 期日

    「タスク履歴の追加元」リストに、既存のワークフローがすべて表示されます。

  2. 特定のヒューマン・タスクを選択し、選択したヒューマン・タスクを拡張し(続け)ます。

    たとえば、雇用プロセスを使用して、新規従業員を採用します。各面接担当者は、候補者を雇用するかどうか投票します。投票者の75%が雇用に賛成の場合、候補者は採用されます。このパーセントに満たない場合、候補者は採用されません。候補者が採用されると、HRデータベースにエントリが作成され、人事担当者は雇用プロセスを完了します。人事担当者は、各面接担当者と、候補者に関するコメントを確認する必要があります。このプロセスは、雇用にパラレル参加者タイプを使用することでモデリングできます。候補者が採用された場合は、データベース・アダプタを使用してHRデータベースにエントリが作成されます。その後は、単純ワークフローにパラレル参加者タイプのタスク履歴を追加して、応募申込み書、履歴書および面接担当者のコメントを引き継ぐことができます。この単純ワークフローは、人事担当者に割り当てられます。

  3. 使用するペイロードを次の中から選択します。
    • 古いペイロードのクリアと再作成

      このオプションは、この拡張されたワークフローに含まれるヒューマン・タスクのXMLファイル内のペイロード属性が異なる場合に適用できます。たとえば、履歴を含めるヒューマン・タスクのペイロード属性に、他のヒューマン・タスクのペイロードにはない属性が3個ある場合などです。

    • 既存のペイロードの使用

      このオプションは、この拡張されたワークフローに含まれるヒューマン・タスクのXMLファイル内のペイロード属性が同じ場合に適用できます。

28.5.5 生成されたヒューマン・タスク・アクティビティの表示方法

ヒューマン・タスク・アクティビティのモデリングを完了すると、デザイナでヒューマン・タスクが生成されます。

図28-12に、ワークフロー相互作用のモデリング方法を示します。図28-12は、BPELコールバックがモデリングされていない場合の相互作用も示しています。この場合、タスクが完了した後、完了したタスクを使用してBPELプロセスがコールバックされます。中間のイベントはBPELプロセス・インスタンスに伝播されません。ユーザー・カスタマイズは、最初のassignであるAssignTaskAttributesで実行し、AssignSystemTaskAttributesを変更しないことをお薦めします。

図28-12 ワークフロー相互作用のモデリング

図28-12の説明が続きます
「図28-12 ワークフロー相互作用のモデリング」の説明

図28-13に示すように、Oracle BPELデザイナのヒューマン・タスク・アクティビティの横にある「拡張」アイコンをクリックして、その内容を表示します。

図28-13 ヒューマン・タスク・アクティビティの拡張

図28-13の説明が続きます
「図28-13 ヒューマン・タスク・アクティビティの拡張」の説明
28.5.5.1 BPELコールバックの起動

中間のイベントをBPELプロセス・インスタンスに伝播する必要がある場合は、ヒューマン・タスク・エディタの「イベント」セクションにある「BPELコールバックのタスクとルーティング・カスタマイズを許可」チェック・ボックスを選択します。このオプションが選択されている場合、ワークフロー・サービスはタスクの更新ごとにBPELインスタンス内でコールバックを起動します。次に説明するコールバックがTaskService.wsdlファイルにリストされます。

  • onTaskCompleted

    このコールバックは、タスクの完了、期限切れ、取消しまたはエラー時に起動されます。

  • onTaskAssigned

    このコールバックは、次のアクションが原因でタスクが一連の新規の割当て先に割り当てられるときに起動されます。

    • 結果の更新

    • 現在の割当てのスキップ

    • ルーティング・スリップのオーバーライド

  • onTaskUpdated

    このコールバックは、onTaskCompleteまたはonTaskAssignedコールバックに該当しないタスクに対する他の更新の際に起動されます。これには、情報のリクエスト、情報の発行、エスカレーション、再割当てなどによるタスクの更新が含まれます。

  • onSubTaskUpdated

    このコールバックは、サブタスクに対する更新の際に起動されます。

図28-14に、コールバックを使用したワークフロー相互作用のモデリング方法を示します。このタスクが開始されると、タスクが完了するまでwhileループを使用してメッセージが受信されます。whileループには、4つのonMessageブランチ(前述したコールバック操作ごとに1つずつ)を備えたpickアクティビティが含まれています。ワークフロー相互作用は、onMessageブランチに何も変化がなくても正常に機能します。つまり、onMessageブランチでのカスタマイズは不要です。

このシナリオでは、ワークフロー・コンテキストはBPELインスタンスで取得されます。このコンテキストは、ワークフロー・サービスとのすべての相互作用に使用できます。たとえば、グループに割り当てられているタスクを再度割り当てる場合、タスク・サービスには、reassignTask操作のワークフロー・コンテキストが必要です。

ユーザー・カスタマイズは、最初のassignであるAssignTaskAttributesで実行し、AssignSystemTaskAttributesを変更しないことをお薦めします。

図28-14 ワークフロー相互作用のモデリング(コールバックを使用)

図28-14の説明が続きます
「図28-14 ワークフロー相互作用のモデリング(コールバックを使用)」の説明

28.5.6 生成されたヒューマン・タスク・アクティビティの変更に関する必知事項

生成されたヒューマン・タスク・アクティビティを変更する必要がある場合は、次の詳細に注意してください。

  • ヒューマン・タスクをBPELプロセス・フローに追加するときに、switchアクティビティで自動的に作成されたassignタスクを変更しないでください。かわりに、switchアクティビティの外側に新しいassignアクティビティを追加してください。

  • ヒューマン・タスクに渡されるパラメータを変更した場合(たとえば、「タスク・パラメータの編集」ダイアログでパラメータ・タイプを変更した場合)は、BPELプロセス・フローのヒューマン・タスク・アクティビティを開いて「OK」をクリックし、ペイロード変数の参照を修正する必要があります。修正しないと、パラメータ名が変わり、編集不可になります。

    ヒューマン・タスク・エディタでタスクの結果を変更した場合は、ヒューマン・タスク・アクティビティを編集し、「OK」をクリックする必要があります。switch caseは、結果に対する変更に基づいて更新されます。

  • リソース・バンドルのタスクのタイトルまたはカテゴリの翻訳可能文字列になんらかの変更を加えても、すでに開始されたタスクのインスタンスには変更が表示されません。ただし、変更後に開始されたタスクのインスタンスには変更が表示されます。

  • コメントをヒューマン・タスクにコピーするときは、それらのコメントにタスクIDが含まれていないことを確認してください。taskId要素は、空であることが必要です。

28.5.7 ヒューマン・タスクで生成されたパートナ・リンクの削除に関する必知事項

ヒューマン・タスクで生成されたパートナ・リンク(たとえば、「パートナ・リンク」スイムレーンのhuman_task_name.TaskService)を削除すると、ヒューマン・タスクが使用不可になります。パートナ・リンクを削除した場合は、Oracle BPELデザイナでヒューマン・タスク・アクティビティを削除して、再起動する必要があります。

28.5.8 結果ベース・モデリングの定義方法

多くの場合、ビジネス・プロセスのフローは、タスクの結果によって決定されます。ビジネス・ロジックのモデリングを容易にするため、ユーザー・タスクの生成時には、BPELのswitchアクティビティがビルトインのcaseアクティビティとともに生成されます。デフォルトでは、タスクの作成時に選択した結果ごとに1つのcaseブランチが作成されます。また、タスクの取消し、期限切れ、エラー発生の各状態に対応するotherwiseブランチもswitchに生成されます。

28.5.8.1 ペイロード更新の指定

転送されるタスクには、ペイロードが含まれます。ペイロードがビジネス・プロセス変数から設定されている場合は、ペイロードをタスクからソースにコピーして戻すために、copyPayloadFromTaskという名前のassignアクティビティが各caseおよびotherwiseブランチに作成されます。ペイロードが他のXPath式(ora:getNodes(...)など)で表現されている場合は、ペイロードをコピーするためのプロセス変数が存在しないため、このassignは作成されません。ペイロードを変更する必要がない場合は、タスクのscope後にswitch caseで生成されたassignを削除できます。

28.5.8.2 その他のタスクの結果に対応するcase文の使用

デフォルトでは、switchアクティビティには通常の結果のみに対応するcase文が含まれています。その他のタスクの結果は、otherwiseブランチで取得されます。これらの結果は、次のとおりです。

  • タスクが取り消されます。

  • タスクがエラーになります。

  • タスクが期限切れになります。

ビジネス・ロジックをその他の結果にそれぞれ追加する必要がある場合は、case文をこれらの各条件に追加できます。case文は、次のBPELセグメントのように作成できます。その他の結果に対応する各caseアクティビティのXPath条件は、次の例の中で太字で示されています。

<switch name="taskSwitch">
  <case condition="bpws:getVariableData('SequentialWorkflowVar1',
'/task:task/task:state') = 'COMPLETED' and
bpws:getVariableData('SequentialWorkflowVar1', '/task:task/task:conclusion') = 'ACCEPT'">
    <bpelx:annotation>
      <bpelx:pattern>Task outcome is ACCEPT
      </bpelx:pattern>
    </bpelx:annotation>
      ...
  </case>
  <case condition=
"bpws:getVariableData('SequentialWorkflowVar1', '/task:task/task:state') =
 'WITHDRAWN'">
    <bpelx:annotation>
      <bpelx:pattern>Task is withdrawn
      </bpelx:pattern>
    </bpelx:annotation>
     ...
  </case>
  <case condition=
"bpws:getVariableData('SequentialWorkflowVar1', '/task:task/task:state') =
 'EXPIRED'">
    <bpelx:annotation>
      <bpelx:pattern>Task is expired
      </bpelx:pattern>
    </bpelx:annotation>
     ...
  </case>
  <case condition=
"bpws:getVariableData('SequentialWorkflowVar1', '/task:task/task:state') =
 'ERRORED'">
    <bpelx:annotation>
      <bpelx:pattern>Task is errored
      </bpelx:pattern>
    </bpelx:annotation>
     ...
  </case>
  <otherwise>
    <bpelx:annotation>
      <bpelx:pattern>Task is EXPIRED, WITHDRAWN or ERRORED
      </bpelx:pattern>
    </bpelx:annotation>
      ...
  </otherwise>
</switch>

28.5.9 添付のエンコーディングに関する必知事項

テキスト・ファイルをヒューマン・タスクに添付できるようにするには、テキスト添付のコンテンツがエンコードされているかどうかを記述するフラグを設定する必要があります。このフラグはisContentEncodedという名前です。このフラグを設定するには、ヒューマン・タスクを含む任意のヒューマン・ワークフローのサンプルで、BPELコードをカスタマイズします。このカスタマイズを行うには、サンプル内の.bpelファイルで、次のコピー・ルールをBPEL assignアクティビティ・コードに入力します。

<copy>
<from>true()</from>
<to>$initiateTaskInput.payload/task:task/task:attachment/task:isContentEncoded
</to>
</copy>

このコピー・ルールを入力した後は、ファイルを保存してBPELプロセスの設計を続行するか、または設計が終了している場合にはプロセスをデプロイできます。