Worklist の使い方

     前  次    新しいウィンドウで目次を開く     
ここから内容

ワークリスト コントロールの使用

Java コントロールは、Workshop フレームワークで管理されているサーバサイド コンポーネントです。コントロールは、ビジネス プロセスから直接呼び出し可能な Java インタフェースをエクスポーズします。つまり、コントロールは、ビジネス プロセスと他のリソース間のインタフェースです。

この節では、ビジネス ユーザとビジネス プロセスの統合をサポートするワークリストに装備されている組み込みコントロールについて説明します。内容は以下のとおりです。

 


ワークリスト コントロールについて

ワークリストには、TaskControl および TaskBatchControl の 2 つの Java コントロールが用意されています。JPD とこれらのワークリスト コントロールを使用すると、ヒューマン アクターと自動アクターの統合をサポートできます。自動アクターは JDP と対話し、ヒューマン アクターは Worklist User Portal と対話します。

このコントロールは、Workshop for WebLogic Platform の他の組み込みコントロールと同様に、コントロールのインスタンスをビジネス プロセスに追加して使用します。その後、ビジネス ユーザ ロジックを統合するビジネス プロセス内の箇所で、コントロールに対する操作を呼び出します。

基底のコントロールの実装で、対話の詳細の大部分を処理します。ビジネス プロセスは、Control Send ノードと Control Send with Return ノードを使用して、コントロールに対する操作を呼び出します。ビジネス プロセスは、コントロールからイベントが返されるのを待機している Control Receive ノードをブロックできます。つまり、Control Receive ノードは、コントロール コールバックによってトリガされます。ビジネス プロセスは、TaskControl または TaskBatchControl を使用してタスクを変更したり、(TaskControl を介して) ヒューマン アクターがタスクを変更するのを待機したりできます。ワークリスト コントロールは、Java 注釈によって拡張可能です。一般的な拡張には、コールバック機能の実装とシステム クエリの実行があります。

ワークリストは以下のコントロールを提供します。

これらのコントロールは、ワークリスト API リソースの構築と初期化を簡素化します。これらのコントロールは拡張可能なコントロールです。一般的なコントロール インタフェースの機能を超える、新しいメソッドを含んだ拡張インタフェースを定義できます。これらのコントロールの新しいメソッドにアノテーションを付けて、それらのメソッドにワークリストの動作を付加することができます。

TaskBaseControl

TaskControl および TaskBatchControl は、TaskControl および TaskBatchControl の両方に共通する組み込みコントロール メソッドとアノテーションを提供する TaskBaseControl から拡張されます。以下の組み込みメソッドを提供します。

TaskBaseControl では、コントロールレベルのアノテーションは使用できません。ただし、次のメソッドレベルのアノテーションを使用できます。これらのアノテーションを使用すると、コントロール拡張のメソッドに 1 つまたは複数のワークリストの動作を割り当てることができます。

TaskBaseControl のメソッドレベルのアノテーション

以下のさまざまなアノテーションがあります。

アノテーション名
説明
パラメータをサポートするフィールド
TaskCreate アノテーション
このアノテーションのコンフィグレーション値を使用して、このアノテーションが付加されているメソッドで新しいタスクを作成する。コントロールが TaskControl 拡張の場合、このアノテーションにより setTaskId() メソッドが呼び出される (新しく作成したタスクの ID を付与)。
name、comment、description、priority、owner、timeEstimate
TaskPlanID アノテーション
レジストリに新しいタスクのタスク プランを格納しているワークリスト システム インスタンスをホストするアプリケーションの ID。指定しない場合は、デフォルトで、このコントロール インスタンスを含むアプリケーションの名前が設定される。
path、version、worklistHostApplicationId
TaskUpdate81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのコンフィグレーション値を使用して、このアノテーションに付加されているメソッドでタスクを更新する。
 
ContainerHandleAnno アノテーション
 
type、subtype、instance
DateTimeSpec アノテーション
現在のロケールのデフォルトの日付と時間フォーマットでの絶対日付と絶対時間 (DateFormat.getDateTimeInstance().parse(). で解析される)。businessTime を同時に使用することはできない。businessTime を指定している場合、このアノテーションは無視される。

注意 : このフィールドはパラメータをサポートするため、解析済みまたは計算済みの java.util.Date インスタンスまたは java.util.Calendar インスタンスを保持するメソッド パラメータを指定できる。

absoluteTime
BusinessTimeAnno アノテーション
参照時間 (未知) から期間を定義することで、抽象的なビジネス日付とビジネス時間を表す。この期間は、必要に応じてビジネス カレンダーを使用して計算できるため、期間全体が特定の期間に一致する不連続な時間セグメントのセットを計算できる。このような最後のセグメントの終了時間は、この BusinessTime の有効なビジネス日付とビジネス時間として取得される。時間セグメントは、ビジネス カレンダーで「利用可能な」時間の境界内に入るように配置される。
duration、calendarName
StepTimeEstimate アノテーション
3d4h5m など、間隔文字列フォーマットの推定値。
stepName、estimate
AssignmentInstructionsAnno アノテーション
ヒューマン アクターにタスクを割り当てるための手順を記述する。
 
