|
ワークリストには、タスクと対話するための Web ベースのユーザ ポータルとして、Worklist User Portal が用意されています。このポータルを使用して、ユーザはタスクの詳細を表示したり、タスクをライフサイクルに沿って進めていくためのアクションを実行したりできます。タスク プランの各ステップではユニークなアクションを定義できるため、そのステップ独自の考慮事項をユーザに提示できます。
Worklist User Portal は、ステップとアクションのメタデータを使用して各ステップで使用できるインタフェースを表示する、多目的ユーザ インタフェースです。特定のステップとアクションを対象としたユーザ インタフェースは、他のステップとアクションのユーザ インタフェースとは異なります。これは、それぞれのメタデータが異なるためです。たとえば、特定のステップでユーザ インタフェースを表示すると、Worklist User Portal は、タスク プランの設計者がそのステップに定義した説明とアクションを表示します。Worklist User Portal に含まれるのは、ユーザ インタフェースを表示したときに提供されるこれらの情報だけであり、そのステップに関してユーザが求める可能性のあるより細かなニーズ (アクションの必須プロパティの値を入力するために必要な概要情報や、プロパティの結果値を取得するために各タスク プロパティに適用できる計算など) に対応することはできません。
前述の例のように、特定のステップまたはそのステップで実行できるアクションで、カスタマイズされたユーザ インタフェースが必要になる場合があります。ワークリストでは、Web 開発者が特定のステップまたはタスク プラン全体で使用するカスタム Web ユーザ インタフェースを設計できるようにすることで、この拡張性のニーズに対応しています。このカスタム Web ユーザ インタフェースは、カスタム タスク ユーザ インタフェースと呼ばれます。カスタム タスク UI により、Web 開発者は必要な場合にのみカスタム ページをデザインし、それ以外の場合はデフォルトの Worklist User Portal の機能を使用できます。これにより、Worklist User Portal のインタフェースを全面的に置き換える必要なく、ユーザ ポータルのカスタマイズに徐々に投資できます。
タスク プランの特定のステップだけを対象とするカスタム インタフェースを設計することも、タスク プラン全体を対象とするカスタム インタフェースを設計することもできます。
カスタム タスク ユーザ インタフェースを作成する際の一般的なワークフローは次のとおりです。
サンプル シナリオについては、『チュートリアル : Worklist アプリケーションの構築』の「カスタマイズされたユーザ インタフェースの追加」を参照してください。
カスタム タスク UI のページ フローは、次の 2 つの方法のいずれかで実装できます。
注意 : |
http://edocs.bea.com/wli/docs92/worklist.javadoc/index.html |
PageFlowController
を使用してカスタム コントローラを拡張する。このコントローラを使用する場合に満たす必要のある要件については、「タスク UI のページ フローの要件」を参照してください。
TaskUIPageFlowController
を使用してカスタム コントローラを拡張しない場合は、タスク UI の PageFlowController
の以下の要件を手動で満たす必要があります。これらの要件により、呼び出しタスク ワークのページ フローをタスク UI のページ フローで呼び出し、呼び出し側が実装済みであることが保証されているアクションを使用してタスク UI のページ フローを呼び出しタスク ワークのページ フローに戻すことができます。
com.bea.wli.worklist.TaskUIPageFlowController
を拡張して、一般的なユーティリティ メソッド実装を提供する (省略可能)。
@Jpf.Controller(nested = true )
この方法により、「ネストされた」ページ フローとしてマークする必要があります。
TaskUIPageFlowController
を拡張した場合、このメソッドから super.beginActionHelper()
メソッドを呼び出してコントローラの状態を適切に初期化する必要があります。それ以外の場合は、このメソッドは、タスク ワーク コントローラのコンテキスト情報を提供する TaskUIContextInfo
のインスタンスを取得する必要があります。このインスタンスは、次のような HTTP セッションから取得できます。
import com.bea.wli.worklist.WorklistUIContextHelper;
WorklistUIContextHelper helper =
new WorklistUIContextHelper(getSession());
TaskUIContextInfo contextInfo = helper.getTaskUIContextInfo();
done
アクションを実行できるユーザ インタフェース コンポーネントを必ず提供する。これにより、カスタム タスク UI でユーザのセッションを終了します。セッションからの離脱の意味は、ワークリスト UI を含むホスト アプリケーションが、セッションの存続期間についてどのように定義されているかによって異なります。たとえば、Worklist User Portal では、セッションからの離脱は、[タスクの作業] ページを出てポータルのホーム ページに戻るということです。このアクションに対応する UI コンポーネント (ボタンやリンクなど) では、TaskUIContextInfo
で提供される done
アクション コンテキストとラベル テキストを使用する必要があります。exit/return
アクションを使用して、呼び出しページ フローに戻る必要がある。taskUIStepDoneAction
を使用して、内部 return
アクションから返される必要がある。Forward アノテーションのサンプルを以下に示します。
@Jpf.Forward(name = "success",
returnAction = "taskUIStepDoneAction")
done
アクション UI コンポーネントをクリックして) UI セッションを離れることにした場合、taskUI ページ フローは、呼び出し側で taskUISessionDoneAction
を使用して、内部 return
アクションから返される必要がある。セッションからの離脱の意味は、ワークリスト UI を含むホスト アプリケーションが、セッションの存続期間についてどのように定義されているかによって異なります。たとえば、セッションからの離脱がログアウトを意味する場合もあります。Forward アノテーションのサンプルを以下に示します。
@Jpf.Forward(name = "success",
returnAction = "taskUISessionDoneAction")
TaskUIContextInfo
のインスタンスで提供されるタスク ビューのリストから) タスク ビューを選択した場合、taskUI は呼び出し側で taskUIShowTaskListAction
を使用して、内部 return
アクションから返される必要がある。Forward アノテーションのサンプルを以下に示します。
@Jpf.Forward(name = "success",
returnAction = " taskUIShowTaskListAction")
この場合、返される Forward
インスタンスには、選択されたタスク リスト ビュー名が (String
として) 設定されている必要があります。内部アクションと Forward の構築文のサンプルを以下に示します。
@Jpf.Forward(name = "success",
returnAction="taskUIShowTaskListAction")
protected Forward showTaskListAction()
// JSP は、ページでユーザがクリックしたリンクやボタンなどから
String view = getRequest().getParameter("view");
カスタマイズしたユーザ インタフェース ページのルック アンド フィールを決定したら、Beehive ページ フローを作成して、これらのページのロジックと使用方法を定義する必要があります。ページ フローでは、アクションを定義できるユーザ インタフェースを設計できます。ページ フローは、カスタム タスク インタフェースの Web ページのアクションとナビゲーションを制御します。
<Web プロジェクト名>\src
フォルダを右クリックし、[新規その他] を選択します。[ウィザードを選択] ダイアログが表示されます。
Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、『Worklist の使い方』の「ワークリスト タスク プランの作成および管理」にある「Worklist アプリケーション」を参照してください。
<ページ フロー コントローラ>.java
ファイル内の以下のコードを、@Jpf.Controller(nested = true, simpleActions = { @Jpf.SimpleAction(name = "begin", path = "index.jsp") })
public class <page flow controller> extends PageFlowController
@Jpf.Controller(nested = true)
public class <page flow controller> extends com.bea.wli.worklist.TaskUIPageFlowController {
注意 : | この変更によって、「アクション "begin" が見つかりませんでした。」というコンパイル エラーが発生します。begin アクションを定義すると、このエラーは解決します。begin アクションについては、「ページ フローのアクションの定義」を参照してください。[問題] ビューでエラー、警告、および情報メッセージのリストを表示するには、[ウィンドウビューの表示問題] を選択します。 |
カスタム タスク UI で必要な各 Web ページのフォーム Bean を作成する必要があります。これらのフォーム Bean は、ページ フロー コントローラの Java 内部クラスとして表すことができます。また、スタンドアロン Java クラスであってもかまいません。フォーム Bean では、JDK Javadoc の説明に従って java.io.Serializable
を実装する必要があります。
フォーム Bean を作成するには、以下の手順を実行します。
フォーム Bean は、カスタム タスク UI の Web ページで実行するデータ処理の基盤となります。フォーム Bean は、多数のプロパティを持つ JavaBean オブジェクトです。これらの各プロパティのセッター メソッドとゲッター メソッドを生成する必要があります。
セッター メソッドとゲッター メソッドを生成するには、以下の手順を実行します。
これで、すべてのプロパティのゲッター メソッドとセッター メソッドが生成されました。
カスタム タスク インタフェースの Web ページ間を移動し、タスクの適切なアクションを実行するために、ページ フローのアクションを定義します。ページ フローのアクションは、ページ フロー コントローラのメソッドです。これらのメソッドにより、インタフェース内でのナビゲーションが可能になります。また、結果を計算し、必要な Web ページにフォーム Bean を渡すこともできます。
フォーム Bean は、アクションから Web ページに渡されて、ページの表示フィールドに設定されます。Web ページが処理のためにサーバに送信されると、これらのフィールド値が収集され、フォーム Bean のプロパティに配置されます。
フォーム Bean をアクション メソッドへのパラメータとして定義すると、アクション メソッドは、Web ページの [送信] ボタンをクリックすることによって取得されたフォーム Bean を受け入れることができます。また、アクション メソッドは、アクションの転送先のターゲット Web ページにフォーム Bean を渡すこともできます。これは、フォーム Bean オブジェクトが設定された Forward オブジェクトを渡すことによって実行されます。
カスタム タスク インタフェースに必要な設計済みのすべてのアクションのページ フロー アクションを定義します。また、ページ フロー コントローラを初期化するための begin
アクションを定義することも必要です。begin
アクションは、このコントローラを初期化し、スーパークラス ヘルパー (beginActionhelper
) を呼び出して、タスク コンテキスト、タスクとアクションの標準フォーム Bean、およびプロパティ編集サポートを初期化します。
注意 : | begin() でスーパークラス ヘルパーを呼び出す必要があるのは、カスタム ページ コントローラで TaskUIPageFlowController を拡張した場合のみです。 |
アクション メソッドはフォーム Bean を受け入れ、フォーム Bean を使用してページに転送できます。Web ページを送信し、[送信] に関連付けられたアクションの呼び出し中に、NetUI フレームワークは、デフォルトで (フォーム Bean クラスの引数なしのパブリック コンストラクタを使用して) 新しいフォーム Bean インスタンスを作成します。その後、この新しい Bean インスタンスに、Java Reflection を介して、送信された Web ページ フォームのデータ バインディング タグからのデータが入力されます。
このプロセスには、いくつかの制限があります。たとえば、Web ページの JSP タグで表されていない一時的な非表示の情報がフォーム Bean に含まれている場合、アクションに実際に渡されるフォーム Bean (NetUI フレームワークによって作成された Bean) には、この情報は含まれません。
アクション メソッドが呼び出されるたびに新しい Bean を作成することから生じるオーバーヘッドと起こりうる動作上の問題を回避するには、action
メソッドの @Jpf.Action
アノテーションに useFormBean
フィールドを指定します。これにより、ページ フロー コントローラの状態にフォーム Bean の単一のコピーを保持できるため、アクション メソッドは新しいフォーム Bean オブジェクトを作成するのではなく、この状態からオブジェクトをフェッチするだけになります。
ワークリストには、カスタム タスク UI のプロパティを編集するための組み込みサポートが用意されています。このサポートには、JSP タグ、デフォルト エディタ、基本 TaskUIPageFlowController
のヘルパー メソッドなどがあります。これらの機能により、用意された UI を使用して次のタイプのプロパティを容易に編集できます。
さらに、プロパティ エディタの機能により、カスタム タスク UI を使用するユーザは、インライン エディタ (簡単なフォーム フィールド) と、上記の複雑なタイプに対応するスタンドアロン エディタを使用して、プロパティを容易に編集できます。この機能によって、面倒なプロパティの編集が非常に容易になります。
タスクのユーザ プロパティ エディタを操作するには、カスタム ページ フロー コントローラで以下のアクションを作成します。
okPropAction
- [OK] をクリックして編集内容を適用すると、スタンドアロン エディタからこのアクションに制御が戻ります。つまり、エディタで作成または編集した値を保持する EditorValueHolder
を渡すこのアクションに制御が戻ります。このアクションでは、@Jpf.Action
アノテーションの useFormBean
属性に、ページ フローの _editorValue
フィールドを指定する必要があります。これにより、返されるエディタ値または完了したエディタ値のフォーム Bean を _editorValue
フィールドに渡すことができるため、サイズが大きい可能性のあるこのフォーム Bean のコピーを作成しないようにすることができます。このアクションとアノテーションのサンプルについては、『チュートリアル : Worklist アプリケーションの構築』を参照してください。cancelPropAction
- ユーザがエディタで [取り消し] をクリックしたときに、スタンドアロン エディタが呼び出すアクションです。<edit property action>
- このアクションでは、JSP からの initiate stand-alone editor
呼び出しとワークリスト propertyEditor
タグを処理します。action
メソッドは、TaskUIPageFlowController.editPropActionHelper
を呼び出してスタンドアロン エディタの URI を計算し、この URI に転送する必要があります。このエディタはネストされたページ フローであり、okPropAction
および cancelPropAction
の各 return アクションによって、このコントローラ (呼び出し側) に返されます。 注意 : | アクションの実際の名前は、actionName 属性のワークリスト propertyEditor タグに指定されます。 |
ページ フローのアクションを作成するには、以下の手順を実行します。
ページ フローのすべてのアクションが作成されます。コードは次のようになります。
@Jpf.Action()
public Forward newAction1(test_pageflow.Test_pageflowController.NewFormBean form) {
Forward forward = new Forward("success");
return forward;
}
設計したインタフェース モデルに基づいて、フォーム Bean からデータを読み込んだり、フォーム Bean にデータを書き込んだりできる Web フォームを表示するための Beehive NetUI データ バインディング JSP タグを使用して、カスタム タスク UI の JSP ページを定義します。これらのタグを使用することで、データ駆動型の JSP ページを記述するプロセスが大幅に簡素化されます。
ページ フロー パースペクティブで JSP ファイルを作成するには、以下の手順を実行します。
注意 : | ページ フロー コントローラに、使用できない JSP への参照が存在する場合、[ページ フロー エクスプローラ] ビューの [ページ] ノードの下にグレー表示された JSP ページが自動的に一覧表示されます。これらの JSP を右クリックし、[作成] を選択すると、JSP ファイルを作成できます。 |
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
<%@taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
<%@taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
<netui:html>
<head>
<netui:base/>
</head>
<netui:body>
<p>Beehive NetUI JavaServer Page - ${pageContext.request.requestURI}</p>
</netui:body>
</netui:html>
<p>Beehive NetUI JavaServer Page - ${pageContext.request.requestURI}</p>
次に、<netui:body>
タグと </netui:body>
タグの間にテキスト フォームを挿入します。
タスク プランのステップまたはタスク プラン全体のカスタム タスク UI を設計したら、カスタム タスク UI を登録する必要があります。カスタム タスク UI を登録するには、マッピング エントリを <Web プロジェクト名>/WebContent/WEB-INF/task-ui-registry.xml
レジストリ ファイルに追加する必要があります。
注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、『Worklist の使い方』の「ワークリスト タスク プランの作成および管理」にある「Worklist アプリケーション」を参照してください。 |
この XML レジストリ ファイルは、ワークリスト タスク UI レジストリのスキーマに関連付けられ、このスキーマが Workshop に登録されます。
このファイルを開いて編集します。[ソース] タブでのこの XML ファイルの初期内容は次のようになります。
<task-ui-registry xmlns="http://www.bea.com/wli/worklist/taskuiregistry">
</task-ui-registry>
[デザイン] タブで、ツリー ビューのノードを右クリックすると、そのノードでアクションを実行できます。ノードの削除および子ノードの追加が行えます。
カスタム タスク UI を登録するには、以下の情報が必要です。
。
。
。.java
ファイルの場合でも、この URI には拡張子として .jpf
が付く。これは、Web アプリケーションのサーブレット フィルタが適切に起動できるようにするために必要となります。 注意 : | タスク プランのステップではなく、タスク プラン全体を対象に設計されたカスタム タスク UI を登録する場合には、ステップ名は不要です。 |
task-ui-registry.xml
を編集するには、[パッケージ・エクスプローラー] ビューに切り替えてから、エディタの [デザイン] タブで以下の手順を実行します。
task-ui-registry.xml
を選択します。注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、『Worklist の使い方』の「ワークリスト タスク プランの作成および管理」にある「Worklist アプリケーション」を参照してください。 |
task-ui-registry.xml
を右クリック[子の追加] を選択します。作成したカスタム タスク UI がステップとタスク プラン全体のどちらを対象としているかに応じて、[step-override
] または [task-plan override
] を選択します。これにより、新しいオーバーライド要素がルート要素の下に追加されます。step-override
] 要素または [task-plan-override
] 要素を展開し、タスク プラン ID、ステップ名、およびカスタム タスク UI の URI を指定します。 注意 : | タスク プランのステップではなく、タスク プラン全体を対象に設計されたカスタム タスク UI を登録する場合には、ステップ名は不要です。 |
カスタム タスク ユーザ インタフェースをデプロイするには、以下の手順を実行します。
注意 : | Web プロジェクトは、システムのユーザ インタフェースとして機能する、ワークリストの Web アプリケーションと対応しています。詳細については、『Worklist の使い方』の「ワークリスト タスク プランの作成および管理」にある「Worklist アプリケーション」を参照してください。 |
。