- List コンポーネントを JavaServer Pages (JSP) ファイルに追加します。
bpe:list タグを h:form タグに追加します。
bpe:list タグには、モデル属性が含まれていなければなりません。bpe:column タグを bpe:list に追加して、リスト内の各行に表示されるオブジェクトのプロパティーを追加します。
以下の例では、List コンポーネントを追加してタスク・インスタンスを表示する方法を示します。
<h:form>
<bpe:list model="#{TaskPool}">
<bpe:column name="name" action="taskInstanceDetails" />
<bpe:column name="state" />
<bpe:column name="kind" />
<bpe:column name="owner" />
<bpe:column name="originator" />
</bpe:list>
</h:form>
モデル属性は、TaskPool という管理対象 Bean を参照します。管理対象 Bean は、リストが操作を繰り返す対象となる Java™ オブジェクトのリストを提供し、次に個々の行を表示します。
- bpe:list タグで参照されている管理対象 Bean を構成します。
List コンポーネントの場合、この管理対象 Bean は、com.ibm.bpe.jsf.handler.BPCListHandler クラスのインスタンスでなければなりません。
以下の例では、TaskPool 管理対象 Bean を構成ファイルに追加する方法を示します。
<managed-bean>
<managed-bean-name>TaskPool</managed-bean-name>
<managed-bean-class>com.ibm.bpe.jsf.handler.BPCListHandler</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>query</property-name>
<value>#{TaskPoolQuery}</value>
</managed-property>
<managed-property>
<property-name>type</property-name>
<value>com.ibm.task.clientmodel.bean.TaskInstanceBean</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>htmConnection</managed-bean-name>
<managed-bean-class>com.ibm.task.clientmodel.HTMConnection</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>jndiName</property-name>
<value>java:comp/env/ejb/LocalHumanTaskManagerEJB</value>
</managed-property>
</managed-bean>
例では、照会およびタイプの 2 つの構成可能プロパティーが TaskPool に含まれていることを示しています。
照会プロパティーの値は、TaskPoolQuery という別の管理対象 Bean を参照しています。タイプ・プロパティーの値は、Bean クラスを指定します。そのクラスのプロパティーは、表示されたリストの列に示されます。関連する照会インスタンスは、プロパティー型を持つことも可能です。プロパティー型が指定された場合、それはリスト・ハンドラーに指定された型と同一でなければなりません。
TaskPool 管理対象 Bean は、Human Task Manager への接続を提供するため、htmConnection 管理対象 Bean を使用してインプリメントされます。
- リスト・ハンドラーによって参照される管理対象 Bean 用のカスタム・コードを追加します。
以下の例では、TaskPool 管理対象 Bean 用のカスタム・コードを追加する方法を示します。
public class MyTaskQuery implements Query {
public List execute throws ClientException {
// Examine the faces-config file for a managed bean "htmConnection".
//
FacesContext ctx = FacesContext.getCurrentInstance();
Application app = ctx.getApplication();
ValueBinding htmVb = app.createValueBinding("#{htmConnection}");
htmConnection = (HTMConnection) htmVb.getValue(ctx);
HumanTaskManagerService taskService =
htmConnection.getHumanTaskManagerService();
// Then call the actual query method on the Human Task Manager service.
//
QueryResultSet queryResult = taskService.query(
"DISTINCT TASK.TKIID, TASK.NAME, TASK.KIND, TASK.STATE, TASK.TYPE,"
+ "TASK.STARTED, TASK.ACTIVATED, TASK.DUE, TASK.EXPIRES, TASK.PRIORITY" ,
"TASK.KIND IN(101,102,105) AND TASK.STATE IN(2)
AND WORK_ITEM.REASON IN (1)",
null,
null,
null);
List applicationObjects = transformToTaskList ( queryResult );
return applicationObjects ;
}
private List transformToTaskList(QueryResultSet result) {
ArrayList array = null;
int entries = result.size();
array = new ArrayList( entries );
// Transforms each row in the QueryResultSet to a task instance beans.
for (int i = 0; i < entries; i++) {
result.next();
array.add( new TaskInstanceBean( result, connection ));
}
return array ;
}
}
TaskPoolQuery Bean は、Java オブジェクトのプロパティーを照会します。
この Bean は、com.ibm.bpc.clientcore.Query インターフェースをインプリメントする必要があります。リスト・ハンドラーは、内容を最新表示するときに、照会の execute メソッドを呼び出します。呼び出しによって、Java オブジェクトのリストが戻されます。getType メソッドは、戻された Java オブジェクトのクラス名を戻す必要があります。
これで、JSF アプリケーションは、例えば状態、種類、所有者、ユーザーが使用可能なタスク・インスタンスのオリジネーターなどの、要求されたオブジェクトのリストのプロパティーを表示する JavaServer ページを含むようになります。