AssignmentInstructions81x アノテーション
ヒューマン アクターにタスクを割り当てるための手順を 8.1.x の用語で記述する。
 
AssigneeDefinitionAnno アノテーション
AssignmentInstructionsAnno から、割り当て対象のリストを定義するために使用する。
name
PropertyValue アノテーション
特定の名前を持つ単一のプロパティに単一の値を指定する。
name、value
TaskAssign アノテーション
このアノテーションのメソッドで、定義済みの割り当て手順を使用して 1 つまたは複数のタスク インスタンスの割り当てを促進する。
 
TaskAssign81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、定義済みの割り当て手順を使用してタスク インスタンスの割り当てを促進する。
 
TaskStart81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、互換 8.1.x のタスク プランに基づいて、タスクの申請ステップで Start アクションを実行する。
 
TaskStop81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、互換 8.1.x のタスク プランに基づいて、タスクの開始ステップで Stop アクションを実行する。
 
TaskTakeAction アノテーション
このアノテーションのメソッドで、このタスク インスタンスの現在のステップで特定のアクションを実行する。名前付きのアクションは、作業アクション、割り当てアクション、および戻りアクションの場合がある。
name
TaskGetData アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスから TaskData を取得する。このアノテーションに付加されているメソッドが TaskData オブジェクトを返す。
値を返すときに競合するため、このアノテーションは値を返す他のアノテーションと組み合わせて使用できない。メソッドの戻り値は 1 つしか指定できない。
このアノテーションに付加されているメソッドの戻り値の型が TaskData に割り当て互換でない場合、実行時に ClassCastException が送出される。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されているメソッドが型 TaskData[] の配列を返す。
 
TaskGetInfo アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスから TaskInfo を取得する。このアノテーションに付加されているメソッドが TaskInfo オブジェクトを返す。
値を返すときに競合するため、このアノテーションは値を返す他のアノテーションと組み合わせて使用できない。メソッドの戻り値は 1 つしか指定できない。
このアノテーションに付加されているメソッドの戻り値の型が TaskInfo に割り当て互換でない場合、実行時に ClassCastException が送出される。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されているメソッドが型 TaskInfo[] の配列を返す。
 
TaskGetPropertyNames81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスで設定されているすべてのプロパティの名前を取得する。このアノテーションに付加されているメソッドがプロパティの名前を含む String の配列を返す。
値を返すときに競合するため、このアノテーションは値を返す他のアノテーションと組み合わせて使用できない。メソッドの戻り値は 1 つしか指定できない。
このアノテーションに付加されているメソッドの戻り値の型が String[] に割り当て互換でない場合、実行時に ClassCastException が送出される。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されているメソッドは 2 次元の配列を返す。ここで、最初の次元は各タスク インスタンスのタスク ID (String として) を表す。2 番目の次元は、上記のプロパティ名の配列を表す。
 
TaskGetProperties アノテーション
このアノテーションのメソッドで、このコントロールのタスク インスタンスから名前付きプロパティの値を取得する。このアノテーションに付加されたメソッドが、指定したプロパティごとに、PropertyInstance オブジェクトの配列を 1 つ返す。プロパティが見つからない場合、不明なプロパティに対応する配列要素は null になる。
プロパティ名を 1 つだけ指定しているという特殊なケースで、メソッドの戻り値の型が配列型ではない場合、下記のルールに従ってプロパティ値 (配列ではない) が 1 つ返される。
メソッドの戻り値は 1 つしか指定できない (また、値を返すときにアノテーションが競合する) ため、このアノテーションは、値を返す他のアノテーションと組み合わせて使用できない。
このアノテーションに付加されたメソッドの戻り値の型が PropertyInstance と割り当て互換でない場合、このアノテーションで PropertyInstance の値オブジェクトが抽出される。値オブジェクト (割り当て互換の場合) は戻り値に保存される。そうでない場合は、実行時に ClassCastException が送出される。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されたメソッドが各タスク インスタンスのタスク ID を (String として) 示す TaskProperties オブジェクトの配列を返す。TaskProperties オブジェクトは、上記の (単一タスクの) プロパティ値の配列を表す。

注意 : 互換 8.1.x のタスク プランに基づいたタスクの場合、propertyNames で指定した名前はタスク プランに表示されない。これは、このタスク プランに関してのみ、互換性の理由で許可される。すべてのプロパティが Stging 型であると見なされる。

propertyNames、sysProperties
TaskGetRequest81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスから request プロパティの値を取得する。このアノテーションに付加されたメソッドが、特定のプロパティを表すオブジェクトを返す。このようなオブジェクトの型には次のものがある (優先度の高い順)。
  • メソッドの戻り値の型が TaskMessage と割り当て互換である場合、TaskMessage
  • 戻り値の型が byte[] の場合、プロパティのバイト データを含む byte[]
  • 戻り値の型が XmlObject と割り当て互換である場合、XMLBean
  • Java オブジェクト。
