この章の内容は次のとおりです。
ヒューマン・タスクの概念の詳細は、「ヒューマン・ワークフローのスタート・ガイド」を参照してください。
ヒューマン・ワークフロー問題のトラブルシューティングの詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のヒューマン・ワークフローのトラブルシューティングに関する項を参照してください。
デモ・ユーザー・コミュニティと呼ばれるユーザーおよびグループの組織階層のインストールおよび使用方法の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』の付録「データベースでのデモ・ユーザー・コミュニティのインストール」を参照してください。
Oracle SOA Suiteには、タスク・メタデータをモデリングするための、ヒューマン・タスク・エディタと呼ばれるグラフィカル・ツールが用意されています。モデリング・プロセスは、次のタスクで構成されています。
でのヒューマン・タスク・サービス・コンポーネントの作成とモデリング
BPELプロセスとの関連付け
実行時にOracle BPM Worklistにヒューマン・タスクを表示するためのタスク・フォームの生成。
ヒューマン・タスク・エディタを使用するには、次の内容も含めてヒューマン・タスクの設計概念を理解する必要があります。
タスクを割り当てるユーザーのタイプ
ユーザーをタスクに割り当てる方法(静的、動的またはルールベース)
ユーザーを割り当てるタスクのモデリングに使用可能なタスクの参加者タイプ
タスク参加者のリストを作成するためのオプション
タスクのライフ・サイクル全体に関与する参加者
この項では、これらのモデリング・タスクの概要について説明し、特定のモデリング手順の参照先を示します。
の使用方法の詳細は、「SOAコンポジット・アプリケーションの開発のスタート・ガイド」を参照してください。
使用可能なサンプルの詳細は、「ヒューマン・ワークフローのチュートリアル」を参照してください。
ヒューマン・タスク・エディタでは、ヒューマン・タスク・メタデータ(タスクの結果、ペイロード構造、割当ておよびルーティング・ポリシー、有効期限およびエスカレーション・ポリシー、通知設定など)を指定できます。この情報は、メタデータ・タスク構成ファイル(拡張子.task
)に保存されます。また、ワークフロー・パターンによっては、Oracle Business Rulesデザイナを使用して、タスクのルーティング・ポリシーまたは承認者のリストを定義する必要があります。
ヒューマン・タスクの作成後に、ヒューマン・タスクのメタデータを構成するには、ヒューマン・タスク・エディタを使用します。メタデータの詳細および構成手順は、「ヒューマン・タスクの構成」を参照してください。
ヒューマン・タスクのメタデータは、次の2つのいずれかの方法で定義します。
ヒューマン・タスクを「コンポーネント」ウィンドウからOracle BPELデザイナのBPELプロセスにドラッグし、自動的に表示される「ヒューマン・タスクの作成」ダイアログで「追加」アイコンをクリックする方法。この操作で、ヒューマン・タスク・サービス・コンポーネントを作成するためのダイアログが表示されます。作成を完了すると、ヒューマン・タスク・エディタが表示されます。
ヒューマン・タスク・サービス・コンポーネントを「コンポーネント」ウィンドウからSOAコンポジット・エディタにドラッグする方法。この操作で、ヒューマン・タスク・コンポーネントを作成するためのダイアログが表示されます。作成を完了すると、ヒューマン・タスク・エディタが表示されます。
詳細は、「ヒューマン・タスクの作成」を参照してください。
ヒューマン・タスク設定を構成する.task
ファイルは、Oracle BPELデザイナで、BPELプロセスに関連付けることができます。図28-1に示すように、構成のためにBPELプロセス・フローにドラッグしたヒューマン・タスクとの関連が作成されます。
タスク定義、タスク・イニシエータ、タスク優先度、およびBPEL変数に入力データを渡すタスク・パラメータ・マッピングも指定します。さらに、拡張機能も定義できます。たとえば、スコープとグローバル・タスク変数名(デフォルト名をそのまま使用しない場合)、タスク所有者、識別キー、BPELコールバックのカスタマイズ、およびヒューマン・タスクを拡張して他のワークフロー・タスクを追加するかどうかなどです。
関連付けが完了すると、タスク・サービス・パートナ・リンクが作成されます。タスク・サービスでは、タスクの操作に必要な操作が公開されます。
では、BPELプロセスに関連付けないスタンドアロン・コンポーネントとしてのヒューマン・タスクを作成することもできます。スタンドアロン・ヒューマン・タスク・サービス・コンポーネントは、アプリケーションで自動化されたアクティビティが必要のない環境で役に立ちます。スタンドアロンの場合、クライアントは独自にタスクを作成できます。
詳細は、「ヒューマン・タスクとBPELプロセスの関連付け」を参照してください。
タスク・フォームは、Oracle Application Development Framework (ADF)を使用して生成できます。このフォームは、実行時にOracle BPM Worklistで操作するタスクの詳細を表示するために使用されます。
タスク・フォームの生成の詳細は、「ヒューマン・タスク用のタスク・フォームの設計」を参照してください。
ヒューマン・タスク・エディタを使用すると、タスクのメタデータを定義できます。エディタでは、ヒューマン・タスク設定(タスクの結果、ペイロード構造、割当ておよびルーティング・ポリシー、有効期限およびエスカレーション・ポリシー、通知設定など)を指定できます。
ヒューマン・タスク・サービス・コンポーネントは、またはOracle BPELデザイナで作成します。作成後に、ヒューマン・タスク・エディタでコンポーネントを設計します。ヒューマン・タスク・サービス・コンポーネントを作成する方法によって、後でそのコンポーネントをBPELプロセス・サービス・コンポーネントに関連付けるのか、でスタンドアロン・コンポーネントとして存在するのかが決まります。
SOAコンポジット・エディタを使用して、ヒューマン・タスクを作成できます。この方法は、ヒューマン・タスクを作成し、後でBPELプロセッサに関連付けるか、スタンドアロン・コンポーネントとして使用する場合に使用できます。
SOAコンポジット・エディタでヒューマン・タスク・サービス・コンポーネントを作成する手順は、次のとおりです。
でヒューマン・タスク・サービス・コンポーネントを作成するSOAプロジェクトに進みます。
「コンポーネント」ウィンドウのリストから、「SOA」を選択します。
リストがリフレッシュされ、サービス・コンポーネントおよびサービス・アダプタが表示されます。
リストからデザイナに「Human Task」をドラッグします。
「ヒューマン・タスクの作成」ダイアログが表示されます。
「名前」フィールドに、名前を入力します。
入力した名前は、.task
ファイル名になります。
「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスに注目します。このチェック・ボックスの選択によって、ヒューマン・タスク・サービス・コンポーネントの作成方法が決まります。
後でBPELプロセス・サービス・コンポーネントに関連付けるヒューマン・タスク・サービスを作成する場合は、「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスを選択しないでください。ヒューマン・タスク・サービス・コンポーネントは、BPELプロセス・サービス・コンポーネントに明示的に関連付けられるコンポーネントとして作成されます。図28-2に詳細を示します。
ヒューマン・タスク・サービス・コンポーネントをでスタンドアロン・コンポーネントとして作成するには、「SOAPバインディングを持つコンポジット・サービスの作成」チェック・ボックスを選択します。これにより、Simple Object Access Protocol (SOAP) Webサービスと自動的に接続されるヒューマン・タスク・サービス・コンポーネントが作成されます。図28-3に詳細を示します。
このWebサービスは、外部の顧客に、SOAコンポジット・アプリケーションのヒューマン・タスク・サービス・コンポーネントへのエントリ・ポイントを提供します。
「OK」をクリックします。
におけるヒューマン・タスク・サービス・コンポーネントの作成方法の詳細は、「SOAコンポジット・アプリケーションの開発のスタート・ガイド」を参照してください。
Oracle BPELデザイナを使用して、ヒューマン・タスクを作成できます。通常、この方法は、BPELプロセスで使用するヒューマン・タスクを作成する場合に使用します。
Oracle BPELデザイナでヒューマン・タスクを作成する手順は、次のとおりです。
注意:
後でBPELプロセスに関連付けるヒューマン・タスクも作成できますが、その場合は、「ファイル」メイン・メニューから「新規」を選択し、次に「SOA層」→「サービス・コンポーネント」→「ヒューマン・タスク」の順に選択してください。
ヒューマン・タスクが作成されると、次のフォルダとファイルが表示されます。
ヒューマン・タスク・エディタで指定したヒューマン・タスク設定が、メタデータ・サービス(MDS)リポジトリのメタデータ・タスク構成ファイル(拡張子.task
)に保存されます。このファイルは、「SOA_Project_Name」→「SOA」の下にある「アプリケーション」ウィンドウに表示されます。次をダブルクリックすると、このファイル内の設定を再編集できます。
またはOracle BPELデザイナの「アプリケーション」ウィンドウにある.task
ファイル
、またはOracle BPELデザイナのBPELプロセスにある「ヒューマン・タスク」アイコン。
これにより、.task
ファイルがヒューマン・タスク・エディタで再び開きます。
作成したヒューマン・タスクを含む「ヒューマン・タスク」フォルダは、の「構造」ウィンドウに表示されます。
図28-4に、これらのフォルダとファイルを示します。
使用可能なサンプルの詳細は、「ヒューマン・ワークフローのチュートリアル」を参照してください。
ヒューマン・タスクの作成後、ヒューマン・タスク・エディタを使用して設定を変更します。ヒューマン・タスクの構成方法の詳細は、「ヒューマン・タスクの構成」を参照してください。
ヒューマン・タスクの変更は、いつでも保存できます。「アプリケーション」ウィンドウでメタデータ・タスク構成ファイル(.task
)をダブルクリックすると、後からタスクを再編集できます。
ヒューマン・タスク・エディタを終了し、変更内容を保存する手順は、次のとおりです。
で作成したヒューマン・タスク・サービス・コンポーネントをBPELプロセスに関連付けるには、次の指示に従います。関連付けが完了すると、Oracle BPELデザイナにタスク・サービス・パートナ・リンクが作成されます。タスク・サービスでは、タスクの実行に必要な操作が公開されます。
ヒューマン・タスクの作成方法の詳細は、「ヒューマン・タスクの作成」を参照してください。
ヒューマン・タスク・サービス・コンポーネントをBPELプロセスに関連付ける方法は2種類あります。
SOAコンポジット・アプリケーションでヒューマン・タスク・サービス・コンポーネントを作成した場合は、Oracle BPELデザイナでヒューマン・タスク・アクティビティをBPELプロセスにドラッグします。次に、「ヒューマン・タスクの作成」ダイアログの「タスク定義」リストから既存のヒューマン・タスク・サービス・コンポーネントを選択します。次に、タスクのタイトル、イニシエータ、パラメータ値およびその他の値を指定します。
ヒューマン・タスク・サービス・コンポーネントを作成していない場合は、Oracle BPELデザイナのBPELプロセスにヒューマン・タスク・アクティビティをドラッグします。次に、「ヒューマン・タスクの作成」ダイアログの「タスク定義」リストの右側にある「追加」アイコンをクリックします。これで、新しいヒューマン・タスク・サービス・コンポーネントの名前、パラメータおよび結果を指定できます。次に、残りのタスク・メタデータを設計するためのヒューマン・タスク・エディタが開きます。設計完了後、ヒューマン・タスク・エディタを閉じます。
ヒューマン・タスクをBPELプロセスに関連付ける手順は、次のとおりです。
BPELプロセスとそのプロセスが起動するヒューマン・タスク・サービス・コンポーネント間のワイヤを削除すると、ヒューマン・ワークフローのinvokeアクティビティがBPELプロセスから削除されます。ただし、アクションを実行する(承認、却下、その他のタスクの結果を含む)「taskSwitch」switchアクティビティはそのまま残ります。このように設計されている理由は、次のとおりです。
switchアクティビティには、ユーザーが入力したBPELコードが格納されています。
このswitchは、ワイヤの削除が単に別のヒューマン・タスクを指すことを意図している場合は再利用できます。
switchの削除はシングルステップのアクションです。
次に、同じ「taskSwitch」switchアクティビティを使用するためにヒューマン・タスク・サービス・コンポーネントをBPELプロセスにドラッグ・アンド・ドロップすると、新しい「taskSwitch」switchアクティビティが作成されます。BPELプロセスに同じ名前の2つのswitchアクティビティが存在する状態になります。どちらを削除するかを判断するには、「taskSwitch」switchアクティビティの承認、却下および他の結果を調査し、修正した古いswitchと新しいswitchを判断する必要があります。
表28-1 「Human Task」 - 「一般」タブ
フィールド | 参照先 |
---|---|
タスクのタイトル |
|
イニシエータ 優先度 |
|
タスク・パラメータ |
タスクのタイトルは、実行時にOracle BPM Worklistに表示されます。これは必須フィールドです。「タスクのタイトルの指定方法」の説明に従ってヒューマン・タスク・エディタの「一般」セクションの「タスクのタイトル」フィールドに入力したタスクのタイトルは、このフィールドに入力したタイトルによってオーバーライドされます。
「一般」タブの「タスクのタイトル」フィールドに、手動でタスクのタイトルを入力します。または、フィールドの右側にあるアイコンをクリックして「式ビルダー」ダイアログを表示し、タイトルを動的に作成します。
同じタイトルに静的なテキストと動的な式を併用することもできます。動的なテキストを使用するには、テキストの適切な位置にカーソルを置き、右側にあるアイコンをクリックして「式ビルダー」ダイアログを起動します。
タスク・イニシエータを指定できます。イニシエータとは、タスクを開始するユーザーです。イニシエータは、作成したタスクをOracle BPM Worklistで参照したり、特定のタスク(タスクの取下げや一時停止など)を実行することができます。
タスク・イニシエータとタスク優先度を指定する手順は、次のとおりです。
jcooper
)を入力するか、右側にあるアイコンをクリックして「式ビルダー」ダイアログを表示し、イニシエータを動的に指定します。このフィールドはオプションです。イニシエータが指定されていない場合は、「Human Task」ダイアログの「詳細」タブで指定したタスク所有者にデフォルト設定されます。タスク所有者も指定されていない場合、イニシエータはbpeladmin
にデフォルト設定されます。ヒューマン・タスク・エディタの優先度の指定の詳細は、「タスクのタイトルの指定方法」を参照してください。
「タスクのタイトル」および「イニシエータ」フィールドを完了すると、タスク・パラメータ表(図28-8を参照)にタスク・パラメータのリストが表示されます。
タスク・パラメータを指定する手順は、次のとおりです。
表28-2 「Human Task」 - 「詳細」タブ
フィールド | 参照先 |
---|---|
スコープ名 グローバル・タスク変数名 |
|
所有者 |
|
識別キー |
|
アイデンティティ・コンテキスト |
|
アプリケーション・コンテキスト |
|
タスク履歴の追加元 |
デフォルトのスコープ名とグローバル・タスク変数名は、ヒューマン・タスク・アクティビティの作成時に自動的に入力されます。ただし、ヒューマン・タスク・アクティビティの作成時にスコープとグローバル変数に名前を指定するためのカスタム名は指定できます。
スコープ名およびグローバル・タスク変数名を指定する手順は、次のとおりです。
タスク所有者は、所有するビジネス・プロセスに属するタスクを参照し、タスク割当て先のユーザーにかわって操作を実行できます。また、所有者は、タスクの再割当て、取消しまたはエスカレートも実行できます。
「Human Task」ダイアログの「一般」タブでタスク・イニシエータを指定しない場合は、ここで指定した所有者にデフォルト設定されます。「詳細」タブの「所有者」フィールドに、タスク所有者名を入力するか、右側にあるアイコンをクリックし、「式ビルダー」を使用してこのタスクの所有者を動的に指定します。
識別キーは、タスクのユーザー定義IDとして使用できます。たとえば、注文書の承認に関するタスクの場合は、タスクの識別キーとして注文書IDを設定できます。タスクは、識別キーを使用してOracle BPM Worklistで検索できます。この属性にデフォルト値はありません。
「詳細」タブの「識別キー」フィールドに、必要に応じて識別キー値を入力し、キーを指定します。
複数のレルムが構成されている場合は、タスクに対してアイデンティティ・レルム名が使用されます。同じタスクを実行している複数のレルムから割当て先を指定することはできません。複数のレルムを使用している場合、このフィールドは必須です。アイデンティティ・コンテキストを指定するには、「詳細」タブの「アイデンティティ・コンテキスト」フィールドに、値を入力します
アプリケーションのストライプ名には、タスクで使用されるアプリケーション・ロールが含まれます。アプリケーション・コンテキストを指定するには、「詳細」タブの「アプリケーション・コンテキスト」フィールドに、値を入力します。
この機能を使用すると、あるヒューマン・タスクを別のヒューマン・タスクで継続できるようになります。単一のBPELプロセス内に複数の関連タスクを持つシナリオは多数あります。たとえば、次のようなヒューマン・タスクがあると想定します。
コンピュータに対するマネージャの承認を取得するための調達プロセス
間にある複数のBPELアクティビティ
IT部門がコンピュータを購入するための別のタスク
2番目のタスクの参加者が、マネージャが購入を承認したときに作成された承認履歴、コメントおよび添付ファイルを表示する必要があるとします。このオプションを使用して2番目のタスクを最初のタスクに連鎖すると、BPELプロセスでこれらの異なるタスクをリンクできます。
連鎖したタスクの場合は、新しいタスクのタイトルをタスク・メタデータ(.task
ファイル)から設定することはできません。たとえば、既存のタスクAが新しいタスクBに連鎖し、タスクBにヒューマン・タスク・エディタで新しいタイトルが設定されている場合、このタイトルは認識されません。したがって、連鎖したタスクに異なるタイトルが必要な場合、そのタイトルは、タスク・サービスreinitiate
操作をコールする前に、タスク・インスタンスに設定する必要があります。BPELプロセスがタスクを開始する場合は、ワークフロー・サービスAPIがコールされる前にタスクのタイトルを設定します。JavaプログラムがワークフローAPIをプログラムでコールしている場合は、タイトルを設定する必要があります。
タスクの履歴を他のタスクに追加する手順は、次のとおりです。
ヒューマン・タスク・アクティビティのモデリングを完了すると、デザイナでヒューマン・タスクが生成されます。
図28-12に、ワークフロー相互作用のモデリング方法を示します。図28-12は、BPELコールバックがモデリングされていない場合の相互作用も示しています。この場合、タスクが完了した後、完了したタスクを使用してBPELプロセスがコールバックされます。中間のイベントはBPELプロセス・インスタンスに伝播されません。ユーザー・カスタマイズは、最初のassignであるAssignTaskAttributesで実行し、AssignSystemTaskAttributesを変更しないことをお薦めします。
図28-13に示すように、Oracle 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を変更しないことをお薦めします。
生成されたヒューマン・タスク・アクティビティを変更する必要がある場合は、次の詳細に注意してください。
ヒューマン・タスクをBPELプロセス・フローに追加するときに、switchアクティビティで自動的に作成されたassignタスクを変更しないでください。かわりに、switchアクティビティの外側に新しいassignアクティビティを追加してください。
ヒューマン・タスクに渡されるパラメータを変更した場合(たとえば、「タスク・パラメータの編集」ダイアログでパラメータ・タイプを変更した場合)は、BPELプロセス・フローのヒューマン・タスク・アクティビティを開いて「OK」をクリックし、ペイロード変数の参照を修正する必要があります。修正しないと、パラメータ名が変わり、編集不可になります。
ヒューマン・タスク・エディタでタスクの結果を変更した場合は、ヒューマン・タスク・アクティビティを編集し、「OK」をクリックする必要があります。switch caseは、結果に対する変更に基づいて更新されます。
リソース・バンドルのタスクのタイトルまたはカテゴリの翻訳可能文字列になんらかの変更を加えても、すでに開始されたタスクのインスタンスには変更が表示されません。ただし、変更後に開始されたタスクのインスタンスには変更が表示されます。
コメントをヒューマン・タスクにコピーするときは、それらのコメントにタスクIDが含まれていないことを確認してください。taskId要素は、空であることが必要です。
ヒューマン・タスクで生成されたパートナ・リンク(たとえば、「パートナ・リンク」スイムレーンのhuman_task_name.TaskService)を削除すると、ヒューマン・タスクが使用不可になります。パートナ・リンクを削除した場合は、Oracle BPELデザイナでヒューマン・タスク・アクティビティを削除して、再起動する必要があります。
多くの場合、ビジネス・プロセスのフローは、タスクの結果によって決定されます。ビジネス・ロジックのモデリングを容易にするため、ユーザー・タスクの生成時には、BPELのswitchアクティビティがビルトインのcaseアクティビティとともに生成されます。デフォルトでは、タスクの作成時に選択した結果ごとに1つのcaseブランチが作成されます。また、タスクの取消し、期限切れ、エラー発生の各状態に対応するotherwiseブランチもswitchに生成されます。
転送されるタスクには、ペイロードが含まれます。ペイロードがビジネス・プロセス変数から設定されている場合は、ペイロードをタスクからソースにコピーして戻すために、copyPayloadFromTask
という名前のassignアクティビティが各caseおよびotherwiseブランチに作成されます。ペイロードが他のXPath式(ora:getNodes(...)
など)で表現されている場合は、ペイロードをコピーするためのプロセス変数が存在しないため、このassignは作成されません。ペイロードを変更する必要がない場合は、タスクのscope後にswitch caseで生成されたassignを削除できます。
デフォルトでは、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>
テキスト・ファイルをヒューマン・タスクに添付できるようにするには、テキスト添付ファイルのコンテンツがエンコードされているかどうかを記述するフラグを設定する必要があります。このフラグはisContentEncoded
という名前です。このフラグを設定するには、ヒューマン・タスクを含む任意のヒューマン・ワークフローのサンプルで、BPELコードをカスタマイズします。このカスタマイズを行うには、サンプル内の.bpel
ファイルで、次のコピー・ルールをBPEL assignアクティビティ・コードに入力します。
<copy> <from>true()</from> <to>$initiateTaskInput.payload/task:task/task:attachment/task:isContentEncoded </to> </copy>
このコピー・ルールを入力した後は、ファイルを保存してBPELプロセスの設計を続行するか、または設計が終了している場合にはプロセスをデプロイできます。