- Aggiungere il componente Elenco al file JSP (JavaServer
Pages).
Aggiungere il tag bpe:list al tag h:form.
Il tag bpe:list deve comprendere un attributo di modello. Aggiungere i tag bpe:column al tag
bpe:list per aggiungere le proprietà degli oggetti che devono essere visualizzate in ciascuna delle righe nell'elenco.
Il
seguente esempio illustra come aggiungere un componente Elenco per
visualizzare le istanze di attività.
<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>
L'attributo del modello fa riferimento ad un bean gestito, TaskPool.
Il bean gestito fornisce l'elenco di oggetti Java sui quali viene iterato l'elenco ed in seguito viene visualizzato in singole righe.
- Configurare il bean gestito riferimento al tag bpe:list.
Per il componente Elenco, questo bean gestito deve
essere un'istanza della classe com.ibm.bpe.jsf.handler.BPCListHandler.
L'esempio di seguito riportato illustra il modo in cui aggiungere il bean gestito TaskPool al file di configurazione.
<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>
L'esempio illustra che TaskPool dispone di due proprietà configurabili: query e tipo.
Il valore della proprietà di query fa riferimento ad un altro bean gestito, TaskPoolQuery.
Il valore della proprietà del tipo specifica la classe del bean, le cui proprietà vengono illustrate nella colonna dell'elenco visualizzato. L'istanza della query associata può disporre anche di un tipo di proprietà. Se è specificato un tipo di proprietà, deve essere uguale al tipo specificato per il gestore eventi.
Per fornire una connessione a Human Task Manager, il bean gestito TaskPool viene implementato utilizzando il bean gestito htmConnection.
- Aggiungere il codice personalizzato per il bean gestito riferito al gestore elenco.
L'esempio di seguito riportato illustra il modo in cui aggiungere il codice personalizzato per il bean gestito TaskPool.
public class MyTaskQuery implements Query {
public List execute throws ClientException {
// Esaminare il file faces-config per un bean gestito "htmConnection".
//
FacesContext ctx = FacesContext.getCurrentInstance();
Application app = ctx.getApplication();
ValueBinding htmVb = app.createValueBinding("#{htmConnection}");
htmConnection = (HTMConnection) htmVb.getValue(ctx);
HumanTaskManagerService taskService =
htmConnection.getHumanTaskManagerService();
// Quindi richiamare il metodo della query corrente sul servizio 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 );
// Trasforma ciascuna riga di QueryResultSet in bean dell'istanza di un'attività.
for (int i = 0; i < entries; i++) {
result.next();
array.add( new TaskInstanceBean( result, connection ));
}
return array ;
}
}
Il bean TaskPoolQuery esegue una query delle proprietà degli oggetti Java.
Questo bean deve implementare l'interfaccia com.ibm.bpc.clientcore.Query.
Quando il gestore elenco aggiorna il contenuto, richiama il metodo execute
della query. Il richiamo restituisce un elenco di oggetti Java. Il metodo getType
deve restituire il nome della classe degli oggetti Java restituiti.
L'applicazione JSF contiene ora una pagina JavaServer che visualizza le proprietà dell'elenco di oggetti richiesti, ad esempio, lo stato, il tipo, il proprietario e l'originator delle istanze di attività disponibili.