JSF アプリケーションへの List コンポーネントの追加

Business Process Choreographer Explorer List コンポーネントを使用して、例えばビジネス・プロセス・インスタンスやタスク・インスタンスなどの、クライアント・モデル・オブジェクトのリストを表示します。

このタスクのステップ

  1. 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™ オブジェクトのリストを提供し、次に個々の行を表示します。

  2. 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 を使用してインプリメントされます。

  3. リスト・ハンドラーによって参照される管理対象 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 ページを含むようになります。

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。