値を返すときに競合するため、このアノテーションは値を返す他のアノテーションと組み合わせて使用できない。メソッドの戻り値は 1 つしか指定できない。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されているメソッドは 2 次元の配列を返す。ここで、最初の次元は各タスク インスタンスのタスク ID (String として) を表す。2 番目の次元は、上記の指定のプロパティを表す。
 
TaskGetResponse81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスから response プロパティの値を取得する。このアノテーションに付加されたメソッドが、特定のプロパティを表すオブジェクトを返す。このようなオブジェクトの型には次のものがある (優先度の高い順)。
  • メソッドの戻り値の型が TaskMessage と割り当て互換である場合、TaskMessage
  • 戻り値の型が byte[] の場合、プロパティのバイト データを含む byte[]
  • 戻り値の型が XmlObject と割り当て互換である場合、XMLBean
  • Java オブジェクト。
値を返すときに競合するため、このアノテーションは値を返す他のアノテーションと組み合わせて使用できない。メソッドの戻り値は 1 つしか指定できない。
このコントロールが複数のタスク インスタンスを管理している場合、このアノテーションに付加されているメソッドは 2 次元の配列を返す。ここで、最初の次元は各タスク インスタンスのタスク ID (String として) を表す。2 番目の次元は、上記の指定のプロパティを表す。
 
TaskSetProperties アノテーション
このアノテーションのメソッドで、このコントロールのタスク インスタンスに特定のプロパティの値を設定する。このアノテーションに付加されたメソッドは、アノテーション値に組み合わせることができる引数を取得し、有効な実行時のプロパティ値を形成する。有効な実行時の値がそのプロパティのデータ型の値クラスと割り当て互換である場合、新しいプロパティ値として取得される。そうでなく String 型である場合は、データ型のシリアライズされたデフォルト値として処理され、プロパティの実際の実行時の値を取得するためにデシリアライズされる。これが失敗したり元の実行時の値が String でない場合、実行時に DataTypeException が送出される。メソッドで DataTypeException を送出できることを宣言している場合、例外が直接送出される。それ以外の場合は、IllegalArgumentException にラップされて送出される。
 
TaskSetProperty81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスに特定のプロパティの値を設定する。このアノテーションに付加されたメソッドは、アノテーション値に組み合わせることができる引数を取得し、有効な実行時のプロパティ値を形成する。

注意 : 互換 8.1.x のタスク プランに基づいたタスクの場合、name に指定されている名前はタスク プランに表示されない。これは、このタスク プランに関してのみ、互換性の理由で許可される。すべてのプロパティが String 型であると見なされる。

 
TaskSetRequest81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスに指定のプロパティの値を設定する。このアノテーションに付加されたメソッドは、アノテーション値に組み合わせることができる引数を取得し、有効な実行時のプロパティ値を形成する。有効な実行時の値が、指定のプロパティの TaskMessageValue 値の data として取得される。メソッドで DataTypeException を送出できることが宣言されている場合、値をシリアライズまたは保存するときに発生する DataTypeException が直接送出される。それ以外の場合は、IllegalArgumentException にラップされて送出される。
 
TaskSetResponse81x アノテーション
81x の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールのタスク インスタンスに指定のプロパティの値を設定する。このアノテーションに付加されたメソッドは、アノテーション値に組み合わせることができる引数を取得し、有効な実行時のプロパティ値を形成する。有効な実行時の値が、指定のプロパティの TaskMessageValue 値の data として取得される。メソッドで DataTypeException を送出できることが宣言されている場合、値をシリアライズまたは保存するときに発生する DataTypeException が直接送出される。それ以外の場合は、IllegalArgumentException にラップされて送出される。
 
TaskRemoveProperties81x アノテーション
8.1/8.5 の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスの名前付きプロパティの設定を解除する。
 
TaskSetError アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスにエラー状態を設定する。このアノテーションを使用するメソッドは、タスク処理時のテクニカル エラーを示す場合にのみ使用される。ビジネス エラーは、このタスクのタスク タイプのステップおよびアクション モデルで処理する必要がある。
message
TaskClaim アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを申請する。
claimant
TaskClaim81x アノテーション
8.1/8.5 の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを申請し、タスクの割り当てステップで申請アクションを実行する。
非推奨。代わりに、カスタム タスク プランおよび TaskTakeAction アノテーションを使用する。
 
TaskReturn アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを返却する。
 
TaskReturn81x アノテーション
8.1/8.5 の下位互換にのみ使用。
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを返却し、タスクの申請ステップまたは開始ステップで戻りアクションを実行する。
非推奨。代わりに、カスタム タスク プランおよび TaskTakeAction アノテーションを使用する。
 
TaskSuspend アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを中断する。
 
TaskResume アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを再開する。
 
TaskComplete アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを完了する。
 
TaskAbort アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを中止する。
 
