Aggiunta del componente CommandBar a un'applicazione JSF

Utilizzare il componente CommandBar di Business Process Choreographer Explorer per visualizzare una barra con i pulsanti. Questi pulsanti rappresentano i comandi che funzionano sulla vista dettagli di un oggetto do degli oggetti selezionati in un elenco.

Perché e quando effettuare questa attività

Facendo clic su un pulsante nell'interfaccia utente, il comando corrispondente viene eseguito sugli oggetti selezionati. È possibile aggiungere ed estendere il componente CommandBar nell'applicazione JSF.

Procedura di questa attività

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

    Aggiungere il tag bpe:commandbar al tag <h:form>. Il tag bpe:commandbar deve contenere un attributo di modello.

    Nel seguente esempio viene illustrato come aggiungere un componente CommandBar che fornisce i comandi di aggiornamento e richiesta per un elenco di istanze di attività.

    <h:form>
    
       <bpe:commandbar model="#{TaskInstanceList}">
          <bpe:command commandID="Refresh" >
                       action="#{TaskInstanceList.refreshList}"
                       label="Refresh"/>
    
          <bpe:command commandID="MyClaimCommand" >
                       label="Claim" >
                       commandClass="<customcode>"/> 
       </bpe:commandbar>
    
    </h:form>

    L'attributo del modello fa riferimento a un bean gestito. Questo bean deve implementare l'interfaccia ItemProvider e fornire gli oggetti Java selezionati. Il componente CommandBar viene generalmente utilizzato con il componente Elenco o il componente Dettagli nello stesso file JSP. In genere, il modello specificato nel tag è lo stesso del modello specificato nel componente Elenco o nel componente Dettagli sulla stessa pagina. Pertanto, per il componente Elenco, ad esempio, il comando agisce sugli elementi selezionati nell'elenco.

    In questo esempio, l'attributo del modello fa riferimento al bean gestito TaskInstanceList. Questo bean fornisce gli oggetti selezionati nell'elenco di istanze di attività. Il bean deve implementare l'interfaccia ItemProvider. Questa interfaccia viene implementata dalle classi BPCListHandler e BPCDetailsHandler.

  2. Opzionale: Configurare il bean gestito che fa riferimento al tag bpe:commandbar.

    Se l'attributo del modello CommandBar fa riferimento a un bean gestito già configurato, ad esempio, per un gestore elenco o dettagli, non è richiesta un'ulteriore configurazione. Se si modifica la configurazione di uno di questi gestori oppure si utilizza un differente bean gestito, aggiungere un bean gestito che implementi l'interfaccia ItemProvider sul file di configurazione JSF.

  3. Aggiungere il codice che implementa i comandi personalizzati per l'applicazione JSF.

    Il frammento di codice di seguito riportato illustra il modo in cui scrivere una classe del comando che espande la barra dei comandi. Questa classe di comandi (MyClaimCommand) fa riferimento al tag bpe:command nel file JSP.

    Il comando verifica le precondizioni ed eventuali prerequisiti, ad esempio il numero corretto di elementi selezionati. Quindi, richiama un riferimento all'API di human task, HumanTaskManagerService. Il comando consente di iterare gli oggetti selezionati e prova ad elaborarli. L'attività viene richiesta mediante l'API HumanTaskManagerService da un ID. Se non si verifica alcuna eccezione, lo stato viene aggiornato per l'oggetto TaskInstanceBean corrispondente. Questa azione evita di richiamare di nuovo il valore dell'oggetto dal server.

    public class MyClaimCommand implements Command {
    
      public String execute(List selectedObjects) throws ClientException {
    	    if( selectedObjects != null && selectedObjects.size() > 0 ) {
      	     try {
             // Determinare HumanTaskManagerService da un bean HTMConnection. 
             // Configurare il bean in faces-config.xml per un facile accesso 
             // all'applicazione JSF.
    		       FacesContext ctx = FacesContext.getCurrentInstance();
             ValueBinding vb = 
               ctx.getApplication().createValueBinding("{htmConnection}");
             HTMConnection htmConnection = (HTMConnection) htmVB.getValue(ctx);
             HumanTaskManagerService htm = 
                htmConnection.getHumanTaskManagerService();
    
             Iterator iter = selectedObjects.iterator() ;			
             while( iter.hasNext() ) {
               try {
                    TaskInstanceBean task = (TaskInstanceBean) iter.next() ;
                    TKIID tiid = task.getID() ; 
    						
                    htm.claim( tiid ) ;
                    task.setState( new Integer(TaskInstanceBean.STATE_CLAIMED ) ) ;
    						
               }
               catch( Exception e ) {
                 ;			// Errore durante l'iterazione o la richiesta dell'istanza di attività.
                      // Ignorare per una migliore comprensione dell'esempio.
               }
             }
           }
           catch( Exception e ) {
             ; 	// Errore di configurazione o di comunicazione.
               // Ignorare per una migliore comprensione dell'esempio
           }
         }
         return null;
      }
    
     // Implementazioni predefinite
     public boolean isMultiSelectEnabled() { return false; }
     public boolean[] isApplicable(List itemsOnList) {return null; }
     public void setContext(Object targetModel) {; // Not used here }
    }
    Il comando viene elaborato come segue:
    1. Un comando viene richiamato quando un utente fa clic sul pulsante corrispondente nella barra dei comandi. Il componente CommandBar richiama gli elementi selezionati per il provider dell'elemento specificato nell'attributo del modello e inoltra l'elenco degli oggetti selezionati al metodo execute dell'istanza commandClass.
    2. L'attributo commandClass fa riferimento all'implementazione di un comando personalizzato che implementa l'interfaccia dei comandi. Ciò significa che il comando deve implementare il metodo public String execute(List selectedObjects) throws ClientException. Il comando restituisce un risultato che viene utilizzato per determinare la regola di navigazione successiva per l'applicazione JSF.
    3. Una volta completato il comando, il componente CommandBar valuta l'attributo action. L'attributo dell'azione può essere una stringa statica o un bind del metodo per un metodo dell'azione JSF con la firma public String Method(). Utilizzare l'attributo dell'azione per sovrascrivere il risultato di una classe di comandi o per specificare esplicitamente un risultato per le regole di navigazione. L'attributo dell'azione non viene elaborato se il comando genera un'eccezione diversa dall'eccezione ErrorsInCommandException.

Risultato

L'applicazione JSF ora contiene una JavaServer page che implementa una barra dei comandi personalizzata.

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