ユーザーがビジネス・プロセスと相互作用するためのタスクは、ヒューマン・ワークフロー・サービスによって作成されます。それぞれのタスクには、タスク・メタデータとタスク・フォームという2つの部分があります。タスク・フォームは、タスクのコンテンツをユーザーのワークリストに表示するために使用されます。
Oracle BPM Worklistには、ユーザーまたはグループに割り当てられているすべてのワークリスト・タスクが表示されます。 ワークリスト・ユーザーが特定のタスクにドリルダウンすると、タスク表示フォームにはそのタスクの詳細が表示されます。 たとえば、経費承認タスクでは様々な経費の明細項目が記載されたフォームが表示され、ヘルプ・デスク・タスク・フォームでは重大度や問題の場所などの詳細が表示されます。
この章では、Oracle JDeveloperのADFタスク・フローを使用したタスク表示フォームの設計およびカスタマイズの方法を説明します。
項目は次のとおりです。
SOAコンポジットにヒューマン・タスクが含まれている場合は、ユーザーがタスクと相互作用する方法が必要です。このため、Oracle SOA Suiteの統合開発環境には、Oracle Application Development Framework (Oracle ADF)が含まれています。Oracle ADFを使用すると、SOAコンポジットのヒューマン・タスクを表すタスク表示フォームを設計できます。
タスク表示フォームは、Java Server Page XML(.jspx
)ファイルです。このファイルは、ヒューマン・タスクが含まれるSOAコンポジットを作成したOracle JDeveloper Designerで作成します。 Java Server Page XMLファイルを作成するには、その前に、Oracle JDeveloperでページのエンコーディングをUTF-8に設定する必要があります。 設定するには、Oracle JDeveloperで「ツール」→「プリファレンス」→「環境」の順に選択し、「エンコーディング」ドロップダウン・リストから「UTF-8」を選択します。
図26-1に、タスク表示フォームの作成を開始する、Oracle JDeveloperの「ヒューマン・タスクに基づいたADFタスク・フロー」オプションを示します。
図26-1 Oracle JDeveloperの「ヒューマン・タスクに基づいたADFタスク・フロー」
ヒューマン・タスクに基づいてADFタスク・フローを作成する場合は、タスク・メタデータ・ファイルを選択して、データ・コントロールを生成する必要があります。データ・コントロールは、ページ内のコンテンツのレイアウトを行うために使用され、実行時にはワークフロー・サービス・エンジンに接続して、タスク・コンテンツを取得し、タスクを操作します。 詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の第14章「ADFタスク・フローの概要」を参照してください。
hwtaskflow.xml
ファイルは、サービス・エンジンとの接続時に詳細を取得するために使用されます。デフォルトでは、リモートEJBを使用してワークフロー・サーバーに接続します。 SOAサーバーのURLとポートは、WebLogic Serverの実行時MBeanを使用して自動的に決定されます。ただし、その内容は、ここでURLとポート情報を明示的に指定することで上書きできます。
タスク詳細アプリケーションがワークフロー・サービスに接続できるように、ORMI権限があるユーザーをシードしてください。 このユーザーは、Oracle Enterprise Manager Fusion Middleware Controlを使用してシードできます。
ADFタスク・フローは、「タスクの詳細」ページのユーザー・インタフェースをモデリングするために使用されます。 このタスク・フローは、ヒューマン・タスクが含まれている同じアプリケーション、または別のアプリケーションで作成できます。
タスク・フローを作成するには、その前に、ヒューマン・タスク(.task
ファイル)をSOAコンポジットの一部として作成する必要があります。 .task
ファイルの作成方法の詳細は、第25章「ヒューマン・タスクの設計」を参照してください。
タスク・フローがヒューマン・タスクと同じアプリケーションにある場合は、そのタスク・フローに対して別のプロジェクトを作成します。 SOAコンポジットに複数のヒューマン・タスクが含まれている場合は、各ヒューマン・タスクに関連付けられているADFタスク・フローごとに個別のプロジェクトを作成します。 データ・コントロールは、ADFタスク・フローを使用し、タスクのパラメータと結果に基づいて作成します。
ADFタスク・フォームを自動生成するには、SOAコンポジット・アプリケーション内のヒューマン・タスクにアクセスします(フォームとタスクは同じアプリケーション内にあります)。 詳細は、第26.3.1項「ヒューマン・タスクに対してADFタスク・フローを自動生成する方法」を参照してください。
別のアプリケーションにADFタスク・フォームを作成するには、新規のアプリケーションとプロジェクトを作成し、ヒューマン・タスクの.task
ファイルを参照します。 詳細は、第26.3.2項「ヒューマン・タスクに基づいたADFタスク・フローの作成方法」を参照してください。
ヒューマン・タスクとタスク・フローが同じアプリケーションにある場合、ヒューマン・タスクを指定する.task
ファイルは、簡単にタスク・フローに関連付けられます。
ヒューマン・タスクに対してADFタスク・フローを自動生成する手順は、次のとおりです。
SOAコンポジット・アプリケーション内でBPELプロセスを開きます。
ヒューマン・タスク・アクティビティを右クリックし、図26-2に示すように、「タスク・フォームの自動生成」を選択します。
プロジェクト名とディレクトリ・パスを入力(または、デフォルトをそのまま使用)して、「OK」をクリックします。
フォームが「taskDetails1.jspx」タブのデザイナに表示されます。
これで、タスク・フローおよびタスク表示フォームが完成し、デプロイする準備ができました。
デプロイメントを容易にするには、図26-1に示す「ヒューマン・タスクに基づいたADFタスク・フロー」オプションを使用して、ADFタスク・フローおよび追加のアーチファクトを作成します。 .task
ファイルを選択してADFタスク・フローに関連付けると、タスクのパラメータと結果に基づいてヒューマン・タスク・データ・コントロールが作成されます。 これらのデータ・コントロールは、JSPXページで使用可能になります。 タスク・フロー・プロジェクトを作成するときは、SOAコンポジット・プロジェクトへのアクセス権が必要です。
ヒューマン・タスクに基づいてADFタスク・フローを作成する手順は、次のとおりです。
「ファイル」メイン・メニューから「新規」→「アプリケーション」→「SOAアプリケーション」の順に選択します。
「OK」をクリックします。
アプリケーション名およびディレクトリ情報を入力(または、デフォルトをそのまま使用)して、「終了」をクリックします。
プロジェクト名を右クリックし、「新規」を選択します。
「Web層」の下にある「JSF」を選択します。
「ヒューマン・タスクに基づいたADFタスク・フロー」を選択し、「OK」をクリックします。
「SOAリソース・ブラウザ」で、ヒューマン・タスクを定義した.task
ファイルを検索して選択し、「OK」をクリックします。
ヒューマン・タスクがタスク定義と同じアプリケーションにある場合は、「ファイル」をクリックしてファイル・ブラウザを使用し、通常はコンポジット・ディレクトリにある.task
ファイルに移動します。
ヒューマン・タスクが別のアプリケーションにある場合は、「リソース・パレット」をクリックしてMDSリソース・カタログを使用し、コンポジット・アプリケーションにある.task
ファイルを検索します。
.task
ファイルが現在のアプリケーション内にある場合は、「アプリケーション」をクリックします。
これにより、データ・コントロールを作成する「タスク・フローの作成」ダイアログが表示されます。
「タスク・フローの作成」ダイアログでは、デフォルトをそのまま使用し、「OK」をクリックします。
図26-3に示すように、「taskDetails1_jspx」アイコンがデザイナに表示されます。
このタスク・フローには、ビュー、コントロール・フローおよびタスク・リターンがあります。
タスク表示フォームの作成を継続するには、次の項を参照してください。
または、
ヒューマン・タスクに基づいたADFタスク・フローの場合、タスク・フロー・アプリケーションにはタスク・フォームをワークフロー・サービスに接続するタスク・データ・コントロールがあります。データ・コントロールは次を提供します。
タスク・データにアクセスして操作を行う様々なパラメータおよび操作
インタフェース・リージョンを作成して、タスクの内容を表示できるドロップ・ハンドラ
図26-4に示すように、ヒューマン・タスクを意識したデータ・コントロールがOracle Jdeveloperの「アプリケーション・ナビゲータ」の「データ・コントロール」パネルに表示されます。
タスクのデータ・コントロール(図の「タスク」ノードに表示)には、タスク表示フォームを表示するドロップ・ハンドラがあります。 詳細は、第26.4項「タスク表示フォームの作成」を参照してください。
タスク表示フォームは、ヒューマン・タスクのドロップ・ハンドラを使用して作成します。 このヒューマン・タスクのドロップ・ハンドラは、次を自動生成するように設計されています。
ペイロードを持つ完了済タスク
ペイロードのない完了済タスク
電子メールのタスク詳細
タスク・ヘッダー
タスク・アクション
タスク履歴
タスクのコメントと添付ファイル
ヒューマン・タスクのドロップ・ハンドラは、図26-5に示すように、デザイナのコンテキスト・メニューに表示されます。
タスク表示フォームの作成には、他のADFドロップ・ハンドラ(図26-5に示すフォーム、表、ツリーなど)を使用することもできます。 標準ADFドロップ・ハンドラの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。
ペイロードを持つ完了済タスク
このオプションでは、前述のタスク表示フォーム・コンポーネント(タスク・ヘッダー、タスク履歴、タスク・アクション、およびタスクのコメントと添付ファイル)すべての組合せが作成され、さらにペイロードのインタフェースが作成されます。ペイロード・インタフェースは次のように作成されます。
すべてのテキスト・ノードはテキスト入力フィールドとして作成されます。
要素にmaxOccurs="unbounded"
がある場合は、表として表示されます。
ネストされた表は表示されません。つまり、要素がmaxOccurs="unbounded"
でmaxOccurs="unbounded"
の子がある場合、子要素は表示されません。
ネストのレベルが複数ある場合は、個々のセクションをドラッグ・アンド・ドロップして、標準ADFドロップ・ハンドラの1つを使用します。
ペイロードのない完了済タスク
このオプションでは、前述のタスク表示フォーム・コンポーネント(タスク・ヘッダー、タスク履歴、タスク・アクション、およびタスクのコメントと添付ファイル)すべての組合せが作成されます。
電子メールのタスク詳細
このオプションでは、電子メールによる送信時に表示されるADFリージョンが作成されます。 図26-6に示すフォームが生成されます。
詳細は、第26.7項「電子メール通知の作成」を参照してください。
タスク・ヘッダー
タスク表示フォームには、すべての標準ヘッダー・フィールドが追加されます。これには、タスク番号とタイトル、BPELプロセスの状態、結果および優先度、タスクの作成者、更新者、申告者またはタスクに割り当てられているユーザーに関する情報が含まれます。ここには、タスク作成、最終更新および有効期限に関する日時も表示されます。ヘッダー・フィールドは、タスク表示の必要性に応じて追加または削除できます。
図26-7に、ヘッダー情報の例を示します。
図26-8に示すように、ヘッダーにはタスク・アクションに関連するボタンも作成されます。
タスク・アクション
次のタスク・アクションは、「アクション」ドロップダウン・リストから表示されたり、ボタンとして表示されます。 表示されるタスクは、タスクの状態(「割当て済」、「完了」など)と、そのタスクを表示するユーザーに付与されている権限によって異なります。 たとえば、タスクがグループに割り当てられている場合は、「申告」ボタンのみが表示されます。 タスクが申告されると、「却下」や「承認」など他のアクションが表示されます。
最初の3つのカスタム・アクション(「申告」、「終了」および「再開」)は、ボタンとしてタスク・フォームに表示されます。 表示されるのは、タスクに適用可能なボタンのみです。 他のアクションは、「情報のリクエスト」、「再割当て」、「ルート」の順に「アクション」リストに表示されます。 カスタム・アクションの後には、システム・アクションの「取消」、「プッシュバック」、「エスカレート」、「リリース」、「一時停止」および「期限更新」が続き、その後に「保存」ボタンが続きます。 これらのアクションの場合、入力するダイアログはありません。
申告: グループまたは複数のユーザーに割り当てられているタスクが最初に申告されます。「申告」は、グループまたは複数ユーザー割当ての「タスク・アクション」リストで選択可能な唯一のアクションです。タスクが申告されると、すべての適用可能なアクションがリストされます。
終了: このアクションは、タスクを操作するユーザーは受信を確認する必要があるが、アクションは実行しないタスク(FYIと同様)で使用します。
再開: 「一時停止」アクションによって停止したタスクを再開できます。 「一時停止」を参照してください。
情報のリクエスト: タスク作成者や前の割当て先に詳細情報をリクエストできます。再承認が不要な場合、タスクは次の承認者か、ビジネス・プロセスの次のステップに割り当てられます。
再割当て: マネージャは報告先にタスクを再割当てできます。BPMWorkflowReassign権限を持つユーザーは、タスクを任意のユーザーに再割当てできます。 「再割当て」オプションでは、「委任」機能も提供されます。 この機能を使用すると、タスクを他のユーザーまたはグループに委任できます。 委任されたタスクは、元のユーザーと委任されたユーザーの両方のワークリストに表示されます。委任先ユーザーは、元の割当て先のかわりにタスクを操作でき、そのタスクに対しては元の割当て先と同じ権限を持ちます。
ルート: 承認者の順序が事前に決定されていない場合や、ワークフローが非定型ルーティングを許可するように設計されている場合は、タスクを非定型方式でルーティングできます。このようなタスクの場合は、「タスクの詳細」ページに「ルート」ボタンが表示されます。「ルーティング」ページから、ルーティングに使用する1人以上のユーザーをルックアップできます。複数の割当て先を指定する場合は、割当て先リストの対象として、単純割当て(ユーザー全員へのグループ割当て)、順次割当てまたはパラレル割当てのいずれかを選択できます。パラレル割当ての場合は、承認に必要な得票率を指定します。
取消: タスクをキャンセルできるのは、タスク作成者のみです。 オプションのコメントがある場合は、「コメント」領域を使用できます。この場合は、ビジネス・プロセスによって、次の処理内容が決定されます。
プッシュバック: このアクションは、ワークフロー内で1レベル上のタスクを前の割当て先に送信します。
エスカレート: エスカレートされたタスクはユーザーのマネージャに割り当てられます。 オプションのコメントがある場合は、「コメント」領域を使用できます。
リリース: タスクをリリースすると、他の割当先が利用できるようになります。グループまたは複数のユーザーに割り当てられているタスクは、他の割当先が申告できるようになります。
一時停止: このアクションは、タスクが再開されるまで、有効期限を延期します。 タスクの一時停止と再開を実行できるのは、BPMWorkflowSuspend
ロールを付与されているユーザーのみです。その他のユーザーは、タスク・フィルタで「前へ」を選択するか、「一時停止」ステータスのタスクを検索することで、このタスクにアクセスできます。タスクを更新する各種ボタンは、一時停止後は無効になります。
期限更新: タスクを更新すると、タスクの有効期限が7日間延長されます(デフォルトはP7D
)。更新期間は、Oracle Enterprise Manager Grid Controlコンソールから制御されます。期限更新は、タスク履歴に表示されます。 オプションのコメントがある場合は、「コメント」領域を使用できます。
保存: タスクへの変更が保存されます。
タスク表示フォームを作成している間は、可能なシステム・アクション・ボタンがすべて表示されますが、ワークリストに表示されるのは、タスク状態に適応していて、ユーザーの権限に対応したアクションのみです。
タスク履歴
タスク・アクションの履歴は、「タスクの詳細」ページに表示され、ワークリストにも履歴表として表示されます。 履歴には、次のフィールドがあります。
バージョン番号
参加者名: タスクを操作したユーザー
アクション: たとえば、タスクが承認済または割当て済かどうか
更新者: 最後にタスクを更新したユーザーの名前
アクション日
Oracle BPM Worklistでのタスク履歴の表示方法(履歴スナップショットの取得、今後の参加者のリスト表示、およびフル・タスク・アクションのリスト表示を実行するオプションを含む)については、「図27-19 履歴: グラフィカル・ビュー」および「図27-20 履歴: フル・タスク・アクション」を参照してください。
タスクのコメントと添付ファイル
コメントの追跡情報(コメントの日付およびコメント作成者のユーザー名を含む)は、タスクのライフ・サイクル全体を通じて保持されます。
タスクに関連付けられているファイルや参照URLは、すべてのヒューマン・タスク参加者が追加できます。
図26-9に、「コメント」リージョンと「添付ファイル」リージョンの例を示します。
次のステップでは、タスク表示フォームを、ペイロード付きで、各リージョンを個別作成せずに作成するドロップ・ハンドラの使用方法を説明します。 各リージョンを個別に作成する場合は、第26.4.2項「個別のドロップ・ハンドラを使用したタスク表示フォーム・リージョンの作成方法」を参照してください。
「ペイロードを持つ完了済タスク」ドロップ・ハンドラを使用してタスク表示フォームを作成する手順は、次のとおりです。
デザイナで、「taskDetails1_jspx」をダブルクリックします。
「JSFページの作成」ダイアログで、ファイル名およびディレクトリ情報を入力(または、デフォルトをそのまま使用)して、「OK」をクリックします。
「アプリケーション・ナビゲータ」の「データ・コントロール」パネルで、「ヒューマン・タスク」ノード、「getTaskDetails」ノード、「戻る」ノードの順に展開します。
「タスク」アイコンを「taskDetails.jspx」ウィンドウにドラッグします。
「ヒューマン・タスク」を選択し、次に「ペイロードを持つ完了済タスク」を選択します。
図26-10に示すように、「アクション・バインディングの編集」ダイアログで「OK」をクリックします。
図26-11に示すように、次の「アクション・バインディングの編集」ダイアログではデータ・コレクションが選択されています。「OK」をクリックします。
図26-12に示すように、タスク表示フォームが表示されます。
複数のリージョンを持つ表示フォームは、図26-13に示すように、「タスク・ヘッダー」、「タスク・アクション」、「タスク履歴」およびタスクのコメントと添付ファイルドロップ・ハンドラを個別に使用して作成できます。
「タスク・ヘッダー」では、ヘッダーとタスク・アクションの両方が表示されるため、「タスク・ヘッダー」を使用する際は「タスク・アクション」ドロップ・ハンドラは必要ありません。 「タスク・アクション」は、「アクション」ドロップダウン・メニューとボタンは必要だが、ヘッダー詳細は不要の場合に使用します。
各リージョンを個別に作成せずにタスク表示フォームを作成する場合は、第26.4.1「「ペイロードを持つ完了済タスク」ドロップ・ハンドラを使用したタスク表示フォームの作成方法」を参照してください。
このタスク表示フォームを作成するには、その前に、次を作成する必要があります。
新しいアプリケーション、SOAプロジェクトおよびヒューマン・タスク・サービス。
ヒューマン・タスクに基づいたADFタスク・フロー。 詳細は、第24.3.2.2項「休暇申請プロセスの作成方法」を参照してください。
個別のドロップ・ハンドラを使用してタスク表示フォーム・リージョンを作成する手順は、次のとおりです。
デザイナで、「taskDetails1.jspx」をダブルクリックします。
「JSFページの作成」ダイアログで、ファイル名およびディレクトリ情報を入力(または、デフォルトをそのまま使用)して、「OK」をクリックします。
「アプリケーション・ナビゲータ」の「データ・コントロール」パネルで、「ヒューマン・タスク」ノード、「getTaskDetails」ノード、「戻る」ノードの順に展開します。
「タスク」アイコンを「taskDetails.jspx」ウィンドウにドラッグします。
「ヒューマン・タスク」を選択し、次に「タスク・ヘッダー」を選択します。
これにより、図26-14に示すように、タスク・アクションの「アクション」ドロップダウン・リストとボタンが作成され、さらに、図26-15に示すように、ヘッダー詳細が作成されます。
「タスク」アイコンをJSPXデザイナに追加ドラッグします。この作業を行うたびに次のオプションを選択します。
「ヒューマン・タスク」、次に「タスク履歴」。
「ヒューマン・タスク」、次にタスクのコメントと添付ファイル。
これで、タスク表示フォームには、タスク・アクションのドロップダウン・リストとボタン、タスク・ヘッダー詳細、タスク履歴およびコメントと添付ファイル対する複数のリージョンが設定されます。
タスク表示フォームの作成を続行するには、第26.4.3項「タスク表示フォームへのペイロードの追加方法」の手順1を参照してください。
ペイロードの追加に加えて、タスク表示フォーム・リージョンを作成できます。 第26.4.2項「個別のドロップ・ハンドラを使用したタスク表示フォーム・リージョンの作成方法」の手順1を参照してください。
ペイロードをタスク表示フォームに追加する手順は、次のとおりです。
「コンポーネント・パレット」から「ADF Faces」を選択します。
「レイアウト」を展開します。
「パネル・グループ・レイアウト」を「ヘッダー」と「コメント」セクションの間にドラッグします。
「データ・コントロール」パネルで「タスク」を展開し、次に「ペイロード」を展開します。
ペイロード・データ・コレクションを「パネル・グループ・レイアウト」領域の左にドラッグします。
「ペイロード」ノードをフォームにドロップするかわりに、「ペイロード」ノードを展開して必要な子要素をフォームにドロップすることもできます。 たとえば、VacationRequestペイロードの読取り専用フォームを作成するには、「ペイロード」ノードを展開し、休暇申請プロセス・リクエスト・ノードをフォームにドラッグして、「フォーム」→「ADF読取り専用フォーム」の順に選択します。
図26-16に示すように、コンテキスト・メニューから「フォーム」を選択し、次に「ADF読取り専用フォーム」を選択します。
「フォーム・フィールドの編集」ダイアログで、デフォルトをそのまま使用し、「OK」をクリックします。
これで、「詳細」と「履歴」の間のペイロード・リージョンに、読取り専用フィールドが作成されます。
図26-17に示すように、ペイロード・リージョンが表示されます。
図26-18に示すタスク表示フォームは完成しており、デプロイする準備ができています。
設計したフォームはtaskDetails.jspx
ファイルに保存されます。ファイルの場所は次のとおりです。
JDev_Oracle_Home\mywork\task_form_application_name\project_name\public_html
このタスク表示フォームはデプロイできます。 第26.8項「タスク・フローを使用したコンポジット・アプリケーションのデプロイ」を参照してください。
タスク・メタデータが変更されると、そのタスク・メタデータに基づいて「データ・コントロール」ビューがリフレッシュされます(XSDの変更はリフレッシュされません)。 リフレッシュ機能によって、データ・コントロールが再作成されます。 図26-19に、「リフレッシュ」オプションを示します。
データ・コントロールをリフレッシュする手順は、次のとおりです。
データ・コントロールを右クリックします。
図26-20に示すように、「定義の編集」オプションを選択し、「データ・コントロールのリフレッシュ」ダイアログを表示します。
タスク・フローは、コンテナベースのセキュリティを使用して保護できます。 詳細は、第29.6.2.1.2項「アイデンティティ伝播のためのクライアント・アプリケーションの要件」を参照してください。 Webセキュリティには、フォームベース認証およびSSOベース認証を使用できます。
通知を電子メールで送信している場合は、「/notification/secure」を含むURLを取得してコンテナベースのセキュリティを使用しないでください。これには、SOA外部では作成できない内部コンテキストを使用してSOA APIがアクセスするためです。 URLパターンの内部セキュリティに、「/」(すべてのURL)および「//notification」を含めることはできません。
アイデンティティ伝播に必要な追加ステップはありません。 アイデンティティはサーバーEJBに自動的に伝播されます。
電子メール通知がヒューマン・タスクの一部として定義されている場合は、その電子メール通知を表示するためにタスク表示フォームが使用されます。 電子メール通知には、次のオプションがあります。
デフォルト電子メール通知: ヒューマン・タスク用に作成するタスク表示フォームの最初のページを使用します。 コンテンツはHTMLベースの電子メールとして送信されます。タスク・フローの画像は、接続切断モードでも通知を表示できるように添付ファイルに含まれています。 ただし、「ペイロードを持つ完了済タスク」または「ペイロードのない完了済タスク」ドロップ・ハンドラを使用する場合、生成されたJSPXファイルは電子メールに適していません。 この場合は、カスタム電子メール通知を使用することをお薦めします。
カスタム電子メール通知: 電子メールのタスク表示ドロップ・ハンドラを使用して、電子メール通知タスク・ページを作成します。
ヒューマン・タスク定義(.task
ファイル)の一部として通知設定を確認するには、第29.2項「ヒューマン・ワークフローからの通知」を参照してください。
デフォルト・ページを送信せずに、コンテンツとレイアウトを指定したカスタム電子メール通知を送信するには、他のJSPXファイルを作成して、電子メール通知ページを設計します。 通知ページの作成には、カスタムおよび標準ドロップ・ハンドラを使用するか、電子メール通知ドロップ・ハンドラを使用します。さらに、次を実行します。
ルーターをタスク・フローに追加します。 このルーターは、タスク・フローに対して、bpmClientType
ページ・フロー・スコープ値に基づいた制御フローに従って、電子メール通知ページまたはデフォルト・ページのいずれかを送信するように指示します。
生成されたインラインCSSを編集して、ページをカスタマイズします。 実行時には、追加のCSSは含まれておらず、ADF CSSは使用できません。 次の場所にあるサンプルのnotification-101およびnotification-102を参照してください。
http://www.oracle.com/technology/sample_code/products/hwf
画像をHTMLまたはJSFページから直接参照します(間接参照、たとえば、画像を順番に追加するJSFは許可されません)。
ルーターを使用した制御フロー・ケースでは、特定のパラメータに基づいて、特定ページにリクエストを渡すことができます。 ヒューマン・タスクに基づいたADFタスク・フローでは、電子メール通知用に特別なページが必要です。 この項では、電子メール通知用に特別なページを作成する方法を説明します。
ルーターを使用してタスク・フローを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」でタスク・フロー・プロジェクトを展開し、project_name _TaskFlow.xmlをダブルクリックします。
デザイナでXMLファイルが開きます。 ダイアグラム・ビューに、「taskDetails1.jspx」アイコンが表示されます。
「コンポーネント・パレット」から「ADFタスク・フロー」を選択し、「表示」アイコンをデザイナにドラッグします。
アイコンの下にある「view1」をクリックし、電子メール通知ページの名前を入力します。
図26-21に、「EmailPage」という名前の例を示します。
「コンポーネント・パレット」から「ルーター」をデザイナにドラッグします。
アイコンの下の「router1」をクリックし、ルーター名を入力します。
図26-23に、「PageRouter」という名前の例を示します。
ルーターがコールされることを確認するには、図26-22に示すように、ルーター・アイコンを右クリックし、「アクティビティのマーク」→「デフォルト・アクティビティ」の順にクリックします。
「ルーター」、「router_name」、「プロパティ・インスペクタ」タブの順にクリックします。
「デフォルト結果」フィールドにdefault
と入力します。
「追加」をクリックして、「結果」フィールドに電子メール通知ページの名前を入力します。
式ビルダを使用して、#{pageFlowScope.bpmClientType=="notificationClient"}
を「式」フィールドに入力します。
「コンポーネント・パレット」で「制御フロー・ケース」をクリックします。
デザイナで、ルーター・ページ・アイコンから「taskDetails1.jspx」にドラッグします。
図26-23に示すように、制御フローには、「デフォルト」というラベルが自動的に付けられます。
「コンポーネント・パレット」で「制御フロー・ケース」をクリックします。
デザイナで、ルーター・ページ・アイコンから電子メール通知ページ・アイコンにドラッグします。
control-flow-case、「email_page_name」、「プロパティ・インスペクタ」タブの順にクリックします。
「結果(自)」リストに、電子メール通知ページの名前を入力します。
図26-24に、完成した制御フローを示します。
電子メール通知ページの作成を続行するには、第26.7.1.2項「電子メール通知ページの作成」の手順1を参照してください。
電子メール通知ページの作成は、タスク表示フォームの作成と類似していますが、レイアウトとインライン・スタイルの定義が必要です。 デザイン情報については、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。
電子メール通知ページを作成する手順は、次のとおりです。
デザイナで、「EmailPage」をダブルクリックします。
「JSFページの作成」ダイアログで、ファイル名およびディレクトリ情報を入力(または、デフォルトをそのまま使用)して、「OK」をクリックします。
デザイナで「EmailPage.jspx」タブが開きます。
「コンポーネント・パレット」からデザイナに共通コンポーネント(たとえば画像など)やレイアウト・コンポーネントのいずれかをドラッグします。
レイアウト・コンポーネントを選択した場合は、位置合せやその他の詳細を「プロパティ・インスペクタ」タブで指定してください。
図26-25に、「パネル・グループ・レイアウト」が選択されているときに使用できるレイアウト・フィールドを示します。
パネル・グループ・レイアウトの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。
「外観」、「スタイルおよびテーマ」、「動作」、「詳細」、「カスタマイズ」および「注釈」を展開し、図26-26に示すように、その他の詳細を指定します。
『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』のコンポーネント属性の設定方法に関する項を参照してください。
「データ・コントロール」パネルで、「ヒューマン・タスク」ノード、「getTaskDetails」ノード、「戻る」ノードの順に展開します。
パネル・グループ・レイアウト領域に「タスク」をドラッグします。
図26-27に示すように、「ヒューマン・タスク」を選択し、次に「電子メールのタスク詳細」を選択します。
このドロップ・ハンドラには、ヘッダーとともに、インライン・スタイル、ADFを使用するペイロード、およびインライン・スタイルを使用するコメントが含まれます。 ペイロードは動的に生成されるため、インライン・スタイルは含まれていません。
通常、各コンポーネントの「ヘッダー」セクションにはインライン・スタイルがあるため、それぞれのコンポーネントの「コンテンツ」セクションでは同じスタイルを使用できます。
「アクション・バインディングの編集」ダイアログで、データ・コレクションを選択し、「OK」をクリックします。
これで、電子メール・タスク・フォームが完了し、デプロイする準備ができました。
電子メール通知ページは、電子メールのメッセージ本文にHTMLコンテンツとして送信されます。ページ上の画像は添付ファイルとしてインラインされています。相対URLは絶対URLに変換されます。
フォームのフィールドに使用されているスタイルが電子メールに対して有効でない場合は、電子メールに通知が正しく表示されない場合があります。 このため、生成されたインラインCSSを編集して、ページをカスタマイズする必要がある場合があります。 詳細は、第26.7.1項「電子メール通知の作成方法」を参照してください。
セキュリティの問題によって、フォームが正しく表示されない場合もあります。 詳細は、第26.6項「タスク・フロー・アプリケーションの保護」を参照してください。
ワークリスト・アプリケーションでタスク表示フォームを使用するには、その前に、タスク・フローが含まれているコンポジット・アプリケーションをデプロイする必要があります。 タスク・フローを使用してアプリケーションをデプロイするプロセスは、第26.8.2項「タスク・フローを使用したコンポジット・アプリケーションのデプロイ方法」で説明するように、SOAコンポジット・アプリケーションのデプロイと基本的に同じです。 詳細は、第43章「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
RMIまたはHTTPポートのデフォルト値を使用していない場合は、Oracle JDeveloperのhwtaskflow.xml
ファイルを開いて、値を変更します。 図26-28に、「アプリケーション・ナビゲータ」のファイルを示します。
例26-1に、変更できる値とできない値に関するコメントがあるhwtaskflow.xml
ファイルのサンプルを示します。
例26-1 hwtaskflow.xmlファイルのサンプル
<!--Sample hwtaskflow.xml file. This is required for successful deployment of an
ADF Task Flow Based on Human Task application. -->
<?xml version = '1.0' encoding = 'UTF-8'?>
<hwTaskFlows xmlns="http://xmlns.oracle.com/bpel/workflow/hwTaskFlowProperties">
<!-- Name of the client application used to view the tasks, defaults to
'worklist' -->
<ApplicationName>worklist</ApplicationName>
<!-- Type of ejb lookup used. If not specified, remote lookup is used. Values
- LOCAL, REMOTE, SOAP -->
<LookupType>LOCAL</LookupType>
<!-- Do not modify this element. Value must be 'false' for deployment to
complete successfully -->
<TaskFlowDeploy>false</TaskFlowDeploy>
<!-- Connection details for soa server for remote ejb lookup.
If not specified, default values for ejbProviderUrl is http://localhost/soa-infra
, aliasKeyName is BPM_SERVICES, keyName is BPM_SERVICES -->
<SoaServer>
<ejbProviderUrl/>
<aliasKeyName/>
<keyName/>
<connectionName/>
</SoaServer>
<!-- Connection details for server on which task flow is deployed.
If not specified, default values for hostname is localhost,
httpPort is 8888 and httpsPort is 443 --> -->
<TaskFlowServer>
<hostName/>
<httpPort/>
<httpsPort/>
</TaskFlowServer>
<!-- Task Flow specific properties -->
<hwTaskFlow>
<WorkflowName></WorkflowName>
<TaskDefinitionNamespace></TaskDefinitionNamespace>
<TaskFlowId></TaskFlowId>
<TaskFlowFileName></TaskFlowFileName>
</hwTaskFlow>
</hwTaskFlows>
次の手順を実行するには、アプリケーション・サーバー接続が必要です。
タスク・フローを使用してコンポジット・アプリケーションをデプロイする手順は、次のとおりです。
コンポジット・アプリケーション名を右クリックし、「デプロイ」→「application_name」→「デプロイ先」→「application_server_connection」の順に選択します。
接続していない場合は、「新規接続」を選択し、アプリケーション・サーバー接続ウィザードを使用します。
「デプロイメント・ターゲットの選択」ダイアログで、サーバー・インスタンスを選択します。
「OK」をクリックします。
タスク表示フォームを変更して再度デプロイするときは、デプロイメント手順を繰り返します(タスク・フォーム・アプリケーション名を右クリックし、「デプロイ」)→「application_name」→「application_server_connection」の順に選択します)。フォームをアンデプロイするかどうかのメッセージが表示されます。「OK」をクリックし、再度タスク・フォームをデプロイします。
タスク・フローを別のアプリケーションとしてSOAコンポジット・アプリケーション外にデプロイする場合は、新しいアプリケーションとプロジェクトをそのタスク・フローのコンテナとして作成します。SOAコンポジット・アプリケーションをデプロイした後に、タスク・フロー・アプリケーションをデプロイします。
次の各項で説明する手順に従って、非SOAのOracle WebLogic Serverにタスク表示フォームをデプロイします。
非SOAのOracle WebLogic Serverには、oracle.soa.workflow.jar共有ライブラリが必要です。 このライブラリは、次の場所から入手できます。
ORACLE_JDEV_HOME\jdeveloper\soa\modules\oracle.soa.workflow_11.1.1
Oracle WebLogic Server管理コンソールを使用して、JARファイルをデプロイします。
oracle.soa.workflow.jarをデプロイする手順は、次のとおりです。
Oracle WebLogic Server管理コンソールに移動します。
http://remote_hostname:remote_portnumber/console
「ドメイン構造」領域で、「デプロイメント」をクリックします。
図26-29に示すように、「インストール」をクリックします。
図26-29 Oracle WebLogic Server管理コンソール: 「デプロイメント」リスト
「パス」フィールドに次のパスを入力し、「次へ」をクリックします。
ORACLE_JDEV_HOME/jdeveloper/soa/modules/oracle.soa.workflow_11.1.1/oracle.soa.workflow.jar
図26-30に示すように、同じデプロイメントの名前を維持し、「次へ」をクリックします。
図26-30 Oracle WebLogic Server管理コンソール: 「アプリケーション・インストール・アシスタント」
ライブラリとしてデプロイ・オプションを選択し、「終了」をクリックします。
図26-31に示すように、oracle.soa.workflow(11.1.1,11.1.1)ライブラリが「アクティブ」状態であることを確認します。
図26-31 Oracle WebLogic Server管理コンソール: 「アクティブ」状態のoracle.soa.workflow
第26.8.5.2項「非SOAのOracle WebLogic Serverでの外部JNDIプロバイダの定義」を参照して続行してください。
Oracle WebLogic Server管理コンソールを使用して、次のタスクを実行します。
外部JNDIプロバイダを定義する手順は、次のとおりです。
「ドメイン構造」領域で、「サービス」を展開し、「外部JNDIプロバイダ」をクリックします。
「新規」をクリックします。
図26-32に示すように、「名前」フィールドにForeignJNDIProvider-SOA
と入力し、「OK」をクリックします。
「ForeignJNDIProvider-SOA」リンクをクリックします。
次のように入力し、「保存」をクリックします。
「初期コンテキスト・ファクトリ」に、weblogic.jndi.WLInitialContextFactory
と入力します。
「プロバイダURL」に、t3://
soa_hostname
:
soa_portnumber
/soa-infra
と入力します。
「ユーザー」に、weblogic
と入力します。
「パスワード」に、weblogic
と入力します。
図26-33に、これらの情報を入力するページを示します。
第26.8.5.3項「非SOAのOracle WebLogic Serverでの外部JNDIプロバイダ・リンクの定義」を参照して続行してください。
Oracle WebLogic Server管理コンソールを使用して、次のタスクを実行します。
外部JNDIプロバイダ・リンクを定義する手順は、次のとおりです。
「ドメイン構造」領域で、「サービス」を展開し、「外部JNDIプロバイダ」をクリックします。
「ForeignJNDIProvider-SOA」リンクをクリックします。
「リンク」タブをクリックします。
「新規」をクリックします。
図26-34に、「リンク」タブを示します。
次のように入力し、「OK」をクリックします。
「名前」に、RuntimeConfigService
と入力します。
「ローカルJNDI名」に、RuntimeConfigService
と入力します。
「リモートJNDI名」に、RuntimeConfigService
と入力します。
図26-35に、これらを入力するページを示します。
次のように入力し、「OK」をクリックします。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、ejb/bpel/services/workflow/TaskServiceBean
と入力します。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、ejb/bpel/services/workflow/TaskMetadataServiceBean
と入力します。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、TaskReportServiceBean
と入力します。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、TaskEvidenceServiceBean
と入力します。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、TaskQueryService
と入力します。
「名前」、「ローカルJNDI名」、「リモートJNDI名」に、UserMetadataService
と入力します。
第26.8.5.4項「bpm-services.jarに対する権限付与を含める方法」を参照して続行してください。
bpm-services.jarに対する権限付与を含めるには、system-jazn-data.xml
ファイルを編集し、非SOAのOracle WebLogic Serverを再起動します。
bpm-services.jarに対する権限付与を含める手順は、次のとおりです。
ドメイン・ディレクトリ「soa-infra」に移動し、次の場所に移動して、system-jazn-data.xml
ファイルを検索します。
ORACLE_WEBLOGIC_INSTALL/user_projects/domains/your_domain_name/config/fmwconfig
system-jazn-data.xml
に、次の権限付与を追加します (全部または一部の権限付与が存在する場合は、欠落している部分のみ追加します)。
<grant>
<grantee>
<codesource>
<url>file: ORACLE_JDEV_HOME/jdeveloper/soa/modules/oracle.soa.workflow_
11.1.1/bpm-services.jar</url>
</codesource>
</grantee>
<permissions>
<permission>
<class>oracle.security.jps.JpsPermission</class>
<name>VerificationService.createInternalWorkflowContext</name>
</permission>
<permission>
<class>oracle.security.jps.service.credstore.CredentialAccessPermission
</class>
<name>credstoressp.credstore.BPM-CRYPTO.BPM-CRYPTO</name>
<actions>read,write</actions>
</permission>
<permission>
<class>oracle.security.jps.JpsPermission</class>
<name>IdentityAssertion</name>
<actions>*</actions>
</permission>
</permissions>
</grant>
非SOAのOracle WebLogic Serverを再起動します。
第26.8.5.5項「アプリケーションのデプロイ」を参照して続行してください。
タスク表示フォームを含むアプリケーションは、他のアプリケーションをデプロイする方法と同じ方法で非SOAのOracle WebLogic Serverにデプロイします。 アプリケーション・サーバー接続を設定するときは、非SOAサーバー上のドメイン(第26.8.5.4項「bpm-services.jarに対する権限付与を含める方法」の手順1で指定したドメイン)を指定します。 アプリケーションのデプロイについては、第43章「SOAコンポジット・アプリケーションのデプロイ」を参照してください。
タスク・フォームがデプロイされると、タスク・メタデータとタスク・フロー・アプリケーションURL間の関連付けが自動的に作成されます。 このマッピングを更新するには、Oracle Enterprise Manager 11g Fusion Middleware Controlを使用します。 特定のSOAコンポジット・アプリケーションについては、「コンポーネント・メトリック」表のタスク・フロー・コンポーネントにアクセスします。 「管理」タブに、タスク・フォームのURIが表示されます。 詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。 タスク・フローがHTTPSアクセス用に構成されている場合は、Enterprise Managerでの追加設定が必要になる場合があります。
タスクの操作方法については、第27章「Oracle BPM Worklistの使用」を参照してください。
注意: Oracle WebLogic Server管理コンソールで以前設定したホスト名とポート番号とは異なるポート番号を持つ別のURLからタスク表示フォームにアクセスする場合、タスクの詳細をワークリストに正しく表示するには、Oracle WebLogic Server管理コンソールでフロント・エンドのポート番号を変更し、タスク表示フォームを再デプロイする必要があります。 |
タスク表示フォームは、Oracle BPM Worklistに表示されており、ユーザーが割り当てられたヒューマン・タスクを操作するWebベースのインタフェースです。ユーザーの権限によって特定のアクションが使用可能または不可能となります。
図26-36に、ワークリスト・アプリケーションの「タスクの詳細」ページに表示されるヘルプ・デスク・リクエスト例のタスク表示フォームを示します。
タスク表示フォームは、ログイン後にOracle BPM Worklistで使用可能になります。手順については、第27.2.1項「ワークリストへのログイン方法」を参照してください。
図26-37に、電子メールに表示される電子メール・タスク通知を示します。
選択可能なアクションとして「解決済」または「未解決」をクリックするか、「ワークリスト・アプリケーション」リンクをクリックすると、ワークリストにログインできます。 アクションをクリックすると電子メール作成ウィンドウが表示され、このウィンドウでは、コメントを追加して、電子メールを送信できます。