TaskDelete アノテーション
このアノテーションのメソッドで、このコントロールの 1 つまたは複数のタスク インスタンスを削除する。
 

タスク コントロール

TaskControl は、ライフサイクルを通して、単一のタスク インスタンスへの低レベルのアクセスをカプセル化します。タスクのユーザ定義プロパティとシステム プロパティを設定するためのメソッドを提供し、タスクでアクションを実行します。

『Beehive Controls Development Guide』で説明しているとおり、TaskControl はプログラム イベント サービスと宣言型イベント サービスを提供します。TaskControl のコントロール拡張では、独自のイベント メソッドを定義し、アノテーションを使用してこれらのイベント メソッドにリスナ コンフィグレーション属性を付加できます。

TaskControl は TaskBaseControl を拡張したものです (したがって、そのメソッドをすべて提供します) 。TaskControl は次のメソッドも提供します。

TaskControl のメソッドレベルのアノテーション

TaskControl コントロール インタフェースは、ワークリスト API の機能を完全に置き換えるものではありません。タスクの管理ニーズを満たすために、ユーザが適切なメソッドを追加して、TaskControl の拡張を定義する必要があります。

TaskControl 拡張では、任意の数のメソッドを正式な Java 名で定義できます。ワークリストは、メソッド名に特別な意味を割り当てません。代わりに、TaskControl 拡張のメソッドに追加されたアノテーションにより、それらのメソッドに動作を付加します。特定のメソッドでは複数のアノテーションを定義できるため、1 回のメソッド呼び出しで複数の操作をタスク上で実行できます。さらに、アノテーションは、拡張のすべてのメソッドの (デフォルトまたはその他の) 動作を設定するコントロール拡張の最上位 (インタフェース宣言の前) に配置できます。

TaskControl 拡張に次のアノテーションを付けることができます。

TaskControl は、TaskBaseControl のメソッドレベルのアノテーションをすべて許可します。

TaskControl は、以下のメソッドレベルのアノテーションを追加で定義します。

表 4-1 TaskControl のメソッドレベルのアノテーション
アノテーション名
説明
TaskPlanAnno アノテーション
コントロールに関連付けるタスク プランを定義する。TaskControl では、このアノテーションまたは TaskCreate アノテーションが必要。
TaskEventAnno アノテーション
コールバック メソッドのみ。コールバック メソッドで特定のタイプのイベントにサブスクリプションを記述し、そのコールバックのメソッド シグネチャをワークリスト イベントのフレームワークに定義できる。このアノテーションに指定されているコンフィグレーションに基づいて、イベントのヘッダ情報をコールバック メソッドの個々のパラメータに渡すことができる。さらに、完全な TaskEvent インスタンスも渡すことができる。

TaskBatch コントロール

TaskBatchControl では、タスク インスタンスのバッチへの低レベルのアクセスをカプセル化します。イベント サービスは提供しません (イベント サービスには、TaskControl を使用する必要があります)。TaskBatchControl のコントロール拡張のメソッドでは、メソッドが動作するバッチ、つまりタスク インスタンスのグループを定義する、カスタムのタスク セレクタを定義できます。

TaskBatchControlTaskBaseControl の拡張であるため、TaskBaseControl のすべてのシステム メソッドを提供します。追加のシステム メソッドを定義するものではありません。

TaskBatchControl のコントロールレベルのアノテーション

TaskBatchControlselect コントロールレベルのアノテーションをサポートします。コントロール拡張で、メソッドのデフォルト セレクタとして動作します。

TaskBatchControl のメソッドレベルのアノテーション

TaskBatchControl は、以下のメソッドレベルのアノテーションをサポートします。

アノテーション名
説明
パラメータをサポートするフィールド
TaskQueryAnno アノテーション
バッチで処理するタスク インスタンスのフェッチに使用するクエリを定義する
queryParamName と propertyValue を除くすべて

パラメータ値とアノテーション値の結合

一部のアノテーションは、アノテーション内でパラメータ markers をサポートするため、実行時にメソッドの呼び出しに指定されているパラメータ値で置換できます。これにより、動的データをアノテーションの静的データに結合できます。

実行時のパラメータ マーカをサポートするアノテーションは、@SupportsParameters アノテーションでマークされます。

public @interface @SupportsParameters {
    String markerBegin() default "{";
    String markerEnd() default "}";
}

String 型のすべてのアノテーション フィールドに @SupportsParameters アノテーションを付けることができます。アノテーションの文字列値のアンエスケープ パラメータ マーカは置き換え可能なパラメータとして解釈されます。以下に例を示します。

public @interface TestAnno {
    @SupportsParameters
    String hasParams();
    String noParams();
}

および

public interface MyTest {
    @TestAnno(hasParams="Param1 has value {param1} and param2 = {param2}")
    public void testHasParams(int param1, String param2);
    @TestAnno(noParams="Param1 has value {param1} and param2 = {param2}")
    public void testNoParams(int param1, String param2);
}

この場合、param1=1param2="Two" を持つ testHasParams を呼び出すことで、次の hasParams の有効な実行時の値が生成されます。

