Business Process Choreographer Explorer List コンポーネントを使用して、例えばビジネス・プロセス・インスタンスやタスク・インスタンスなどの、クライアント・モデル・オブジェクトのリストを表示します。
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™ オブジェクトのリストを提供し、次に個々の行を表示します。
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>
例では、照会およびタイプの 2 つの構成可能プロパティーが TaskPool に含まれていることを示しています。 照会プロパティーの値は、TaskPoolQuery という別の管理対象 Bean を参照しています。タイプ・プロパティーの値は、Bean クラス を指定します。そのクラスのプロパティーは、表示されたリストの列に示されます。関連する照会インスタンスは、プロパティー型を持つことも可能です。プロパティー型が指定された場合、それはリスト・ハンドラーに指定された型と同一でなければなりません。
TaskPool 管理対象 Bean は、Human Task Manager への接続を提供するため、htmConnection 管理対象 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 インターフェースをインプリメントする必要があります。リスト・ハンドラーは、内容を最新表示するときに、照会の実行メソッドを呼び出します。呼び出しによって、Java オブジェクトのリストが戻されます。getType メソッドは、戻された Java オブジェクトのクラス名を戻す必要があります。