|
Java コントロールは、Oracle Workshop for WebLogic フレームワークで管理されているサーバサイド コンポーネントです。コントロールは、ビジネス プロセスから直接呼び出し可能な Java インタフェースをエクスポーズします。つまり、コントロールは、ビジネス プロセスと他のリソース間のインタフェースです。
この節では、ビジネス ユーザとビジネス プロセスの統合をサポートするワークリストに装備されている組み込みコントロールについて説明します。内容は以下のとおりです。
ワークリストには、TaskControl および TaskBatchControl の 2 つの Java コントロールが用意されています。ビジネス プロセスとこれらのワークリスト コントロールを使用すると、ヒューマン アクターと自動アクターの統合をサポートできます。自動アクターは JPD と対話し、ヒューマン アクターは Worklist User Portal と対話します。
このコントロールは、Oracle Workshop for WebLogic の他の組み込みコントロールと同様に、コントロールのインスタンスをビジネス プロセスに追加して使用します。その後、ビジネス ユーザ ロジックを統合するビジネス プロセス内の箇所で、コントロールに対する操作を呼び出します。
基底のコントロールの実装で、対話の詳細の大部分を処理します。ビジネス プロセスは、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 アプリケーション」を参照してください。 |
をクリックして [タスク] を選択します。[次へ] をクリックします。[Insert Control: タスク] ダイアログの [コントロールの作成] ページが表示されます。 。
選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。
| 注意 : | このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。 |
タスク コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src/<プロジェクト フォルダ名> にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。 | 注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。 |
[Insert Control: タスク] ダイアログが表示されます。
。
保管] を選択するか、〔Ctrl〕+〔S〕を使用して JPD ファイルを保存します。
選択したタスク プランに基づいてタスク コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。
![[データ パレット] ビューに表示されたワークリスト コントロール](wwimages/controls_data_palette.gif)
タスク バッチ コントロールを作成するには、次のいずれかの方法を使用します。
タスク バッチ コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src フォルダを選択して〔Ctrl〕+〔N〕を押します。[ウィザードを選択] ダイアログが表示されます。 | 注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、「Worklist アプリケーション」を参照してください。 |
をクリックして [タスク バッチ] を選択します。[次へ] をクリックします。[Insert Control: タスク バッチ] ダイアログの [コントロールの作成] ページが表示されます。。
タスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク バッチ コントロール名>.java ファイルが表示されます。
| 注意 : | このコントロールのメソッドを使用するには、[パッケージ・エクスプローラー] ビューから [データ パレット] ビューに .java ファイルをドラッグ アンド ドロップします。 |
タスク バッチ コントロールを作成するには、以下の手順を実行します。
<Web プロジェクト名>/src/<プロジェクト フォルダ名> にあるビジネス プロセス ファイルを選択し、プロセス エディタで開きます。 。
選択したタスク プランに基づいてタスク バッチ コントロールが作成されます。[パッケージ・エクスプローラー] ビューに <タスク コントロール名>.java ファイルが表示されます。[データ パレット] ビューにも新しいコントロールが表示されます。
タスク コントロール ジェネレータ TaskControlGenTask を使用すると、タスク プランに Apache Beehive コントロールを作成できます。生成されたコントロールでは TaskControl を使用します。必要に応じて、開発者は生成されたコントロールのアノテーションを変更できます。
カスタム コントロールの詳細については、「カスタム コントロールの開発」を参照してください。
生成されたコントロールによって、タスク プランに定義されたコンストラクタ、手順、およびアクションが考慮されます。コントロールには、タスクの作成、タスクでのアクションの実行、タスク上のイベントへの応答、およびタスクに関するシステム プロパティ情報とユーザ定義プロパティ情報の取得と設定を行うための適切なメソッドが含まれます。
次の内容が確実に含まれるように、コントロール インタフェースを設計します。
単一の内部インタフェースを、タスク プランの非最終ステップごとに生成されたコントロール インタフェース内に生成する必要があります。
クライアントがステップ インタフェースをホストするコントロールへの参照を取得できるよう、ステップの内部インタフェースが単一の 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 と対話し、ヒューマン アクターは Oracle Worklist User Portal と対話します。
このコントロールは、Oracle Workshop for WebLogic の他の組み込みコントロールと同様に、コントロールのインスタンスをビジネス プロセスに追加して使用します。その後、ビジネス ユーザ ロジックを統合するビジネス プロセス内の箇所で、コントロールに対する操作を呼び出します。
タスク コントロールまたはタスク バッチ コントロールとビジネス プロセス間の対話を設計するには、ビジネス ロジックをサポートするためにビジネス プロセスから呼び出す、コントロールのメソッドを決める必要があります。
Oracle Workshop for WebLogic の他のコントロールとビジネス プロセスの間の対話を設計するのと同じ方法で、ワークリスト コントロール メソッドをビジネス プロセスの適切なコントロール ノード (Control Send、Control Receive、および Control Send with Return) にバインドできます。その場合、データ パレットのコントロール メソッドを、デザイン ビュー上でロジックを設計するビジネス プロセス内の箇所までドラッグ アンド ドロップするだけでバインドできます。タスク コントロールまたはタスク バッチ コントロールのインスタンスを作成したら、ビジネス プロセスからメソッドを呼び出してタスク インスタンスを操作できます。ビジネス プロセスでは、タスク インスタンスからコールバックを受け取るのを待つこともできます。タスク コントロールおよびタスク バッチ コントロールを拡張すると、カスタマイズしたメソッドとコールバックを追加できます。
JPD のタスク コントロールまたはタスク バッチ コントロールを使用して、タスク インスタンスを作成できます。このプロセスで、ビジネス プロセス ファイル、およびタスク コントロールまたはタスク バッチ コントロールを作成し、プロセスをデプロイする必要があります。必要に応じて、サンプル タスクを作成して、タスク インスタンスの作成を検証できます。
以下の方法で、ビジネス プロセスでワークリスト コントロールを使用できます。
ワークリスト コントロールを使用するビジネス プロセスを作成するには、以下の手順を実行します。
<Web プロジェクト名>\src フォルダを右クリックし、[新規
フォルダー] を選択します。[新規フォルダー] ダイアログが表示されます。 <プロセス名>.java が作成されます。 Client Request になります。
ビジネス プロセスにタスク インスタンス作成コンストラクタを呼び出すには、以下の手順を実行します。
<ワークリスト ビジネス プロセス名>.java ファイルを右クリックし、[アプリケーションから開く|プロセス エディタ] オプションを選択します。[デザイン] タブに JPD が表示されており、プロセス パースペクティブを使用していることを確認します。
コントロールのコンストラクタ メソッドの名前が、タスク プランに定義されているコンストラクタの名前になり、メソッド シグネチャの最初の引数としてタスク名を取得します。コンストラクタ メソッドが、タスク プランのコンストラクタによって指定された開始ステップのステップ インタフェースを返します。
ビジネス プロセスをデプロイおよび検証するには、以下の手順を実行します。
[担当タスク] ポートレット ボックスに、コントロールを使用して JPD で作成されたタスク インスタンスが表示されます。
|