Listenkomponente zu einer JSF-Anwendung hinzufügen

Mit der Business Process Choreographer Explorer-Listenkomponente können Sie eine Liste mit Clientmodellobjekten (z. B. Business-Prozessinstanzen oder Taskinstanzen) anzeigen.

Erforderliche Schritte für diese Task

  1. Fügen Sie die Listenkomponente zur JSP-Datei (JSP = JavaServer Pages) hinzu.

    Fügen Sie den Tag bpe:list zum Tag h:form hinzu. Der Tag bpe:list muss ein Modellattribut umfassen. Fügen Sie die bpe:column-Tags zum Tag bpe:list hinzu, um die Merkmale des Objekts hinzuzufügen, die in den einzelnen Zeilen in der Liste aufgeführt werden sollen.

    Im folgenden Beispiel sehen Sie, wie eine Listenkomponente zum Anzeigen von Taskinstanzen hinzugefügt wird.

    <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>

    Das Modellattribut bezieht sich auf eine Managed Bean TaskPool. Die Managed Bean stellt die Liste mit Java-Objekten bereit, über die die Liste iteriert; anschließend werden einzelne Zeilen angezeigt.

  2. Konfigurieren Sie die Managed Bean, auf die im Tag bpe:list verwiesen wird.

    Bei dieser Managed Bean muss es sich für die Listenkomponente um eine Instanz der Klasse com.ibm.bpe.jsf.handler.BPCListHandler handeln.

    Im folgenden Beispiel sehen Sie, wie die Managed Bean TaskPool zur Konfigurationsdatei hinzugefügt wird.

    <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>

    In dem Beispiel sehen Sie, dass TaskPool über zwei konfigurierbare Merkmale verfügt: query und type. Der Wert des Merkmals query weist auf eine andere Managed Bean (TaskPoolQuery). Der Wert dieses Merkmals gibt die Bean-Klasse an, deren Merkmale in den Spalten der angezeigten Liste angezeigt werden. Die zugeordnete Abfrageinstanz kann auch über einen Merkmaltyp verfügen. Wenn ein Merkmaltyp angegeben ist, muss es sich es sich um denselben Typ handeln, der für den Listenhandler angegeben wurde.

    Die Managed Bean TaskPool wird mit Hilfe der Managed Bean htmConnection implementiert, um eine Verbindung zum Human Task Manager bereitzustellen.

  3. Fügen Sie den angepassten Code für die Managed Bean hinzu, auf die der Listenhandler verweist.

    Im folgenden Beispiel sehen Sie, wie angepasster Code zur Managed Bean TaskPool hinzugefügt wird.

    public class MyTaskQuery implements Query {
    
      public List execute throws ClientException {
    
        // Überprüfen der Datei faces-config für eine 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();
    
        // Anschließendes Abrufen der tatsächlichen Abfragemethode für den Service Human Task Manager.
        //
        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 );
    
    // Setzt jede Zeile im QueryResultSet in eine Taskinstanzbean um.
    	for (int i = 0; i < entries; i++) {
    	  result.next();
    	  array.add( new TaskInstanceBean( result, connection ));
    	}
    	return array ;
      }
    }
    

    Die Bean TaskPoolQuery fragt die Merkmale der Java-Objekte ab. Diese Bean muss die Schnittstelle com.ibm.bpc.clientcore.Query implementieren. Wenn der Listenhandler seinen Inhalt aktualisiert, ruft er die Methode execute der Abfrage auf. Der Aufruf gibt eine Liste der Java-Objekte zurück. Die Methode getType muss den Klassennamen der zurückgegebenen Java-Objekte zurückgeben.

Ergebnis

Ihre JSF-Anwendung enthält nun eine JSP (JavaServer Pages), die die Merkmale der angeforderten Liste der Objekte, z. B. den Status, die Art, den Eigner und den Ersteller der Ihnen zur Verfügung stehenden Taskinstanzen, anzeigt.

Rechtliche Hinweise |

Letzte Aktualisierung: LASTUPDATEDVAR

(c) Copyright IBM Corporation 2005.
Dieses Information Center basiert auf Eclipse-Technologie. (http://www.eclipse.org)