Param1 has value 1 and param2 = Two

一方、param1=1 および param2="Two" を持つ noParams を呼び出すことで、次の noParams の有効な実行時の値が生成されます。

Param1 has value {param1} and param2 = {param2}

注意 : Javadoc では、@SupportsParameters アノテーションなどのメタ アノテーションは表示されません。特定のフィールドがパラメータをサポートしているかどうかについては、ワークリスト コントロールのメソッドレベル アノテーションの表を参照してください。

 


ワークリスト コントロールの作成

タスク コントロールとタスク バッチ コントロールを作成して、ビジネス プロセスで使用することができます。

タスク コントロールの作成

タスク コントロールを作成するには、次のいずれかの方法を使用します。

[ウィザードを選択] ダイアログを使用したタスク コントロールの作成

タスク インスタンスの作成をトリガするタスク コントロールを作成するには、以下の手順を実行します。

  1. <Web プロジェクト名>/src フォルダを選択して〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。
  2. 注意 : Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。
  3. WebLogic Integration コントロールの横にある [テスト フォーム] ページのビジネス プロセス をクリックして [タスク] を選択します。[次へ] をクリックします。[Insert Control: タスク] ダイアログの [コントロールの作成] ページが表示されます。
  4. 図 4-1 タスク コントロールの作成


    タスク コントロールの作成

  5. [名前] フィールドにタスク コントロールの名前を入力します
  6. [次へ] をクリックします。[Insert Control: タスク] ダイアログの [タスク プラン] ページが表示されます。
  7. [参照] をクリックしてタスク プランを検索します。[タスク プランの選択] ダイアログが表示されます。
  8. 図 4-2 タスク プランの選択


    タスク プランの選択

  9. プランを選択し、[OK] をクリックして続行します。
  10. [終了] をクリックし、ビジネス プロセスに新しいタスク コントロールを追加します。
  11. [ファイルArrow symbol保管] を選択するか、〔Ctrl〕+〔S〕を使用して JPD ファイルを保存します。

選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。

注意 : このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。

プロセス パースペクティブのデータ パレットを使用したタスク コントロールの作成

タスク コントロールを作成するには、以下の手順を実行します。

  1. プロセス パースペクティブが使用できることを確認します。詳細については、「パースペクティブの選択」を参照してください。
  2. <Web プロジェクト名>/src/<プロジェクト フォルダ名> にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。
  3. 注意 : Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。
  4. [データ パレット] ビューの下矢印をクリックします。
  5. 図 4-3 [データ パレット] ビュー


    [データ パレット] ビュー

  6. [Integration コントロール│タスク] を選択します
  7. 図 4-4 Integration コントロール


    Integration コントロール

    [Insert Control: タスク] ダイアログが表示されます。

    図 4-5 ワークリスト コントロールの挿入


    ワークリスト コントロールの挿入

  8. フィールド名を入力し、ビジネス プロセスにコントロールを挿入する位置を指定します。必要に応じて、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェックボックスをオンにして、[次へ] をクリックします。[コントロールの作成] ダイアログ (図 4-1) が表示されます。
  9. [名前] フィールドにタスク コントロールの名前を入力します
  10. [次へ] をクリックします。[Insert Control: タスク] ダイアログの [タスク プラン] ページが表示されます。
  11. [参照] をクリックしてタスク プランを検索し、[OK] をクリックして続行します。
  12. [終了] をクリックし、ビジネス プロセスに新しいタスク コントロールを追加します。
  13. [ファイルArrow symbol保管] を選択するか、〔Ctrl〕+〔S〕を使用して JPD ファイルを保存します。

選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。

図 4-6 [データ パレット] ビューに表示されたワークリスト コントロール

[データ パレット] ビューに表示されたワークリスト コントロール

タスク バッチ コントロールの作成

タスク バッチ コントロールを作成するには、次のいずれかの方法を使用します。

[ウィザードを選択] ダイアログを使用したタスク バッチ コントロールの作成

タスク バッチ コントロールを作成するには、以下の手順を実行します。

  1. <Web プロジェクト名>/src フォルダを選択して〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。
  2. 注意 : Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。
  3. WebLogic Integration コントロールの横にある [データ パレット] ビューに表示されたワークリスト コントロール をクリックして [タスク バッチ] を選択します。[次へ] をクリックします。[Insert Control: タスク バッチ] ダイアログの [コントロールの作成] ページが表示されます。
  4. [名前] フィールドにタスク バッチ コントロールの名前を入力します
  5. [次へ] をクリックします。[Insert Control: タスク バッチ] ダイアログの [タスク プランの選択] ページが表示されます。
  6. 図 4-7 タスク プランの選択


    タスク プランの選択

  7. 必要なタスク プランを選択して [終了] をクリックします。
  8. [ファイルArrow symbol保管] を選択するか、〔Ctrl〕+〔S〕を使用して JPD ファイルを保存します。

タスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク バッチ コントロール名>.java ファイルが表示されます。

