![]() ![]() ![]() ![]() |
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 注釈によって拡張可能です。一般的な拡張には、コールバック機能の実装とシステム クエリの実行があります。
TaskBaseControl
- TaskControl
および TaskBatchControl
の両方に共通する組み込みコントロール メソッドとアノテーションを提供します。 注意 : | このコントロールは、他のワークリスト コントロールの基本クラスです。ワークリスト クライアントで直接使用することはできません。 |
TaskControl
- 低レベル ワークリスト API を介して単一のタスク インスタンスの処理を簡素化します。このコントロールは TaskBaseControl
の拡張であるため、TaskBaseControl
によってサポートされているすべてのメソッドとアノテーションをサポートします。TaskBatchControl
- 低レベル ワークリスト API を介してバッチやタスク インスタンスのグループの処理を簡素化します。このコントロールは TaskBaseControl
の拡張であるため、TaskBaseControl
によってサポートされているすべてのメソッドとアノテーションをサポートします。
これらのコントロールは、ワークリスト API リソースの構築と初期化を簡素化します。これらのコントロールは拡張可能なコントロールです。一般的なコントロール インタフェースの機能を超える、新しいメソッドを含んだ拡張インタフェースを定義できます。これらのコントロールの新しいメソッドにアノテーションを付けて、それらのメソッドにワークリストの動作を付加することができます。
TaskControl
および TaskBatchControl
は、TaskControl
および TaskBatchControl
の両方に共通する組み込みコントロール メソッドとアノテーションを提供する TaskBaseControl
から拡張されます。以下の組み込みメソッドを提供します。
TaskBaseControl
では、コントロールレベルのアノテーションは使用できません。ただし、次のメソッドレベルのアノテーションを使用できます。これらのアノテーションを使用すると、コントロール拡張のメソッドに 1 つまたは複数のワークリストの動作を割り当てることができます。
TaskControl
は、ライフサイクルを通して、単一のタスク インスタンスへの低レベルのアクセスをカプセル化します。タスクのユーザ定義プロパティとシステム プロパティを設定するためのメソッドを提供し、タスクでアクションを実行します。
『Beehive Controls Development Guide』で説明しているとおり、TaskControl
はプログラム イベント サービスと宣言型イベント サービスを提供します。TaskControl
のコントロール拡張では、独自のイベント メソッドを定義し、アノテーションを使用してこれらのイベント メソッドにリスナ コンフィグレーション属性を付加できます。
TaskControl は TaskBaseControl
を拡張したものです (したがって、そのメソッドをすべて提供します) 。TaskControl
は次のメソッドも提供します。
TaskControl
コントロール インタフェースは、ワークリスト API の機能を完全に置き換えるものではありません。タスクの管理ニーズを満たすために、ユーザが適切なメソッドを追加して、TaskControl
の拡張を定義する必要があります。
TaskControl
拡張では、任意の数のメソッドを正式な Java 名で定義できます。ワークリストは、メソッド名に特別な意味を割り当てません。代わりに、TaskControl
拡張のメソッドに追加されたアノテーションにより、それらのメソッドに動作を付加します。特定のメソッドでは複数のアノテーションを定義できるため、1 回のメソッド呼び出しで複数の操作をタスク上で実行できます。さらに、アノテーションは、拡張のすべてのメソッドの (デフォルトまたはその他の) 動作を設定するコントロール拡張の最上位 (インタフェース宣言の前) に配置できます。
TaskControl 拡張に次のアノテーションを付けることができます。
TaskControl
は、TaskBaseControl
のメソッドレベルのアノテーションをすべて許可します。
TaskControl
は、以下のメソッドレベルのアノテーションを追加で定義します。
TaskBatchControl
では、タスク インスタンスのバッチへの低レベルのアクセスをカプセル化します。イベント サービスは提供しません (イベント サービスには、TaskControl
を使用する必要があります)。TaskBatchControl
のコントロール拡張のメソッドでは、メソッドが動作するバッチ、つまりタスク インスタンスのグループを定義する、カスタムのタスク セレクタを定義できます。
TaskBatchControl
は TaskBaseControl
の拡張であるため、TaskBaseControl
のすべてのシステム メソッドを提供します。追加のシステム メソッドを定義するものではありません。
TaskBatchControl のコントロールレベルのアノテーション
TaskBatchControl
は select
コントロールレベルのアノテーションをサポートします。コントロール拡張で、メソッドのデフォルト セレクタとして動作します。
TaskBatchControl のメソッドレベルのアノテーション
TaskBatchControl
は、以下のメソッドレベルのアノテーションをサポートします。
一部のアノテーションは、アノテーション内でパラメータ 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=1
と param2="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 アノテーションなどのメタ アノテーションは表示されません。特定のフィールドがパラメータをサポートしているかどうかについては、ワークリスト コントロールのメソッドレベル アノテーションの表を参照してください。 |
タスク コントロールとタスク バッチ コントロールを作成して、ビジネス プロセスで使用することができます。
タスク コントロールを作成するには、次のいずれかの方法を使用します。
タスク インスタンスの作成をトリガするタスク コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src
フォルダを選択して〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。 注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。 |
。
選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java
ファイルが表示されます。
注意 : | このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。 |
タスク コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src/<プロジェクト フォルダ名>
にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。 注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。 |
[Insert Control: タスク] ダイアログが表示されます。
。
選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java
ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。
タスク バッチ コントロールを作成するには、次のいずれかの方法を使用します。
タスク バッチ コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src
フォルダを選択して〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。 注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。 |
。
タスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク バッチ コントロール名>.java
ファイルが表示されます。
注意 : | このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。 |
タスク バッチ コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src/<プロジェクト フォルダ名>
にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。
。
選択したタスク プランに基づいてタスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java
ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。
タスク コントロール ジェネレータ TaskControlGenTask
を使用すると、タスク プランに Apache Beehive コントロールを作成できます。生成されたコントロールでは TaskControl を使用します。必要に応じて、開発者は生成されたコントロールのアノテーションを変更できます。
カスタム コントロールの一般的な情報については、Workshop for WebLogic Platform プログラマーズ ガイドの「カスタム コントロールの開発」を参照してください。
生成されたコントロールによって、タスク プランに定義されたコンストラクタ、手順、およびアクションが考慮されます。コントロールには、タスクの作成、タスクでのアクションの実行、タスク上のイベントへの応答、およびタスクに関するシステム プロパティ情報とユーザ定義プロパティ情報の取得と設定を行うための適切なメソッドが含まれます。
次の内容が確実に含まれるように、コントロール インタフェースを設計します。
単一の内部インタフェースを、タスク プランの非最終ステップごとに生成されたコントロール インタフェース内に生成する必要があります。
クライアントがステップ インタフェースをホストするコントロールへの参照を取得できるよう、ステップの内部インタフェースが単一の getTaskControl
メソッドを含んでいる必要があります。内部インタフェースは、ステップに定義された各アクションのメソッドも含んでいる必要があります。これらのメソッドにより、クライアントは作成から完了までのライフサイクルを通してタスクを処理することができます。ステップの内部インタフェース内のメソッド (getTaskControl
を除く) は、そのステップに許可されたアクションを表す必要があります。
Step
の enum の値。
このタイプのタスクを含めることができるステップを列挙するための内部 enum 定義です。この enum は、(生成したすべてのタスク コントロール拡張で生成された) メソッドのタスク インスタンスの現在のステップを示すために使用されます。
非最終ステップで生成されたすべての内部インタフェースでは、そのステップのインタフェースを取得するために、単一のゲッター メソッドを生成する必要があります。このインタフェースはいつでも (タスクの現在のステップとしてどのステップでも) 取得できます。ただし、このインタフェースで表されるステップがタスクの現在のステップである場合にのみ、このインタフェースのアクション メソッドが呼び出される必要があります。
タスク プランのすべてのプロパティで、1 つのゲッター メソッドとセッター メソッドだけが生成される必要があります。これらのメソッドは厳密に型指定されいる必要があり、また、メソッドが表すプロパティを表す名前が付いている必要があります。
onMyFirstStep()
、onMySecondStep()
など))TaskControl.Callback
インタフェースから継承される)
生成されたすべてのコントロール拡張で、タスク上のイベントに関連付けられているコールバック メソッドを定義する内部インタフェースが 1 つ必要です。このコールバック インタフェースは TaskControl.Callback
を拡張し、標準のワークリスト定義イベントのコールバックを継承している必要があります。
さらに、タスク プランの各ステップ (最終ステップを含む) にコールバック メソッドが生成されます。イベントの名前になっているステップにタスクが到達すると、これらのイベントが発動され、コールバックが呼び出される必要があります。
タスク コントロール ジェネレータは次の方法で実行できます。
Java クラス名は WL_HOME/integration/lib/worklist-client.jar
ファイルの com.bea.wli.worklist.build.TaskControlGen
です。
コマンドラインの Java クライアントからジェネレータを実行するには、次のように入力します。
java com.bea.wli.worklist.build.TaskControlGen <options>
.task ファイルの親ディレクトリを hostAppRootDir と指定する場合、default Java パッケージにコントロール インタフェースが配置される。指定しない場合は、そのタスク タイプの絶対パスが (生成されたコントロール インタフェースの Java パッケージ名の計算に) 使用される。
|
|
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 のタスク コントロールまたはタスク バッチ コントロールを使用して、タスク インスタンスを作成できます。このプロセスで、ビジネス プロセス ファイル、およびタスク コントロールまたはタスク バッチ コントロールを作成し、プロセスをデプロイする必要があります。必要に応じて、サンプル タスクを作成して、タスク インスタンスの作成を検証できます。
以下の方法で、ビジネス プロセスでワークリスト コントロールを使用できます。
ワークリスト コントロールを使用するビジネス プロセスを作成するには、以下の手順を実行します。
<Web プロジェクト名>\src
フォルダを右クリックし、[新規<プロセス名>.java
が作成されます。 Client Request
になります。
ビジネス プロセスにタスク インスタンス作成コンストラクタを呼び出すには、以下の手順を実行します。
<ワークリスト ビジネス プロセス名>.java
ファイルを右クリックし、[アプリケーションから開く|プロセス エディタ] オプションを選択します。[デザイン] タブに JPD が表示されており、プロセス パースペクティブを使用していることを確認します。
コントロールのコンストラクタ メソッドの名前が、タスク プランに定義されているコンストラクタの名前になり、メソッド シグネチャの最初の引数としてタスク名を取得します。コンストラクタ メソッドが、タスク プランのコンストラクタによって指定された開始ステップのステップ インタフェースを返します。
ビジネス プロセスをデプロイおよび検証するには、以下の手順を実行します。
[担当タスク] ポートレット ボックスに、コントロールを使用して JPD で作成されたタスク インスタンスが表示されます。
![]() ![]() ![]() |