[jbpm-commits] JBoss JBPM SVN: r2882 - in projects/gwt-console/trunk: rpc/src/main/java/org/jboss/bpm/console/client/model and 11 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Nov 11 09:34:01 EST 2008


Author: heiko.braun at jboss.com
Date: 2008-11-11 09:34:01 -0500 (Tue, 11 Nov 2008)
New Revision: 2882

Added:
   projects/gwt-console/trunk/war/src/test/examples/
   projects/gwt-console/trunk/war/src/test/examples/TaskAssignmentExample.par
Modified:
   projects/gwt-console/trunk/pom.xml
   projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
   projects/gwt-console/trunk/server/gwt-server.iml
   projects/gwt-console/trunk/server/pom.xml
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
   projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java
Log:
Task assigment and simplified lifecycle done

Modified: projects/gwt-console/trunk/pom.xml
===================================================================
--- projects/gwt-console/trunk/pom.xml	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/pom.xml	2008-11-11 14:34:01 UTC (rev 2882)
@@ -26,7 +26,7 @@
       <gson.version>1.2.2</gson.version>
       <commons.fileupload.version>1.2.1</commons.fileupload.version>
       <commons.io.version>1.3.2</commons.io.version>
-      <jbpm.version>3.3.0-SNAPSHOT</jbpm.version>
+      <jbpm.version>3.3.1-SNAPSHOT</jbpm.version>
       <javax.jaxb.version>2.1</javax.jaxb.version>
       <javax.ejb.version>3.0</javax.ejb.version>
       <jboss.common.version>2.2.7.GA</jboss.common.version>
@@ -45,7 +45,7 @@
          <!-- JBPM -->
          <dependency>
             <groupId>org.jbpm.jbpm3</groupId>
-            <artifactId>jbpm-core</artifactId>
+            <artifactId>jbpm-jpdl</artifactId>
             <scope>provided</scope>
             <version>${jbpm.version}</version>
          </dependency>

Modified: projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java
===================================================================
--- projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/rpc/src/main/java/org/jboss/bpm/console/client/model/TaskReference.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -22,8 +22,8 @@
 package org.jboss.bpm.console.client.model;
 
 import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.ArrayList;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -37,8 +37,8 @@
    private long processId;
 
    private String name;
-   private String actor;
-   
+   private String actor = "";
+
    private boolean isBlocking;
    private boolean isSignalling = true;
 
@@ -46,7 +46,6 @@
    private List<String> pooledActors = new ArrayList<String>();
 
    public enum STATE {OPEN, IN_PROGRESS, CLOSED};
-
    private STATE currentState;
 
    public TaskReference()
@@ -66,9 +65,10 @@
       this.processInstanceId = processInstanceId;
       this.processId = processId;
       this.name = taskName;
-      this.actor = actorName;
+      setActor(actorName);
       isBlocking = blocking;
       isSignalling = signalling;
+
       initOrUpdateState();
    }
 
@@ -119,6 +119,8 @@
 
    public void setActor(String actor)
    {
+      if(null==actor)
+         actor = "";
       this.actor = actor;
       initOrUpdateState();
    }
@@ -151,22 +153,13 @@
    public void addPooledActor(String actorId)
    {
       pooledActors.add(actorId);
-      initOrUpdateState();      
-   }
 
-   public long getProcessId()
-   {
-      return processId;
+      initOrUpdateState();
    }
 
-   public STATE getCurrentState()
-   {         
-      return currentState;
-   }
-
    private void initOrUpdateState()
    {
-      if(actor==null)
+      if(actor==null || actor.equals(""))
       {
          currentState = STATE.OPEN;
       }
@@ -177,11 +170,26 @@
          else
             currentState = STATE.IN_PROGRESS;
       }
+   }
 
+   public long getProcessId()
+   {
+      return processId;
    }
 
+   public STATE getCurrentState()
+   {
+      return currentState;
+   }
+
    public String toString()
    {
       return "TaskRef{id:"+id+",state:"+currentState+"}";
    }
+
+   public boolean hasPooledActors()
+   {
+      return !pooledActors.isEmpty();
+   }
+
 }