注意 : このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。

プロセス パースペクティブのデータ パレットを使用したタスク バッチ コントロールの作成

タスク バッチ コントロールを作成するには、以下の手順を実行します。

  1. プロセス パースペクティブが使用できることを確認します。詳細については、「パースペクティブの選択」を参照してください。
  2. <Web プロジェクト名>/src/<プロジェクト フォルダ名> にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。
  3. [データ パレット] ビューの下矢印をクリックします (図 4-3)。
  4. [Integration コントロールArrow symbolタスク バッチ] を選択します (図 4-4)。[Insert control: タスク バッチ] ダイアログが表示されます。
  5. フィールド名を入力し、ビジネス プロセスにコントロールを挿入する位置を指定します。必要に応じて、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェックボックスをオンにして、[次へ] をクリックします。[コントロールの作成] ダイアログが表示されます。
  6. [名前] フィールドにタスク バッチ コントロールの名前を入力します
  7. [次へ] をクリックします。[タスク プランの選択] ダイアログが表示されます。
  8. 必要なタスク プランを選択します。
  9. [終了] をクリックし、ビジネス プロセスに新しいタスク バッチ コントロールを追加します。
  10. [ファイルArrow symbol保管] を選択するか、〔Ctrl〕+〔S〕を使用して JPD ファイルを保存します。

選択したタスク プランに基づいてタスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。

タスク コントロール ジェネレータを使用したワークリスト コントロールの作成

タスク コントロール ジェネレータ TaskControlGenTask を使用すると、タスク プランに Apache Beehive コントロールを作成できます。生成されたコントロールでは TaskControl を使用します。必要に応じて、開発者は生成されたコントロールのアノテーションを変更できます。

カスタム コントロールの一般的な情報については、Workshop for WebLogic Platform プログラマーズ ガイドの「カスタム コントロールの開発」を参照してください

生成されたコントロールによって、タスク プランに定義されたコンストラクタ、手順、およびアクションが考慮されます。コントロールには、タスクの作成、タスクでのアクションの実行、タスク上のイベントへの応答、およびタスクに関するシステム プロパティ情報とユーザ定義プロパティ情報の取得と設定を行うための適切なメソッドが含まれます。

次の内容が確実に含まれるように、コントロール インタフェースを設計します。

タスク コントロール ジェネレータの実行

タスク コントロール ジェネレータは次の方法で実行できます。

Java クライアントまたはコマンド ラインからのタスク コントロール ジェネレータの実行

Java クラス名は WL_HOME/integration/lib/worklist-client.jar ファイルの com.bea.wli.worklist.build.TaskControlGen です。

コマンドラインの Java クライアントからジェネレータを実行するには、次のように入力します。

java com.bea.wli.worklist.build.TaskControlGen <options>

次の表にオプションを示します。

表 4-2 タスク コントロール ジェネレータを実行するためのコマンドライン オプション
オプション名
説明
-taskPlan
コンパイルする .task ファイルの場所。必須。
-outputDir
生成されたコントロール ソースを出力するディレクトリ。必須。
-hostAppRootDir
.task ファイルを保持する EAR のルート ディレクトリ。省略可能。
Workshop の Java EE EAR プロジェクトの EARContent ディレクトリでも可能。このルートは、EAR のルートに関連するタスク プランの相対パスを計算するために使用される。同様に、この相対パスは、生成されたコントロール インタフェース ファイルのパッケージ名のデフォルト計算に使用される。.task ファイルの親ディレクトリを hostAppRootDir と指定する場合、default Java パッケージにコントロール インタフェースが配置される。指定しない場合は、そのタスク タイプの絶対パスが (生成されたコントロール インタフェースの Java パッケージ名の計算に) 使用される。
-packageName
生成されたソースのパッケージ名。省略可能。
パッケージ名を指定していない場合、パッケージ名はタスク プランのパスから派生する。パッケージは、パス内の「/」を「.」で置換してスペースを削除し、無効なパッケージの文字を「_」で置換することで計算される。
-interfaceName
インスタンスの名前。省略可能。
この値を指定していない場合、インスタンス名はタスク プランのパスから派生する。コントロール インタフェース名は、タスク プランのパスの最後のステップから取得される。ここで、スペースは削除され、無効なクラス名の文字は「_」で置換される。

Ant からのタスク コントロール ジェネレータの実行

Ant のタスク クラス名は WL_HOME/integration/lib/worklist-client.jar ファイルの com.bea.wli.worklist.build.TaskControlGenTask です。

注意 : task-control-gen という taskdef を使用してタスクをインポートすることをお勧めします。

次の Ant スクリプトで TaskControlGenTask の使用方法について説明します。

