Befehlsleistenkomponente zu einer JSF-Anwendung hinzufügen

Mit der Business Process Choreographer Explorer-Befehlsleistenkomponente können Sie eine Leiste mit Schaltflächen anzeigen. Diese Schaltflächen stellen Befehle dar, die für die Detailsicht eines Objekts oder der ausgewählten Objekten in einer Liste zuständig sind.

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

Wenn der Benutzer auf eine Schaltfläche in der Benutzerschnittstelle klickt, wird der entsprechende Befehl für die ausgewählten Objekte ausgeführt. Die Befehlsleistenkomponente in Ihrer JSF-Anwendung kann hinzugefügt und erweitert werden.

Erforderliche Schritte für diese Task

  1. Fügen Sie die Befehlsleistenkomponente zur JSP-Datei (JSP = JavaServer Pages) hinzu.

    Fügen Sie den Tag bpe:commandbar zum Tag <h:form> hinzu. Der Tag bpe:commandbar muss ein Modellattribut enthalten.

    Im folgenden Beispiel sehen Sie, wie eine Befehlsleistenkomponente zum Anzeigen einiger Merkmale einer Taskinstanz hinzugefügt wird.

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

    Das Attribut model bezieht sich auf eine Managed Bean. Diese Bean muss die Schnittstelle ItemProvider implementieren und die ausgewählten Java-Objekte bereitstellen. Die Befehlsleistenkomponente wird in der Regel entweder mit der Listenkomponente oder der Detailkomponente in derselben JSP-Datei verwendet. Im Allgemeinen handelt es sich bei dem im Tag angegebenen Modell um dasselbe Modell, das in der Listenkomponente oder der Detailkomponente auf derselben Seite angegeben wird. Beispielsweise agiert bei einer Listenkomponente der Befehl also für die ausgewählten Elemente in der Liste.

    In diesem Beispiel bezieht sich das Attribut model auf die Managed Bean TaskInstanceList. Diese Bean stellt die Merkmale der Java-Objekte bereit und muss die Schnittstelle ItemProvider implementieren. Diese Schnittstelle wird durch die Klasse BPCListHandler und die Klasse BPCDetailsHandler implementiert. Sie umfasst auch einen angepassten Beanspruchungsbefehl.

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

    Wenn das Modellattribut für Befehlszeilen auf eine Managed Bean verweist, die bereits konfiguriert ist, ist beispielsweise für einen Listen- oder Detailhandler keine weitere Konfiguration erforderlich. Wenn Sie die Konfiguration eines dieser beiden Handler geändert oder Sie eine andere Managed Bean verwendet haben, fügen Sie eine Managed Bean zur JSF-Konfigurationsdatei hinzu, die die Schnittstelle ItemProvider implementiert.

  3. Fügen Sie den Code hinzu, mit dem die angepassten Befehle in die JSF-Anwendung implementiert werden.

    Das folgende Code-Snippet veranschaulicht, wie Sie eine Befehlsklasse schreiben können, durch die die Befehlsleiste erweitert wird: Auf diese Befehlsklasse (MyClaimCommand) bezieht sich der Tag bpe:command in der JSP-Datei.

    Mit dem Befehl werden die Vorbedingungen und andere Voraussetzungen, wie z. B. die korrekte Anzahl an ausgewählten Elementen, überprüft. Anschließend wird ein Verweis auf die Benutzertask-API HumanTaskManagerService abgerufen. Der Befehl iteriert über die ausgewählten Objekte und versucht, diese zu verarbeiten. Die Task wird über die HumanTaskManagerService-API mit einer ID abgerufen. Wenn keine Ausnahmebedingung auftritt, wird der Status für das entsprechende TaskInstanceBean-Objekt aktualisiert. Diese Aktion verhindert den erneuten Abruf des Objektwerts vom Server.

    public class MyClaimCommand implements Command {
    
      public String execute(List selectedObjects) throws ClientException {
    	    if( selectedObjects != null && selectedObjects.size() > 0 ) {
      	 try {
             // Festlegen der HumanTaskManagerService-API aus einer HTMConnection-Bean.
             // Konfigurieren der Bean in der Datei faces-config.xml für einen einfachen Zugriff
             // auf die JSF-Anwendung.
    		       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){
                 ;			// Fehler beim Iterieren oder Beanspruchen der Taskinstanz.
                      // Bitte zum besseren Verständnis des Beispiels ignorieren.
               }
             }
           }
                 catch(Exception e){
             ; 	// Konfigurations- oder Kommunikationsfehler.
               // Bitte zum besseren Verständnis des Beispiels ignorieren.
           }
         }
         return null;
      }
    
     // Standardimplementierungen
     public boolean isMultiSelectEnabled() { return false; }
     public boolean[] isApplicable(List itemsOnList) {return null; }
     public void setContext(Object targetModel) {; // Wird hier nicht verwendet }
    }
    
    Der Befehl wird wie folgt verarbeitet:
    1. Ein Befehl wird aufgerufen, wenn ein Benutzer auf die entsprechende Schaltfläche in der Befehlsleiste klickt. Mit der Befehlsleistenkomponente werden ausgewählte Elemente aus dem im Attribut model angegeben Elementprovider abgerufen, und es wird die Liste ausgewählter Objekte an die Methode execute der Instanz commandClass übergeben.
    2. Das Attribut commandClass bezieht sich auf die Implementierung eines angepassten Befehls, der die Befehlsschnittstelle implementiert. Der Befehl muss die Methode public String execute(List selectedObjects)throws ClientException implementieren. Der Befehl gibt ein Ergebnis zurück, das zur Festlegung der nächsten Navigationsregel für die JSF-Anwendung verwendet wird.
    3. Nachdem der Befehl ausgeführt wurde, wertet die Befehlsleistenkomponente das Attribut action aus. Bei dem Attribut action kann es sich um eine statische Zeichenfolge oder eine Methodenbindung an eine JSF-Methode action mit der Signatur public String Method() handeln. Verwenden Sie das Attribut action, um das Ergebnis einer Befehlsklasse zu überschreiben oder um ein Ergebnis für die Navigationsregeln explizit anzugeben. Das Attribut action wird nicht verarbeitet, wenn der Befehl eine andere Ausnahmebedingung als ErrorsInCommandException auslöst.

Ergebnis

Ihre JSF-Anwendung enthält nun eine JSP (JavaServer Pages), die eine angepasste Befehlsleiste implementiert.

Rechtliche Hinweise |

Letzte Aktualisierung: LASTUPDATEDVAR

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