Modified: projects/gwt-console/trunk/server/gwt-server.iml
===================================================================
--- projects/gwt-console/trunk/server/gwt-server.iml	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/gwt-server.iml	2008-11-11 14:34:01 UTC (rev 2882)
@@ -537,6 +537,7 @@
         <SOURCES />
       </library>
     </orderEntry>
+    <orderEntry type="module" module-name="gwt-rpc" />
     <orderEntryProperties />
   </component>
 </module>

Modified: projects/gwt-console/trunk/server/pom.xml
===================================================================
--- projects/gwt-console/trunk/server/pom.xml	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/pom.xml	2008-11-11 14:34:01 UTC (rev 2882)
@@ -34,7 +34,7 @@
       </dependency>
       <dependency>
          <groupId>org.jbpm.jbpm3</groupId>
-         <artifactId>jbpm-core</artifactId>
+         <artifactId>jbpm-jpdl</artifactId>
          <scope>provided</scope>
       </dependency>
       <dependency>

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/TaskManagement.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -23,6 +23,7 @@
 
 import com.google.gson.Gson;
 import org.jboss.bpm.console.client.model.TaskReferenceWrapper;
+import org.jboss.bpm.console.client.model.TaskReference;
 import org.jboss.bpm.console.client.model.forms.FieldDef;
 import org.jboss.bpm.console.client.model.forms.FormDef;
 import org.jboss.bpm.console.client.model.util.MapEntry;
@@ -79,7 +80,7 @@
             new TaskReferenceWrapper(getTaskDAO().getTasksByActor(actorName));
       return createJsonResponse(wrapper);
    }
-   
+
    @GET
    @Path("forms/{processId}")
    @Produces("application/json")
@@ -100,6 +101,36 @@
       return createJsonResponse( entries );
    }
 
+   @POST
+   @Path("{taskId}/assignment/{actorId}")
+   @Produces("application/json")
+   public Response assignTask(
+         @PathParam("taskId")
+         long taskId,
+         @PathParam("actorId")
+         String actorId
+   )
+   {
+      log.debug("Reassign task " + taskId + " to '" + actorId +"'");
+      String actualActor = actorId.equalsIgnoreCase("none") ? null : actorId;
+      getTaskDAO().reassignTask(taskId, actualActor);      
+      return Response.ok().build();
+   }
+
+   @POST
+   @Path("{taskId}/assignment")
+   @Produces("application/json")
+   public Response releaseTask(
+         @PathParam("taskId")
+         long taskId       
+   )
+   {
+      log.debug("Release task " + taskId);
+      getTaskDAO().reassignTask(taskId, null);
+      return Response.ok().build();
+   }
+
+
    @GET
    @Path("forms/{processId}/{taskId}")
    @Produces("application/json")

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/TaskDAO.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -32,7 +32,9 @@
 public interface TaskDAO
 {
    List<TaskReference> getTasksByActor(String actorName);
-   List<TaskReference> getTasksByInstanceId(long instanceId);
    Map<String, String> getAvailableTaskForms(long processId);
    byte[] getTaskFormByTaskName(long processId, long taskId);
+
+   TaskReference getTaskById(long taskId);
+   void reassignTask(long taskId, String actorId);
 }

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -42,7 +42,6 @@
  */
 class JBPM3CommandDelegate
 {
-
    private LocalCommandService facade;
    private static final String DEFAULT_JNDI_NAME = "java:ejb/CommandServiceBean";
 
@@ -175,8 +174,22 @@
 
    public TaskInstance getTaskById(long taskId)
    {
-
       // include variables, but no logs
       return (TaskInstance) facade.execute( new GetTaskInstanceCommand(taskId, true, false));
    }
+
+   public void assignToAuthenticatedUser(long taskId, String actorId)
+   {
+      if(actorId!=null)
+      {
+         StartWorkOnTaskCommand command = new StartWorkOnTaskCommand(taskId, true);
+         command.setActorId(actorId);
+         facade.execute(command);
+      }
+      else
+      {
+         CancelWorkOnTaskCommand command = new CancelWorkOnTaskCommand(taskId);         
+         facade.execute(command);
+      }
+   }
 }

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3TaskDAO.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -23,16 +23,18 @@
 
 import org.jboss.bpm.console.client.model.TaskReference;
 import org.jboss.bpm.console.server.dao.TaskDAO;