<!-- 最初のプロパティを設定します -->
<property environment="env"/>
<property name="wl.home" value="${env.WL_HOME}"/> 
<property name="worklist-client.jar"
location="${wl.home}/integration/lib/worklist-client.jar"/>
<property name="build.dir" value="<some dir to hold build output>"/>
<!-- Ant にタスクを定義します -->
<taskdef name="task-control-gen"
classname="com.bea.wli.worklist.build.TaskControlGenTask"
classpath="${worklist-client.jar}"/>
<!-- コントロール ソース ファイルを構築する場所を指定してください -->
<mkdir dir="${build.dir}/controlsrc"/>
<task-control-gen
taskPlanFile="<see command-line section -taskPlan arg>"
outputDir="${build.dir}/controlsrc"
hostAppRootDir="<see command-line section -hostAppRootDir arg>"
packageName="<see command-line section -packageName arg">
interfaceName="<see command-line section -interfaceName arg">
<classpath>
<!-- TaskControlGen が必要なクラスを参照できるよう、これを追加してください。独自のクラスも追加できます (必要に応じて XMLBean クラスなど) -->
<pathelement location="${worklist-client.jar}"/>
</classpath>
</task-control-gen>

タスク コントロールおよびタスク バッチ コントロールの手動作成

タスク コントロール ジェネレータ ウィザードとワークリスト コントロール ウィザードは、ユーザが一般に必要とする方法で、[ワークリスト コントロールの作成] へのショートカットとして表示する必要があります。ただし、必要に応じて、TaskControl 拡張および TaskBatchControl 拡張を手動で作成できます。これらの拡張の要件は、これらの拡張が TaskControl または TaskBatchControl の拡張であり、インタフェース レベルで @ControlExtension でマークされていることだけです。

これらのコントロール拡張に任意の数のメソッドを追加し、特定のタイプのコントロールでサポートされているアノテーションを使用してマーク付けできます。以下のような場合には、カスタムのコントロール拡張を作成するのが適切です。

これらのいずれの場合でも、ワークリスト ツールでコントロールの生成を開始し、必要に応じてコントロール インタフェースを手動で更新できます。

 


ビジネス プロセスでのタスク コントロールおよびタスク バッチ コントロールの使用

この節では、ビジネス プロセス ファイル (JPD) とワークリスト コントロールを使用して、ヒューマン アクターと自動アクターの統合をサポートする方法について説明します。自動アクターは JPD と対話し、ヒューマン アクターは Worklist User Portal と対話します。

このコントロールは、Workshop for WebLogic Platform の他の組み込みコントロールと同様に、コントロールのインスタンスをビジネス プロセスに追加して使用します。その後、ビジネス ユーザ ロジックを統合するビジネス プロセス内の箇所で、コントロールに対する操作を呼び出します。

タスク コントロールまたはタスク バッチ コントロールとビジネス プロセス間の対話を設計するには、ビジネス ロジックをサポートするためにビジネス プロセスから呼び出す、コントロールのメソッドを決める必要があります。

WebLogic Workshop の他のコントロールとビジネス プロセスの間の対話を設計するのと同じ方法で、ワークリスト コントロール メソッドをビジネス プロセスの適切なコントロール ノード (Control Send、Control Receive、および Control Send with Return) にバインドできます。その場合、データ パレットのコントロール メソッドを、デザイン ビュー上でロジックを設計するビジネス プロセス内の箇所までドラッグ アンド ドロップするだけでバインドできます。タスク コントロールまたはタスク バッチ コントロールのインスタンスを作成したら、ビジネス プロセスからメソッドを呼び出してタスク インスタンスを操作できます。ビジネス プロセスでは、タスク インスタンスからコールバックを受け取るのを待つこともできます。タスク コントロールおよびタスク バッチ コントロールを拡張すると、カスタマイズしたメソッドとコールバックを追加できます。

JPD のタスク コントロールまたはタスク バッチ コントロールを使用して、タスク インスタンスを作成できます。このプロセスで、ビジネス プロセス ファイル、およびタスク コントロールまたはタスク バッチ コントロールを作成し、プロセスをデプロイする必要があります。必要に応じて、サンプル タスクを作成して、タスク インスタンスの作成を検証できます。

以下の方法で、ビジネス プロセスでワークリスト コントロールを使用できます。

ビジネス プロセスの作成

