チュートリアル : Worklist アプリケーションの構築
手順 4. タスクの作成とユーザへの割り当て
この手順では、ワークリスト ビジネス プロセスでタスクの作成、ユーザへのタスクの割り当て、およびタスク完了期日の指定を行う一般的なパターンを設計する方法について説明します。ビジネス プロセスとユーザの統合を設計するには、ワークリスト コントロール、具体的にはタスク コントロールを使用します。
この節では、タスクを作成してユーザに割り当てるための 3 つの方法について説明します。
注意 : どの方法でも新しいビジネス プロセス (JPD) を作成することをお勧めします。
タスクの作成とユーザへの割り当て - 方法 1
この方法をお勧めします。これは方法 2 よりも直観的であり、4 つの操作を 1 つにまとめています。
この節では、次のタスクを実行します。
タスク コントロールの作成
タスク コントロールは、タスクのインスタンスを作成して管理します。SoftCo 社でバグの解決を承認するタスクを管理するタスク コントロールを作成するには、次の作業を行います。
ビジネス プロセスが [デザイン ビュー] に表示されない場合は、[アプリケーション] パネルで ResolutionApproval.jpd をダブルクリックします。
データ パレットの [コントロール] タブで [追加|Integration Controls|Task] をクリックします。[コントロールの挿入 - Task] ダイアログ ボックスが表示されます。
注意 : [コントロール] タブが WebLogic Workshop で表示されない場合は、メニュー バーで [表示|ウィンドウ|データ パレット] をクリックします。
[手順 1] で、このコントロールのインスタンスの名前として taskCtrl を入力します。
[手順 2] で [使用する新しい Task コントロールを作成] を選択します。次に、[新しい JCX 名] フィールドに ApprovalCtrl と入力します。
[作成] をクリックします。新しいタスク コントロールとそのインスタンスが作成され、[コントロールの挿入] ダイアログ ボックスが閉じます。
新しい JCX ファイル (ApprovalCtrl.jcx) が作成され、[アプリケーション] タブに表示されます。コントロールのインスタンスは、データ パレットの [コントロール] タブに表示されます。
タスク コントロールのデフォルト値の設定
タスク コントロールでは、タスク作成時のコントロールのデフォルト値を一部指定できます。指定したデフォルト値は、作成メソッドの引数によってオーバーライドできます。
データ パレットで、taskCtrl をクリックします。
プロパティ エディタに、ワークリスト コントロールのプロパティ リストが表示されます。一部の値はすでに設定されています。これらの値は変更できます。
プロパティ エディタで [task] グループを検索し、[name] プロパティをクリックして approveResolutionTask と入力します。
[advanced] グループの [completion-due-business-date] プロパティをクリックして
をクリックします。プロパティ テキスト エディタが表示されます。
プロパティ テキスト エディタで 2d と入力し、[OK] をクリックします。
注意 : 有効なビジネス日付を指定しないと、構文アナライザによるコントロール宣言の確認時にエラーが検出され、JPD のソース ビューに表示されます。
これで、以下の図に示すように、タスク作成時のデフォルトのコントロール値が定義されました。
割り当て対象と要求メッセージの定義
以下のように 1 つの XML 操作と XML マッパーを使用して、割り当て対象と要求メッセージを定義します。
approveResolutionTask コントロールの使用可能なメソッドが表示されていない場合は、taskCtrl コントロールの隣にある [+] をクリックしてリストを展開します。
String createTask(TaskCreationXMLDocument arg0) メソッドを選択してビジネス プロセスまでドラッグし、Receive Resolution ノードの直後のプロセスにドロップします。
ビジネス プロセスの名前を、その機能をより適切に表す名前に変更します。
createTask をクリックして名前を変更し、ノード名として createAndAssignTask と入力して〔Enter〕を押します。
createAndAssignTask ノードをダブルクリックします。ノード ビルダが開いて、[一般的な設定] タブが表示されます。コントロール インスタンスとターゲット メソッドはすでに選択されています。
[データの送信] タブを開きます。デフォルトでは、[データの送信] タブを開くと [変数の割り当て] ペインが表示されます。
[手順 1] で [変数の選択] をクリックしてから、resolutionXML (BugResolutionDocument) をクリックします。
[手順 2] で [トランスフォーメーションの作成] をクリックします。トランスフォーメーション ツールが開き、[ソース] ペインに BugResolution XML ドキュメントが表示され、[ターゲット] ペインに String が表示されます。
この図では、XML マッパーが表示されます。左側には、この作成方法で予期される XML のスキーマが表示されます。マップは中央に作成します。右側には、受信される XML のスキーマが表示されます。このスキーマのすべての要素は省略可能です。タスクの作成時に必要となるのはタスク名のみです。このコントロールの名前についてはデフォルト値 taskCtrl をすでに設定しているため、このチュートリアルでは名前の設定について考える必要はありません。
[ソース] ペインで bug-creator をクリックし、そのまま [ターゲット] ペインの assignee-user までドラッグします。マップ ペインで、bug-creator 要素と assignee-user 要素を結ぶ線が描画されます。
[ソース] ペインで resolutionXML をクリックし、そのまま [ターゲット] ペインの request-message-any までドラッグします。マップ ペインで、resolutionXML 要素と request-message-any 要素、および bug-creator 要素と request-message-any 要素を結ぶ線が描画されます。
タスクを割り当てるアルゴリズムの指定
デフォルトでは、アルゴリズム AssignToUsersAndGroups が使用されます。ただし、このチュートリアルでは、タスクを特定のユーザに割り当てて、そのユーザがタスクを申請するようにします。
タスクの割り当てに使用するアルゴリズムを指定するには
XML マッパーの [ターゲット] ペインで assignee-algorithm 要素を右クリックし、メニューから [定数の作成] を選択します。
[定数の作成] ダイアログ ボックスで、ToUser と入力し、[OK] をクリックします。assignee-algorithm ノードに、定数であることを示す
が表示されます。
注意 : プロパティ エディタで、[Facets Defined] プロパティの横の [+] をクリックします。[Facets Defined] プロパティに、受け入れられる値のリストが表示されます。[ターゲット] ペインにこのプロパティが表示されない場合は、[assignee-algorithm] 要素をクリックします。
[アプリケーション] ペインで ResolutionApproval.jpd をダブルクリックして、ノード ビルダに戻ります。
注意 : ノード ビルダがデザイン ビューに表示されない場合は、[デザイン ビュー] タブをクリックします。
デフォルトでは、[データの受信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが返す値] フィールドには、createTask() メソッドから返されると予期されるデータ型 String が設定されています。
[割り当てる変数を選択します。] で、ドロップダウン リストの矢印をクリックし、[変数の新規作成...] を選択します。
[変数を作成] ダイアログ ボックスに、選択した [Java] ラジオ ボタンと [変数の型] フィールドに入力した java.lang.String が表示されます。デフォルト値を設定する必要はありません。
[変数を作成] ダイアログ ボックスの [変数名] フィールドに、taskId と入力します。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの受信] タブに表示されます。ノード ビルダのすべてのタブが完了済みとしてマークされます。
createAndAssignTask ノード ビルダを閉じるには、右上の [X] をクリックします。
これで、解決承認ビジネス プロセスが次の図のようになります。
[ファイル|すべて保存] を選択して、作業内容を保存します。
これで、ワークリスト コントロールを使用して、タスクの作成、タスクのユーザへの割り当て、およびタスクの完了期日の指定を行うビジネス プロセスの設計が完了しました。また、この手順では、バグ解決を承認するタスクがバグを作成したユーザに割り当てられます。
この方法では 4 つの操作が 1 つにまとめられるため、「タスクの作成とユーザへの割り当て - 方法 2」よりも直観的です。ただし、Worklist をよく理解して機能を最大限に利用できるように、「タスクの作成とユーザへの割り当て - 方法 2」も確認することをお勧めします。
タスクの作成とユーザへの割り当て - 方法 2
これは、ビジネス プロセスを設計する方法としては最も効率的な方法ではありませんが、方法 1 と比較すると、一般的な誤りを避けることができ、ワークリストの機能をより効果的に使用できます。
この節では、次のタスクを実行します。
新しいビジネス プロセスの作成
どの方法でも新しいビジネス プロセス (JPD) を作成することをお勧めします。
WebLogic Workshop メニューから [ファイル|新規作成|プロセス ファイル] をクリックします。[新しいファイル] ダイアログ ボックスが表示されます。
[ファイル名] フィールドに ResolutionApproval2.jpd などの名前を入力します。
ビジネス プロセスが作成され、[アプリケーション] パネルおよび [デザイン ビュー] に表示されます。
注意 : [アプリケーション] パネルが WebLogic Workshop で表示されない場合は、メニュー バーから [表示|アプリケーション] を選択します。
タスク コントロールの作成
タスク コントロールは、タスクのインスタンスを作成して管理します。SoftCo 社でバグの解決を承認するタスクを管理するタスク コントロールを作成するには、次の作業を行います。
ビジネス プロセスが [デザイン ビュー] タブに表示されない場合は、[アプリケーション] パネルで ResolutionApproval2.jpd をダブルクリックします。
データ パレットの [コントロール] タブで [追加|Integration Controls|Task] をクリックします。[コントロールの挿入 - Task] ダイアログ ボックスが表示されます。
注意 : [コントロール] タブが WebLogic Workshop で表示されない場合は、メニュー バーで [表示|ウィンドウ|データ パレット] をクリックします。
[手順 1] で、このコントロールのインスタンスの名前として taskCtrl を入力します。
[手順 2] で [使用する新しい Task コントロールを作成] を選択します。次に、[新しい JCX 名] フィールドに ApprovalCtrl2 と入力します。
[作成] をクリックします。新しいタスク コントロールとそのインスタンスが作成され、[コントロールの挿入] ダイアログ ボックスが閉じます。
新しい JCX ファイル (ApprovalCtrl2.jcx) が作成され、[アプリケーション] タブに表示されます。コントロールのインスタンスは、データ パレットの [コントロール] タブに表示されます。データ パレットで、名前の隣にある [+] をクリックしてコントロール インスタンスを展開し、このコントロールに提供されている基本メソッドを表示します。
注意 : タスク コントロールの基本メソッドの完全なリストについては、次の URL にある『Worklist の使い方』の「ワークリスト コントロールの使用」を参照してください。
解決承認タスクの作成
この手順では、ビジネス プロセスとタスク コントロールの対話を設計します。これは、データ パレットからデザイン ビューまでタスク コントロールのメソッドをドラッグし、ビジネス プロセスの適切なロジックを作成する位置にドロップするという単純な方法で行います。このチュートリアルでは、タスクを作成するノード、およびタスクに関するデータをタスク コントロールに送信するノードをプロセスに作成します。そのためには、次の節で説明する手順を実行してください。
解決承認タスクを作成するには
必要に応じて、データ パレットの taskCtrl コントロールの隣にある [+] をクリックして、使用可能なメソッドのリストを展開します。
メソッド String createTaskByName(String name) を選択します。次にこのメソッドをデザイン ビューのビジネス プロセスまでドラッグし、Receive Resolution ノードの直後のプロセスにドロップします。
戻り値のあるコントロール送信ノードが作成されます。これは、taskCtrl コントロールに対する同期呼び出しを表します。このノードの名前は、ビジネス プロセスまでドラッグしたメソッドの名前 (ここでは createTaskByName) になります。
注意 : この対話は、同期をとるように設計されます。つまり、コントロールからの応答を待つ間ビジネス プロセスがブロックされます。createTaskByName メソッドの場合、応答はタスク ID を含んだ Stringです。タスク コントロールのインスタンスを使って作成される各タスクには、一意のタスク ID が割り当てられます。
createTaskByName ノードをダブルクリックします。ノード ビルダが開いて、[一般的な設定] タブが表示されます。コントロール インスタンスとターゲット メソッド、つまり taskCtrl と String createTaskByName(String name) がすでに選択されています。
デフォルトでは、[データの送信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが予期する値] フィールドには、taskCtrl コントロールによってエクスポーズされる createTaskByName() メソッドが予期するデータ型である String name が設定されています。
[割り当てる変数を選択します。] で、ドロップダウン リストの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスに、変数の型として選択された Java が表示されます。
[変数を作成] ダイアログ ボックスで、次の作業を行います。
[変数名] フィールドに approveResolutionTask と入力します。
[変数の型] フィールドに java.lang.String が含まれるようにします。
[デフォルト値] フィールドに、Approve Resolution と入力します。このようにして、タスクの名前を指定します。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの送信] タブに表示されます。また、approveResolutionTask 変数は、データ パレットにも Java 変数としてリストされます。
デフォルトでは、[データの受信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが返す値] フィールドには、createTaskByName() メソッドから返されると予期されるデータ型 String が設定されています。
[割り当てる変数を選択します。] で、ドロップダウン リストの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスに、変数の型として選択された Java が表示されます。
[変数を作成] ダイアログ ボックスで、次の作業を行います。
[変数名] フィールドに taskId と入力します。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの受信] タブに表示されます。
ノード ビルダが完了済み
としてマークされます。
assignTaskByName ノード ビルダを閉じるには、右上の [X] をクリックします。
タスクに関する情報をタスク コントロールに送信するには
このチュートリアルではすでに、クライアントからバグ解決ドキュメントを受信すると起動されるようにビジネス プロセスを設計しています。バグ解決ドキュメント内のデータは、タスクや期日などが割り当てられる際にタスク コントロールによって使用されます。この手順では、バグ解決ドキュメントのデータをタスク コントロールに送信するノードをビジネス プロセスに作成します。この手順は、次のとおりです。
必要に応じて、データ パレットの taskCtrl コントロールの隣にある [+] をクリックして、使用可能なメソッドのリストを展開します。
メソッド void setRequest(XmlObject xml) を選択します。次にデザイン ビューでこのメソッドをビジネス プロセスまでドラッグし、createTaskByName ノードの直後のプロセスにドロップします。新しいノード (setRequest) が作成されます。
setRequest ノードをダブルクリックします。
[データの送信] タブを開きます。デフォルトでは、ノード ビルダを開くと、[変数の割り当て] パネルが選択されています。
[割り当てる変数を選択します。] で、矢印をクリックし、resolutionXML (bug-resolution) を選択します。
ノード ビルダを閉じるには、右上の [X] をクリックします。
これで、解決承認ビジネス プロセスが次の図のようになります。
ユーザへのタスクの割り当て
この手順では、前の手順で作成した approveResolution タスクを SoftCo 社のユーザに割り当てます。これはタスクを作成したときと同じ方法で行います。つまり、タスク コントロールのメソッドをデータ パレットからデザイン ビューまでドラッグし、ビジネス プロセス内の対話を設計する位置にドロップします。
データ パレットの taskCtrl で、メソッド void assignTaskToUser(String user) を選択します。次にこのメソッドをデザイン ビューのビジネス プロセスまでドラッグし、setRequest ノードの直後のプロセスにドロップします。
assignTaskToUser ノードをダブルクリックし、次に [データの送信] タブを開いて、割り当てるユーザ名の取得元となる変数を指定します。[データの送信] タブには 2 つのモードがあります。
[変数の割り当て] — このモードは、メソッドが予期するデータを保持する変数を直接割り当てる場合に使用します。
[トランスフォーメーション] — このモードは、変数に割り当てられたデータとメソッド パラメータが予期するデータ間のトランスフォーメーションを作成する場合に使用します。
ここでは、[トランスフォーメーション] モードに切り替えます。これは、taskCtrl コントロールへの入力として必要なデータ型が Java String 型であり、バグ解決メッセージが格納される変数が XML 型、つまり BugResolutionDocument であるためです。バグの割り当て先のユーザ名が Bug Resolution メッセージに含まれることと、BugResolutionDocument が BugResolution.xsd スキーマに対して有効であることに注意します。
WebLogic Integration には、異質なデータ型をマップするデータ マッピング ツールがあります。このツールを使って作成するデータ トランスフォーメーションは、データ トランスフォーメーション フォーマット (Data Transformation Format : DTF) ファイルに保存されます。
[トランスフォーメーション] をクリックして、変数とコントロール メソッドのパラメータが予期するデータ型の間のトランスフォーメーションを定義するためのペインを開きます。
[手順 1] で [変数の選択] をクリックし、プロジェクトの変数を表示します。次に、resolutionXML (BugResolutionDocument) を選択します。これは、ビジネス プロセスの冒頭で Receive Resolution ノードに対して作成した変数です。
[手順 2] で [トランスフォーメーションの作成] をクリックします。トランスフォーメーション ツールが開き、[ソース] ペインに BugResolution XML ドキュメントが表示され、[ターゲット] ペインに String が表示されます。
[ソース] ペインで bug-creator をクリックし、そのまま [ターゲット スキーマ] ペインの String までドラッグします。マップ ペインで、bug-creator 要素と String 要素を結ぶ線が描画されます。これは 2 つのデータ型間のトランスフォーメーションを表します。
[アプリケーション] パネルで ResolutionApproval2.jpd をダブルクリックして、assignTaskToUser ノード ビルダに戻ります。
注意 : 上の手順でトランスフォーメーションを作成すると、プロジェクトにトランスフォーメーション コントロールが作成されます。つまり、ResolutionApproval2Transformation.dtf という名前の DTF ファイルが作成されます。また、トランスフォーメーション メソッドに対するクエリ (XQuery 言語による) を含んだ XQ ファイルも作成されます。DTF ファイルと XQ ファイルはどちらも [アプリケーション] タブに表示されます。また、トランスフォーメーション コントロールのインスタンスが作成され、データ パレット ([コントロール] タブ) に transformations として表示されます。
assignTaskToUser ノード ビルダを閉じるには、右上の [X] をクリックします。
この手順で、assignTaskToUser ノードの設計が完了します。このノードを介して、バグの作成者 (bug-creator) がバグを解決するタスクに割り当てられるように指定しました。
注意 : このメソッドによって、割り当て対象リストが特定の Integration ユーザに設定されます。これは、このビジネス プロセスを開始する XML ドキュメントの bug-creator 要素で指定されたユーザです。このユーザは割り当て対象リストの唯一のユーザであるため、この操作によって、タスクは指定したユーザに対して自動的に申請されます。
タスクの完了期日の指定
前の手順では、バグの作成者 (bug-creator) がバグを解決するタスクに割り当てられるようにビジネス プロセスを設計しました。この手順では、タスクに割り当てられたユーザがタスクを完了しなければならない期日を指定します。
そのためには、ビジネス プロセスにノードを作成します。これは、前の 2 つの手順でノードを作成したときと同じように、データ パレット内の taskCtrl からビジネス プロセスにメソッドをドラッグする方法で行います。
データ パレットの taskCtrl で、次のメソッドを選択します。
void setCompletionDueBusinessDate(String duration String calendarID)
次にこのメソッドをデザイン ビューのビジネス プロセスまでドラッグし、assignTaskToUser ノードの直後のプロセスにドロップします。
setCompletionDueBusinessDate ノードをダブルクリックし、次に [データの送信] タブを開きます。[変数の割り当て] ペインで、プロセスがタスクに渡す期日とカレンダー名の取得元となる変数を指定します。
[変数の割り当て] ペインの [割り当てる変数を選択します。] で、[コントロールが予期する値] の String duration パラメータに関連付けられたフィールドの矢印をクリックし、[変数の新規作成...] を選択します。
[変数を作成] ダイアログ ボックスに、変数の型として選択された Java が表示されます。
[変数を作成] ダイアログ ボックスで、次の作業を行います。
[変数名] フィールドに dueDate と入力します。
[デフォルト値] フィールドに、2 d ( 2 日間) と入力します。このようにして、ビジネス時間の期間を指定します。この期間の最終日がタスクの完了期日です。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの送信] タブに表示されます。
[割り当てる変数を選択します。] で、[コントロールが予期する値] の String calendarID パラメータに関連付けられたフィールドの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスに、変数の型として選択された Java が表示されます。
[変数を作成] ダイアログ ボックスで、次の作業を行います。
[変数名] フィールドに calendarName と入力します。
[デフォルト値] フィールドに、SoftwareTeamCalendar と入力します。
この方法で、ビジネス プロセスが期間を計算する際の基準となるカレンダーを指定します。この場合、dueDate を 2 d と指定します。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの送信] タブに表示されます。
setCompletionDueBusinessDate ノード ビルダを閉じるには、右上の [X] をクリックします。
これで、解決承認ビジネス プロセスが次の図のようになります。
[ファイル|すべて保存] を選択して、作業内容を保存します。
これで、ワークリスト コントロールを使用して、タスクの作成、タスクのユーザへの割り当て、およびタスクの完了期日の指定を行うビジネス プロセスの設計が完了しました。また、この手順では、バグ解決を承認するタスクがバグを作成したユーザに割り当てられます。
バグの解決過程で発生する他のイベントを処理できるようにビジネス プロセスを設計するには、「手順 5. タスク所有者からの解決承認の受信」を参照してください。
タスクの作成とユーザへの割り当て - 方法 3
この節では、ニーズに合わせてカスタマイズした独自のタスク コントロールをビルドする方法について説明します。
この節では、次のタスクを実行します。
新しいビジネス プロセスの作成
どの方法でも新しいビジネス プロセス (JPD) を作成することをお勧めします。
WebLogic Workshop メニューから [ファイル|新規作成|プロセス ファイル] をクリックします。[新しいファイル] ダイアログ ボックスが表示されます。
[ファイル名] フィールドに ResolutionApproval3.jpd などの名前を入力します。
ビジネス プロセスが作成され、[アプリケーション] パネルおよび [デザイン ビュー] に表示されます。
注意 : [アプリケーション] パネルが WebLogic Workshop で表示されない場合は、メニュー バーから [表示|アプリケーション] を選択します。
タスク コントロールの作成
タスク コントロールは、タスクのインスタンスを作成して管理します。SoftCo 社でバグの解決を承認するタスクを管理するタスク コントロールを作成するには、次の作業を行います。
ビジネス プロセスが [デザイン ビュー] タブに表示されない場合は、[アプリケーション] パネルで ResolutionApproval3.jpd をダブルクリックします。
データ パレットの [コントロール] タブで [追加|Integration Controls|Task] をクリックします。[コントロールの挿入 - Task] ダイアログ ボックスが表示されます。
注意 : [コントロール] タブが WebLogic Workshop で表示されない場合は、メニュー バーで [表示|ウィンドウ|データ パレット] をクリックします。
[手順 1] で、このコントロールのインスタンスの名前として customTaskCtrl と入力します。
[手順 2] で [使用する新しい Task コントロールを作成] を選択します。次に、[新しい JCX 名] フィールドに CustomTaskCtrl と入力します。
[作成] をクリックします。新しいタスク コントロールとそのインスタンスが作成され、[コントロールの挿入] ダイアログ ボックスが閉じます。
新しい JCX ファイル (CustomTaskCtrl.jcx) が作成され、[アプリケーション] タブに表示されます。コントロールのインスタンスは、データ パレットの [コントロール] タブに表示されます。
タスク コントロールのカスタマイズ
以下の手順で、作成したタスク コントロールをカスタマイズします。
データ パレットで、customTaskControl を右クリックし、[Edit] を選択します。
デザイン ビューに、このコントロールに定義されているデフォルト メソッドがすべて表示されます。チュートリアルのこの手順では、すべてのメソッドは必要ありません。この後の手順で、不要なメソッドを削除します。
[ソース ビュー] タブをクリックします。コントロールのソース コードが表示されます。
Callback インタフェースを除き、CustomTaskCtrl インタフェースに定義されているすべてのメソッドを削除します。インタフェースは以下のようになります。
/**
* @jc:task
*/
public interface CustomTaskCtrl extends TaskControl,
com.bea.control.ControlExtension
{
public interface Callback extends TaskControl.Callback {
/**
* @jc:task-event event-type="complete" response="{response}"
*/
void onTaskCompleted(XmlObject response);
/**
* @jc:task-event event-type="abort" response="{response}"
*/
void onTaskAborted(XmlObject response);
/**
* @jc:task-event event-type="expire" time="{time}"
*/
void onTaskOverdue(Date time);
}
}
注意 : カスタマイズできないメソッドもあります。[デザイン ビュー] タブをクリックして、コントロール インスタンスを表示すると、ほとんどのメソッドが表示されなくなっていることを確認できます。
以下のコードをコピーして、ソース ビューのインタフェース コードと置き換えます。
public interface CustomTaskCtrl extends TaskControl,
com.bea.control.ControlExtension
{
public void createAndAssignTask(XmlObject requestXml, String username);
public interface Callback extends TaskControl.Callback {
/**
* @jc:task-event event-type="complete" response="{response}"
*/
void onTaskCompleted(XmlObject response);
/**
* @jc:task-event event-type="abort" response="{response}"
*/
void onTaskAborted(XmlObject response);
/**
* @jc:task-event event-type="expire" time="{time}"
*/
void onTaskOverdue(Date time);
}
}
注意 : メソッド定義のオーバロードはサポートされていません。独自のメソッドを作成するときは、デフォルトのタスク コントロール メソッド名を使用しないように注意してください。
実行時に指定する動的引数は、request と assignee の 2 つだけです。以下の手順では、メソッドの動作と引数の適用を定義します。
選択していない場合は、ソース ビューでメソッド名 (createAndAssignTask) をクリックし、プロパティ エディタで task-create を探します。
必要に応じて、名前の隣にある [+] をクリックして [task-create] プロパティを展開します。属性リストに、タスクの作成でサポートされるすべての引数が表示されます。
[task-create] プロパティの [Name] 属性をクリックします。
[task-create] プロパティ フィールドに、Approve Resolution と入力します。
〔Enter〕を押します。ソース コードは以下のようになります。
/**
* @jc:task-create name="Approve Resolution"
*/
public void createAndAssignTask(XmlObject requestXml, String username);
このメソッドによって、Approve Resolution という名前のタスクが作成されます。
プロパティ エディタの [task-create] プロパティの [completion-due-business-date] 属性をクリックします。
[completion-due-business-date] 属性の
をクリックします。プロパティ テキスト エディタが表示されます。
2d と入力し、[OK] をクリックします。ソース コードは以下のようになります。
/**
* @jc:task-create completion-due-business-date="2d" name="Approve Resolution"
*/
public void createAndAssignTask(XmlObject request, String username);
メソッドの引数をタスク プロパティにマッピングします。このときは、中括弧 { } を使用する必要があります。
必要に応じて、ソース ビューでメソッド名 (createAndAssignTask) をクリックします。
[task-create] プロパティの [request] 属性をクリックし、
をクリックします。プロパティ テキスト エディタが表示されます。
プロパティ テキスト エディタで {requestXml} と入力し、[OK] をクリックします。
これにより、requestXml 引数で渡される値をタスク要求の設定に使用することが指定されます。サポートされている要求タイプのリストについては、『Worklist の使い方』の「高度なトピック」の「メソッド シグネチャの変更 — 要求と応答」を参照してください。
ソース ビューでメソッド名 (createAndAssignTask) をクリックします。
必要に応じて、名前の隣にある [+] をクリックして [task-assign] プロパティを展開します。
[task-assign] プロパティの [user] 属性をクリックし、
をクリックします。プロパティ テキスト エディタが表示されます。
プロパティ テキスト エディタで {username} と入力し、[OK] をクリックします。
[task-assign] プロパティの [algorithm] 属性をクリックし、ドロップダウン リストの矢印をクリックして、[ToUser] を選択します。ソース コードは以下のようになります。
/**
* @jc:task-create request="{requestXml}" completion-due-business-date="2d" name="Approve Resolution"
* @jc:task-assign algorithm="ToUser" user="{username}"
*/
public void createAndAssignTask(XmlObject requestXml, String username);
このメソッドによって、作成から 2 営業日後に期日が設定されている、Approve Resolution という名前のタスクが作成されます。このタスク要求は requestXml 引数によって渡され、タスクが割り当てられるユーザは username 引数によって指定されます。
ソース コードで、void を String で置き換えてメソッド シグネチャを変更し、taskId を返すようにします。コードは以下のようになります。
public String createAndAssignTask(XmlObject requestXml, String username);
このメソッドで taskId が返されるようになります。
〔F7〕を押してアプリケーションをビルドします。これで、変更内容が JPD に組み込まれます。
ビジネス プロセスの変更
この節では、解決承認ビジネス プロセスにノードを追加します。
ビジネス プロセスが表示されない場合は、[アプリケーション] パネルで ResolutionApproval.jpd をダブルクリックします。
データ パレットで、名前の隣にある [+] をクリックして customTaskCtrl を展開し、String createAndAssignTask(XMObject, String username) を選択します。次にこのメソッドをデザイン ビューのビジネス プロセスまでドラッグし、Receive Resolution ノードの直後のプロセスにドロップします。
customTaskCtrl コントロールの入力として必要なデータ型は XML 型および Java String 型であるため、以下の手順ではトランスフォーメーション モードを使用します。また、Bug Resolution メッセージが格納される変数の型は XML (BugResolutionDocument) です。バグの割り当て先のユーザ名が Bug Resolution メッセージに含まれることと、BugResolutionDocument が BugResolution.xsd スキーマに対して有効であることに注意します。
注意 : WebLogic Integration には、異質なデータ型をマップするデータ マッピング ツールがあります。このツールを使って作成するデータ トランスフォーメーションは、データ トランスフォーメーション フォーマット (Data Transformation Format : DTF) ファイルに保存されます。
デザイン ビュー で createAndAssignTask ノードをダブルクリックしてノード ビルダを起動します。デフォルトでは、次の図に示すように、ノード ビルダを開くと、[一般的な設定] タブが表示されます。
[トランスフォーメーション] をクリックして、変数とコントロール メソッドのパラメータが予期するデータ型の間のトランスフォーメーションを定義するためのペインを開きます。
[手順 1] で [変数の選択] をクリックし、プロジェクトの変数を表示します。次に、resolutionXML (BugResolutionDocument) を選択します。これは、ビジネス プロセスの冒頭で Receive Resolution ノードに対して作成した変数です。
[手順 2] で [トランスフォーメーションの作成] をクリックしてトランスフォーメーション ツールを開きます。これによって、[ソース] ペインに BugResolution XML ドキュメントが表示され、[ターゲット] ペインに String が表示されます。
[ソース] ペインで bug-creator をクリックし、そのまま [ターゲット] ペインの username までドラッグします。マップ ペインで、bug-creator 要素と username 要素を結ぶ線が描画されます。
[ソース] ペインで resolutionXML をクリックし、そのまま [ターゲット] ペインの XmlObject までドラッグします。マップ ペインで、resolutionXML 要素と XmlObject 要素、および bug-creator 要素と XmlObject 要素を結ぶ線が描画されます。
[アプリケーション] パネルで ResolutionApproval.jpd をダブルクリックして、assignTaskToUser ノード ビルダに戻ります。
デフォルトでは、[データの受信] タブを開くと [変数の割り当て] ペインが表示されます。[コントロールが返す値] フィールドには、createAndAssignTask() メソッドから返されると予期されるデータ型 String が設定されています。
[割り当てる変数を選択します。] で、ドロップダウン リストの矢印をクリックし、[変数の新規作成...] を選択します。[変数を作成] ダイアログ ボックスに、変数の型として選択された Java が表示されます。
[変数を作成] ダイアログ ボックスで、次の作業を行います。
[変数名] フィールドに taskId と入力します。
[OK] をクリックします。新しい変数 (String 型) が作成され、[データの受信] タブに表示されます。
ノード ビルダのすべてのタブが完了済み
としてマークされます。
ノード ビルダの右上の [X] をクリックします。ノード ビルダが閉じます。
これで、このチュートリアルのタスク コントロールの作成とカスタマイズは完了しました。この節では、タスク コントロールを拡張して得られる機能について説明しました。カスタマイズの詳細については、『Worklist の使い方』の「高度なトピック」を参照するか、新しいコントロールを作成するときに生成されるデフォルトのタスク コントロールを調べてください。含まれているすべてのメソッドは、コントロール プロパティを使用して定義されており、変更することができます。コールバック メソッドもカスタマイズできます。
バグの解決過程で発生する他のイベントを処理できるようにビジネス プロセスを設計するには、「手順 5. タスク所有者からの解決承認の受信」を参照してください。