+import org.jbpm.file.def.FileDefinition;
 import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.file.def.FileDefinition;
 import org.jbpm.util.XmlUtil;
-import org.jbpm.identity.Group;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
-import java.util.*;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -47,7 +49,6 @@
       this.delegate = new JBPM3CommandDelegate();
    }
 
-
    public List<TaskReference> getTasksByActor(String actorName)
    {
 
@@ -68,12 +69,6 @@
       return copy;
    }
 
-   // TODO: If not reqired please remove
-   public List<TaskReference> getTasksByInstanceId(long instanceId)
-   {
-      throw new RuntimeException("Not implemented");
-   }
-
    public Map<String, String> getAvailableTaskForms(long processId)
    {
       org.jbpm.graph.def.ProcessDefinition processDefinition =
@@ -131,4 +126,18 @@
          throw new RuntimeException("No form definition for taskId '"+taskId+"'");
       
    }
+
+   public TaskReference getTaskById(long taskId)
+   {
+      org.jbpm.taskmgmt.exe.TaskInstance t0 = delegate.getTaskById(taskId);
+      TaskReference taskRef = Transform.taskInstance(t0);
+      return taskRef; 
+   }
+
+
+   public void reassignTask(long taskId, String actorId)
+   {
+      // TODO: validation of actorId?
+      delegate.assignToAuthenticatedUser(taskId, actorId);
+   }
 }

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/URLBuilder.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -22,6 +22,7 @@
 package org.jboss.bpm.console.client;
 
 import org.jboss.bpm.console.client.model.ProcessInstance;
+import org.jboss.bpm.console.client.model.TaskReference;
 
 import java.util.List;
 
@@ -125,4 +126,10 @@
    {
       return getBaseUrl() + "/rs/tasks/forms/"+processId+"/"+taskId;
    }
+
+   public String getTaskAssignmentURL(long id, String actor)
+   {
+      String actualActor = actor == null ? "none" : actor;
+      return getBaseUrl() + "/rs/tasks/"+id+"/assignment/"+actualActor;
+   }
 }

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/model/DTOParser.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -22,6 +22,7 @@
 package org.jboss.bpm.console.client.model;
 
 import com.google.gwt.json.client.*;
+import com.allen_sauer.gwt.log.client.Log;
 import org.jboss.bpm.console.client.model.forms.FieldDef;
 import org.jboss.bpm.console.client.model.forms.FormDef;
 import org.jboss.bpm.console.client.util.JSONWalk;
@@ -84,7 +85,6 @@
 
    public static TaskReference parseTaskReference(JSONObject item)
    {
-
       long id = JSONWalk.on(item).next("id").asLong();
       long tokenId = JSONWalk.on(item).next("tokenId").asLong();
       long instanceId = JSONWalk.on(item).next("processInstanceId").asLong();

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -174,7 +174,7 @@
         }
       );
       instanceList.setRowSelectionModel(sm);
-
+      
       outerFormPanel.add(formPanel);
 
       // ----------------------------------

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskList.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -25,12 +25,13 @@
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.json.client.JSONObject;
 import com.gwtext.client.core.SortDir;
+import com.gwtext.client.core.Function;
+import com.gwtext.client.core.EventObject;
 import com.gwtext.client.data.*;
 import com.gwtext.client.data.event.StoreListenerAdapter;
-import com.gwtext.client.widgets.ComponentMgr;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.Component;
+import com.gwtext.client.widgets.*;
 import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
 import com.gwtext.client.widgets.form.FormPanel;
 import com.gwtext.client.widgets.grid.*;
 import org.jboss.bpm.console.client.MainView;
@@ -54,6 +55,7 @@
    private GroupingStore store;
    private String title;
    private RowSelectionModel rowSelectionModel;
