Nachrichtenkomponente zu einer JSF-Anwendung hinzufügen

Mit der Nachrichtenkomponente von Business Process Choreographer Explorer können Sie Datenobjekte und primitive Typen in einer JSF-Anwendung (JSF = JavaServer Faces) wiedergeben.

Anlass und Zeitpunkt für die Ausführung dieser Task

Wenn es sich bei dem Nachrichtentyp um einen primitiven Typ handelt, wird ein Feld für die Bezeichnung und die Eingabe wiedergegeben. Wenn es sich bei dem Nachrichtentyp um ein Datenobjekt handelt, durchquert die Komponente das Objekt und gibt die Elemente in dem Objekt wieder.

Erforderliche Schritte für diese Task

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

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

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

    <managed-bean>
    <managed-bean-name>MyHandler</managed-bean-name>
    <managed-bean-class>com.ibm.bpe.sample.jsf.MyHandler</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    
       <managed-property>
          <property-name>type</property-name>
          <value>com.ibm.task.clientmodel.bean.TaskInstanceBean</value>
       </managed-property>
    
    </managed-bean>
  3. 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.

Ergebnis

Ihre JSF-Anwendung enthält nun eine JSP (JavaServer Pages), die Datenobjekte und primitive Typen wiedergeben kann.

Rechtliche Hinweise |

Letzte Aktualisierung: LASTUPDATEDVAR

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