ワークリスト コントロールを使用するビジネス プロセスを作成するには、以下の手順を実行します。

  1. [パッケージ・エクスプローラー] ビューで <Web プロジェクト名>\src フォルダを右クリックし、[新規Arrow symbolフォルダー] を選択します。[新規フォルダー] ダイアログが表示されます。
  2. ビジネス プロセス ファイルを格納するフォルダの名前を入力します。
  3. [終了] をクリックします。
  4. プロジェクト フォルダを選択し、〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。
  5. [WebLogic IntegrationArrow symbolプロセス] を選択して [次へ] をクリックします。[新しいプロセス] ダイアログが表示されます。
  6. ビジネス プロセス ファイルの名前を入力します。プロセス フォルダに JPD プロセス ファイル <プロセス名>.java が作成されます。
  7. [終了] をクリックしてプロセスを終了します。IDE ブラウザのデザイン ビューに新しい JPD が表示されます。
  8. 図 4-8 ワークリスト コントロールを使用した新しい JPD


    ワークリスト コントロールを使用した新しい JPD

  9. [ダブルクリックして開始イベントを選択] (開始ノード) をダブルクリックします。ビジネス プロセスを呼び出す方法を選択する画面が表示されます。
  10. 図 4-9 ビジネス プロセスの呼び出し


    ビジネス プロセスの呼び出し

  11. ビジネス プロセスを呼び出す方法を選択し、[閉じる] をクリックします。たとえば、[クライアント要求で呼び出す] を選択します。JPD デザイン ビューが更新され、開始ノードの名前が Client Request になります。
  12. [クライアント要求] ノードをダブルクリックしてコンフィグレーションします。
  13. 図 4-10 クライアント要求のコンフィグレーション


    クライアント要求のコンフィグレーション

  14. [一般的な設定] タブで [追加] をクリックして、パラメータを定義するためのダイアログ ボックスを表示します。パラメータを作成し、タスクに必要なユーザ プロパティに基づいてパラメータの型をコンフィグレーションします。
  15. 図 4-11 パラメータの追加


    パラメータの追加

  16. [データの受信] タブをクリックして新しい変数を作成し、前の手順で作成した対応するパラメータに割り当てます。
  17. 図 4-12 パラメータへの変数の割り当て


    パラメータへの変数の割り当て

  18. [閉じる] をクリックして続行します。

ビジネス プロセスからのタスク プラン コンストラクタの呼び出し

ビジネス プロセスにタスク インスタンス作成コンストラクタを呼び出すには、以下の手順を実行します。

  1. [パッケージ・エクスプローラー] ペインの <ワークリスト ビジネス プロセス名>.java ファイルを右クリックし、[アプリケーションから開く|プロセス エディタ] オプションを選択します。[デザイン] タブに JPD が表示されており、プロセス パースペクティブを使用していることを確認します。
  2. IDE の右下にある [データ パレット] ビューで Controls フォルダの <コントロール名> フォルダに移動して、ビジネス プロセスで呼び出すメソッドを選択します。
  3. コントロールのコンストラクタ メソッドの名前が、タスク プランに定義されているコンストラクタの名前になり、メソッド シグネチャの最初の引数としてタスク名を取得します。コンストラクタ メソッドが、タスク プランのコンストラクタによって指定された開始ステップのステップ インタフェースを返します。

    図 4-13 コントロール メソッドの選択


    コントロール メソッドの選択

  4. [クライアント要求] ノードと [完了] ノードの間にある JPD に、選択したメソッドをドラッグ アンド ドロップします。
  5. メソッド (デザイン ビューにノードとして表示) をダブルクリックし、[データの送信] プロパティをコンフィグレーションします。
  6. 図 4-14 コントロール パラメータを使用したデータの送信変数のマップ


    コントロール パラメータを使用したデータの送信変数のマップ

  7. ビジネス プロセスの変数にメソッドのデータの受信変数をマップします。[データの受信] をクリックし、コントロール メソッド呼び出しの戻り値の特定のデータ型を受け入れてから、返されたステップ インタフェースを保持する変数名を指定します。
  8. 図 4-15 データの受信変数のマップ


    データの受信変数のマップ

  9. 必要に応じて、手順 5 で返されたステップ インタフェースを使用してタスクでアクションを実行します。プロセスの設計時には、ステップ インタフェースを異なるコントロールとしては処理しません。そのため、ステップ インタフェースのメソッドを呼び出すには、実行ノードを使用する必要があります。これらのメソッドを呼び出すには、コードを手動で作成する必要があります。呼び出すメソッドごとに 1 つの実行ノードを設定するように選択したり、多くのメソッド呼び出しを 1 つの実行ノードにグループ化することもできます。「呼び出すメソッドごとに 1 つの実行ノードを設定する」方法の利点は、プロセス フロー グラフを表示するだけで、タスク上で呼び出されるメソッドをグラフィカルに表示できることです。
  10. [閉じる] をクリックして JPD を保存します。

ビジネス プロセスのデプロイおよび検証

ビジネス プロセスをデプロイおよび検証するには、以下の手順を実行します。

  1. [パッケージ・エクスプローラー] ビューで JPD を選択し、[実行Arrow symbolサーバーで実行] メニュー オプションを選択します。
  2. デプロイが正常に完了すると、IDE ブラウザに JPD プロセス ページが表示されます。

  3. プロセス ブラウザの [テスト フォーム] タブをクリックします。
  4. 図 4-16 [テスト フォーム] ページのビジネス プロセス


    [テスト フォーム] ページのビジネス プロセス

  5. 対応するフィールドにテスト値を入力します。
  6. [クライアント要求] をクリックし、テスト値を使用してプロセスを実行します。正常に実行されると、[テスト フォーム] タブが更新されます。
  7. Worklist User Portal セッションを起動し、ユーザ資格情報を使用してログインします。

[担当タスク] ポートレット ボックスに、コントロールを使用して JPD で作成されたタスク インスタンスが表示されます。


  ページの先頭       前  次