+   public static final int PAGE_SIZE = 15;
 
    public TaskList(String titleName, final MainView view)
    {
@@ -300,20 +302,43 @@
       gridView.setGroupTextTpl("{text} ({[values.rs.length]} {[values.rs.length > 1 ?  \"Items\" : \"Item\"]})");
 
       if(rowSelectionModel!=null)
+      {
          grid.setSelectionModel(rowSelectionModel);
-      
+         grid.doOnRender(new Function() {
+            public void execute() {
+               rowSelectionModel.selectFirstRow();
+            }
+         }, 10);
+      }
       grid.setView(gridView);
       grid.setFrame(true);
       grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
       grid.setHeight(250);
       grid.setEnableHdMenu(false);
+
+      grid.setBottomToolbar(createToolbar(store));
+      
       return grid;
    }
 
+   private PagingToolbar createToolbar(final Store store)
+   {
+      PagingToolbar pagingToolbar = new PagingToolbar(store);
+      pagingToolbar.setPageSize(PAGE_SIZE);
+      pagingToolbar.setDisplayInfo(true);
+      pagingToolbar.setDisplayMsg("{0} - {1} of {2}");
+    
+      pagingToolbar.addSeparator();
+      pagingToolbar.addSpacer();
+
+      return pagingToolbar;
+   }
+
+
    public void reloadStore()
    {
       Log.debug("Reload " + this.getId());
-      store.load(0, 15);
+      store.load(0, PAGE_SIZE);
    }
 
    public GridPanel getGrid()

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/task/TaskListEditor.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -21,28 +21,27 @@
  */
 package org.jboss.bpm.console.client.task;
 
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.*;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Position;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.widgets.*;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import com.gwtext.client.widgets.form.DateField;
+import com.gwtext.client.widgets.form.FieldSet;
+import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.grid.RowSelectionModel;
+import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
+import com.gwtext.client.widgets.layout.ColumnLayout;
+import com.gwtext.client.widgets.layout.ColumnLayoutData;
 import org.jboss.bpm.console.client.Editor;
 import org.jboss.bpm.console.client.MainView;
 import org.jboss.bpm.console.client.UIConstants;
 import org.jboss.bpm.console.client.model.TaskReference;
 import org.jboss.bpm.console.client.widgets.TeaserPanel;
-import com.gwtext.client.widgets.layout.ColumnLayout;
-import com.gwtext.client.widgets.layout.ColumnLayoutData;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.Component;
-import com.gwtext.client.widgets.PaddedPanel;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.grid.RowSelectionModel;
-import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
-import com.gwtext.client.widgets.form.FormPanel;
-import com.gwtext.client.widgets.form.FieldSet;
-import com.gwtext.client.widgets.form.TextField;
-import com.gwtext.client.widgets.form.DateField;
-import com.gwtext.client.widgets.event.PanelListenerAdapter;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.core.Position;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.data.Record;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -126,7 +125,7 @@
          formContainer.setBorder(false);
          leftHand.add(formContainer);
          */
-         
+
          // ----------------------------------
 
          teaserPanel = new TeaserPanel();
