Aggiunta del componente Messaggio a un'applicazione JSF

Utilizzare il componente Messaggio di Business Process Choreographer Explorer per visualizzare gli oggetti di dati e i tipi primitivi in un'applicazione JSF (JavaServer Faces).

Perché e quando effettuare questa attività

Se il messaggio è di tipo primitivo, vengono visualizzati un'etichetta e un campo di input. Se il tipo di messaggio è un oggetto dati, il componente attraversa l'oggetto e visualizza gli elementi all'interno di esso.

Procedura di questa attività

  1. Aggiungere il componente Messaggio al file JSP (JavaServer Pages).

    Aggiungere il tag bpe:form al tag <h:form>. Il tag bpe:form deve comprendere un attributo model.

    Il seguente esempio illustra come aggiungere un componente Messaggio.

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

    L'attributo del modello del componente Messaggio fa riferimento all'oggetto com.ibm.bpc.clientcore.MessageWrapper. Questo oggetto del wrapper avviluppa un oggetto SDO (Service Data Object) o un tipo primitivo Java, ad esempio int o boolean. In questo esempio, il messaggio viene fornito da una proprietà del bean gestito MyHandler.

  2. Configurare il bean gestito riferito al tag bpe:form.

    L'esempio di seguito riportato illustra il modo in cui aggiungere il bean gestito MyHandler al file di configurazione.

    <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. Aggiungere il codice personalizzato all'applicazione JSF.

    L'esempio di seguito riportato illustra il modo in cui implementare i messaggi di input o di output.

    public class MyHandler implements ItemListener {
    
      private TaskInstanceBean taskBean;
      private MessageWrapper inputMessage, outputMessage 
    
      /* Metodo del listener, ad esempio quando un'istanza di attività era stata
    selezionata in un gestore elenco.
       * Verificare che il gestore sia registrato in faces-config.xml o manualmente. 
       */ 
      public void itemChanged(Object item) {
        if( item instanceof TaskInstanceBean ) {
            taskBean = (TaskInstanceBean) item ;
        }
      }
    
      /* Ottenere il wrapper del messaggio di input
       */
      public MessageWrapper getInputMessage() {
        try{
            inputMessage = taskBean.getInputMessageWrapper() ;
        }
        catch( Exception e ) {
            ;       //...ignora gli errori per semplicità
        }
        return inputMessage;
      }
    
      /* Ottenere il wrapper del messaggio di output
       */
      public MessageWrapper getOutputMessage() {
        // Richiamare il messaggio dal bean. Se non è presente alcun messaggio, crearne
        // uno se l'attività è stata richiesta dall'utente. Verificare che solo i 
        // potenziali proprietari o proprietari possono modificare il messaggio di output.
        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 ) { 
            ;       //...ignora gli errori per semplicità
        }
        return outputMessage
      }
    }
    
         

    Il bean gestito MyHandler implementa l'interfaccia com.ibm.jsf.handler.ItemListener in modo che possa registrarsi come listener dell'elemento ai gestori elenchi. Quando l'utente fa clic su un elemento nell'elenco, viene inviata una notifica al bean MyHandler nel relativo metodo itemChanged( Object item ) sull'elemento selezionato. Il gestore verifica il tipo di elemento, quindi memorizza un riferimento all'oggetto TaskInstanceBean associato. Per utilizzare questa interfaccia, aggiungere una voce al gestore elenco appropriato nel file faces-config.xml.

    Il bean MyHandler fornisce i metodi getInputMessage e getOutputMessage. Entrambi i metodi restituiscono un oggetto MessageWrapper. I metodi delegano i richiami al bean di istanza dell'attività di riferimento. Se il bean dell'istanza dell'attività restituisce null, ad esempio perché non è impostato un messaggio, il gestore crea e memorizza un nuovo messaggio vuoto. Il componente Messaggio visualizza i messaggi forniti dal bean MyHandler.

Risultato

L'applicazione JSF contiene ora una JSP (JavaServer page) che può visualizzare gli oggetti di dati ed i tipi primitivi.

(c) Copyright IBM Corporation 2005, 2006.
This information center is powered by Eclipse technology (http://www.eclipse.org)