Fügen Sie die Nachrichtenkomponente zur JSP-Datei (JSP = JavaServer Pages) hinzu. Fügen Sie den Tag bpe:form zum Tag <h:form> hinzu.
Der Tag bpe:form muss ein Attribut model umfassen.
Im folgenden Beispiel sehen Sie,
wie eine Nachrichtenkomponente hinzugefügt wird.
<h:form>
<h:outputText value="Input Message" />
<bpe:form model="#{MyHandler.inputMessage}" readOnly="true" />
<h:outputText value="Output Message" />
<bpe:form model="#{MyHandler.outputMessage}" />
</h:form>
Das Attribut model der Nachrichtenkomponente bezieht sich auf
das Objekt com.ibm.bpc.clientcore.MessageWrapper. Dieses Wrapperobjekt umhüllt
entweder ein SDO-Objekt (SDO = Service Data Object) oder einen primitiven Java-Typ, z. B. int oder boolean.
In diesem Beispiel wird die Nachricht durch ein Merkmal der Managed Bean MyHandler
bereitgestellt.
Fügen Sie den angepassten Code zur JSF-Anwendung hinzu. Das folgende Beispiel
veranschaulicht die Implementierung von Eingabe- und Ausgabenachrichten:
public class MyHandler implements ItemListener {
private TaskInstanceBean taskBean;
private MessageWrapper inputMessage, outputMessage
/* Listenermethode z. B., wenn eine Taskinstanz in einem Listenhandler ausgewählt wurde.
* Sicherstellen, dass der Handler in der Datei faces-config.xml registriert ist; oder manuell registrieren.
*/
public void itemChanged(Object item) {
if( item instanceof TaskInstanceBean ) {
taskBean = (TaskInstanceBean) item ;
}
}
/* Eingabenachrichtenwrapper abrufen
*/
public MessageWrapper getInputMessage() {
try{
inputMessage = taskBean.getInputMessageWrapper() ;
}
catch(Exception e){
; //...Fehler der Einfachheit halber ignorieren
}
return inputMessage;
}
/* Ausgabenachrichtenwrapper abrufen
*/
public MessageWrapper getOutputMessage() {
// Abrufen der Nachricht aus der Bean. Wenn keine Nachricht vorhanden ist, erstellen
// sie eine, wenn die Task vom Benutzer beansprucht wurde. Stellen Sie sicher, dass nur
// potenzielle Eigner oder Eigner die Ausgabenachricht bearbeiten können.
try{
outputMessage = taskBean.getOutputMessageWrapper();
if( outputMessage == null
&& taskBean.getState() == TaskInstanceBean.STATE_CLAIMED ) {
HumanTaskManagerService htm = getHumanTaskManagerService();
outputMessage = new MessageWrapperImpl();
outputMessage.setMessage(
htm.createOutputMessage( taskBean.getID() ).getObject()
);
}
}
catch(Exception e){
; //...Fehler der Einfachheit halber ignorieren
}
return outputMessage
}
}
Die Managed Bean MyHandler implementiert die Schnittstelle com.ibm.jsf.handler.ItemListener,
sodass sie sich selbst als Elementlistener bei Listenhandlern registrieren kann. Wenn der Benutzer
auf ein Element in der Liste klickt, wird die Bean MyHandler über die Methode
itemChanged( Object item ) über das ausgewählte Element benachrichtigt. Der Handler prüft den
Elementtyp und speichert anschließend einen Verweis auf das zugeordnete Objekt
TaskInstanceBean. Wenn Sie diese Schnittstelle verwenden möchten, fügen Sie dem entsprechenden
Listenhandler in der Datei faces-config.xml einen Eintrag hinzu.
Die Bean MyHandler stellt die Methoden getInputMessage und getOutputMessage
bereit. Beide Methoden geben ein MessageWrapper-Objekt zurück. Die Methoden
delegieren die Aufrufe an die referenzierte Taskinstanzbean. Wenn die Taskinstanzbean null zurückgibt, weil
beispielsweise eine Nachricht nicht gesetzt wurde, erstellt der Handler eine neue, leere
Nachricht und speichert sie. Die Nachrichtenkomponente zeigt die durch die
Bean MyHandler bereitgestellte Nachricht an.