@@ -151,7 +150,7 @@
 
    private Panel assembleFormPanel()
    {
-        // ---------------
+      // ---------------
 
       Panel outerFormPanel = new Panel();
       outerFormPanel.setBorder(false);
@@ -181,35 +180,44 @@
       fieldSet.add(new TextField("Id", "id", 230));
       fieldSet.add(new TextField("Name", "name", 230));
       fieldSet.add(new TextField("Actor", "actor", 230));
-      fieldSet.add(new DateField("State", "currentState", 230));
-      
+      fieldSet.add(new TextField("State", "currentState", 230));
+
       Panel inner = new PaddedPanel(fieldSet, 0, 10, 0, 0);
 
       formPanel.add(inner);
 
       final Button startBtn = new Button("Start Progress",
-        new ButtonListenerAdapter()
-        {
+            new ButtonListenerAdapter()
+            {
 
-           public void onClick(Button button, EventObject eventObject)
-           {
-              //selectedInstance.setState(ProcessInstance.STATE.SUSPENDED);
-              //persistStateChange();
-           }
-        }
+               public void onClick(Button button, EventObject eventObject)
+               {
+                  if(null==selectedInstance)
+                  {
+                     MessageBox.alert("Please select a task.");
+                     return;
+                  }
+                  selectedInstance.setActor(mainView.getUsername());
+                  persistChanges();
+               }
+            }
       );
-      //startBtn.setIcon("images/icons/pause.png");
 
       final Button stopBtn = new Button("Stop",
-        new ButtonListenerAdapter()
-        {
+            new ButtonListenerAdapter()
+            {
 
-           public void onClick(Button button, EventObject eventObject)
-           {
-              //selectedInstance.setState(ProcessInstance.STATE.RUNNING);
-              //persistStateChange();
-           }
-        }
+               public void onClick(Button button, EventObject eventObject)
+               {
+                  if(null==selectedInstance)
+                  {
+                     MessageBox.alert("Please select a task.");
+                     return;
+                  }
+                  selectedInstance.setActor(null);
+                  persistChanges();
+               }
+            }
       );
 
       formPanel.addButton(startBtn);
@@ -219,27 +227,33 @@
 
       final RowSelectionModel sm = new RowSelectionModel(true);
       sm.addListener(
-        new RowSelectionListenerAdapter()
-        {
-           public void onRowSelect(RowSelectionModel sm, int rowIndex, Record record)
-           {
-              selectedInstance = TaskList.transform(record);
+            new RowSelectionListenerAdapter()
+            {
+               public void onRowSelect(RowSelectionModel sm, int rowIndex, Record record)
+               {
+                  selectedInstance = TaskList.transform(record);
 
-              if(TaskReference.STATE.IN_PROGRESS == selectedInstance.getCurrentState())
-              {
-                 startBtn.disable();
-                 stopBtn.enable();
-              }
-              else
-              {
-                 startBtn.enable();
-                 stopBtn.disable();
-              }
+                  if(!selectedInstance.hasPooledActors())
+                  {
+                     // no group assignment available
+                     startBtn.disable();
+                     stopBtn.disable();
+                  }
+                  else if(TaskReference.STATE.IN_PROGRESS == selectedInstance.getCurrentState())
+                  {
+                     startBtn.disable();
+                     stopBtn.enable();
+                  }
+                  else
+                  {
+                     startBtn.enable();
+                     stopBtn.disable();
+                  }
 
-              formPanel.getForm().loadRecord(record);
-              formPanel.doLayout();
-           }
-        }
+                  formPanel.getForm().loadRecord(record);
+                  formPanel.doLayout();
+               }
+            }
       );
       taskList.setRowSelectionModel(sm);
 
@@ -247,4 +261,38 @@
 
       return outerFormPanel;
    }
+
+   private void persistChanges()
+   {
+      RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
+            mainView.getUrlBuilder().getTaskAssignmentURL(
+                  selectedInstance.getId(), selectedInstance.getActor()
+            )
+      );
+
+      try
+      {
+         rb.sendRequest(null,
+               new RequestCallback() {
+
+                  public void onResponseReceived(Request request, Response response)
+                  {
+                     // testSuccess
+                     taskList.reloadStore();
+                     selectedInstance = null;
+                  }
+
+                  public void onError(Request request, Throwable t)
+                  {
+                     // Unknown error
+                     Log.error("Unknown error", t);
+                  }
+               });
+      }
+      catch (RequestException e1)
+      {
+         mainView.setError(e1.getMessage());
+         Log.error("Request failed" ,e1);
+      }
+   }
 }

Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java	2008-11-11 13:59:20 UTC (rev 2881)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/util/JSONWalk.java	2008-11-11 14:34:01 UTC (rev 2882)
@@ -67,7 +67,7 @@
             match = JSONWalk.on(child).next(name);            
          }
       }
-
+      
       return match;
    }
 

Added: projects/gwt-console/trunk/war/src/test/examples/TaskAssignmentExample.par
===================================================================
(Binary files differ)


Property changes on: projects/gwt-console/trunk/war/src/test/examples/TaskAssignmentExample.par
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jbpm-commits mailing list