Mit der Business Process Choreographer Explorer-Listenkomponente
können Sie eine Liste mit Clientmodellobjekten (z. B. Business-Prozessinstanzen oder Taskinstanzen) anzeigen.
- 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.
- 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.
- 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.
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.