[jbpm-commits] JBoss JBPM SVN: r3082 - in projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server: integration and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Nov 25 10:41:56 EST 2008


Author: thomas.diesler at jboss.com
Date: 2008-11-25 10:41:56 -0500 (Tue, 25 Nov 2008)
New Revision: 3082

Modified:
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/ProcessMgmtFacade.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/ProcessManagement.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/jbpm3/JBPM3ProcessManagement.java
   projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java
Log:
API integration first cut

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/ProcessMgmtFacade.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/ProcessMgmtFacade.java	2008-11-25 14:37:10 UTC (rev 3081)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/ProcessMgmtFacade.java	2008-11-25 15:41:56 UTC (rev 3082)
@@ -21,20 +21,24 @@
  */
 package org.jboss.bpm.console.server;
 
-import com.google.gson.Gson;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.console.client.model.ProcessDefinitionRefWrapper;
 import org.jboss.bpm.console.client.model.ProcessInstanceRef;
 import org.jboss.bpm.console.client.model.ProcessInstanceRefWrapper;
-import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
 import org.jboss.bpm.console.server.gson.GsonFactory;
 import org.jboss.bpm.console.server.integration.JBPM3Extension;
 import org.jboss.bpm.console.server.integration.ManagementFactory;
 import org.jboss.bpm.console.server.integration.ProcessManagement;
 
-import javax.ws.rs.*;
-import javax.ws.rs.core.Response;
+import com.google.gson.Gson;
 
 /**
  * REST server module for accessing process related data.
@@ -83,18 +87,6 @@
       return createJsonResponse(wrapper);
    }
 
-   @GET
-   @Path("definitions/{name}")
-   @Produces("application/json")
-   public Response getDefinitionByName(
-         @PathParam("name")
-         String name
-   )
-   {
-      ProcessDefinitionRef def = getProcessDAO().getDefinition(name);
-      return createJsonResponse(def);
-   }
-
    @POST
    @Path("definitions/{id}/remove")
    @Produces("application/json")

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/ProcessManagement.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/ProcessManagement.java	2008-11-25 14:37:10 UTC (rev 3081)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/ProcessManagement.java	2008-11-25 15:41:56 UTC (rev 3082)
@@ -44,6 +44,4 @@
    ProcessInstanceRef newInstance(long processId);
 
    void signalToken(long tokenId, String signal);
-
-   ProcessDefinitionRef getDefinition(String name);
 }

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/jbpm3/JBPM3ProcessManagement.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/jbpm3/JBPM3ProcessManagement.java	2008-11-25 14:37:10 UTC (rev 3081)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/jbpm3/JBPM3ProcessManagement.java	2008-11-25 15:41:56 UTC (rev 3082)
@@ -60,13 +60,6 @@
       return Transform.processDefinition(p0);
    }
 
-
-   public ProcessDefinitionRef getDefinition(String name)
-   {
-      ProcessDefinition p0 = delegate.getActualDefinition(name);
-      return Transform.processDefinition(p0);
-   }
-
    public List<ProcessDefinitionRef> removeDefinition(long processId)
    {
       delegate.removeActualDefinition(processId);

Modified: projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java
===================================================================
--- projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java	2008-11-25 14:37:10 UTC (rev 3081)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java	2008-11-25 15:41:56 UTC (rev 3082)
@@ -21,12 +21,23 @@
  */
 package org.jboss.bpm.console.server.integration.spec;
 
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
+import javax.management.ObjectName;
+
 import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
 import org.jboss.bpm.console.client.model.ProcessInstanceRef;
 import org.jboss.bpm.console.server.integration.ProcessManagement;
 import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.client.Configuration;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.service.ProcessDefinitionService;
+import org.jbpm.api.service.ProcessService;
 
 /**
  * An implementation that delegates to the jBPM API
@@ -38,41 +49,147 @@
 {
   public List<ProcessDefinitionRef> getAllDefinitions()
   {
-    throw new NotImplementedException();
+    List<ProcessDefinitionRef> results = new ArrayList<ProcessDefinitionRef>();
+    
+    ProcessDefinitionService pdService = getProcessDefinitionService();
+    Iterator<ObjectName> itKey = pdService.getProcessDefinitions().iterator();
+    while(itKey.hasNext())
+    {
+      ObjectName procDefKey = itKey.next();
+      ProcessDefinition procDef = pdService.getProcessDefinition(procDefKey);
+      ProcessDefinitionRef pdRef = adaptProcessDefinition(procDef);
+      results.add(pdRef);
+    }
+    
+    return results;
   }
 
-  public ProcessDefinitionRef getDefinitionById(long processId)
+  public ProcessDefinitionRef getDefinitionById(long procDefId)
   {
-    throw new NotImplementedException();
+    ProcessDefinitionRef results = null;
+    
+    ProcessDefinition procDef = getProcessDefinitionById(procDefId);
+    if (procDef != null)
+    {
+      results = new ProcessDefinitionRef(procDefId, procDef.getName(), procDef.getVersion());
+    }
+    
+    return results;
   }
 
-  public ProcessDefinitionRef getDefinition(String name)
+  public List<ProcessDefinitionRef> removeDefinition(long procDefId)
   {
-    throw new NotImplementedException();
+    ProcessDefinition procDef = getProcessDefinitionById(procDefId);
+    if (procDef != null)
+    {
+      ProcessDefinitionService pdService = getProcessDefinitionService();
+      pdService.unregisterProcessDefinition(procDef.getKey());
+    }
+    return getAllDefinitions();
   }
 
-  public List<ProcessDefinitionRef> removeDefinition(long processId)
+  public ProcessInstanceRef newInstance(long procDefId)
   {
-    throw new NotImplementedException();
+    ProcessDefinition procDef = getProcessDefinitionById(procDefId);
+    if (procDef == null)
+      throw new IllegalStateException("Cannot obtain process definition: " + procDefId);
+
+    Process proc = procDef.newInstance();
+    ProcessInstanceRef procRef = adaptProcess(proc);
+    return procRef;
   }
 
-  public ProcessInstanceRef newInstance(long processId)
+  public List<ProcessInstanceRef> getInstancesByDefinitionId(long procDefId)
   {
     throw new NotImplementedException();
   }
 
-  public List<ProcessInstanceRef> getInstancesByDefinitionId(long processId)
+  public ProcessInstanceRef getInstanceById(long procID)
   {
-    throw new NotImplementedException();
+    Process proc = getProcessById(procID);
+    ProcessInstanceRef procRef = adaptProcess(proc);
+    return procRef;
   }
 
-  public ProcessInstanceRef getInstanceById(long instanceId)
+  public void signalToken(long tokenId, String signal)
   {
     throw new NotImplementedException();
   }
 
-  public void signalToken(long tokenId, String signal)
+  private ProcessDefinitionService getProcessDefinitionService()
   {
-    throw new NotImplementedException();
+    ProcessEngine engine = Configuration.getProcessEngine();
+    ProcessDefinitionService pdService = engine.getService(ProcessDefinitionService.class);
+    return pdService;
   }
+
+  private ProcessDefinition getProcessDefinitionById(long procDefID)
+  {
+    ProcessDefinition procDef = null;
+    ProcessDefinitionService pdService = getProcessDefinitionService();
+    Iterator<ObjectName> it = pdService.getProcessDefinitions().iterator();
+    while(it.hasNext())
+    {
+      ObjectName auxKey = it.next();
+      if (procDefID == apaptKey(auxKey))
+      {
+        procDef = pdService.getProcessDefinition(auxKey);
+        break;
+      }
+    }
+    return procDef;
+  }
+
+  private ProcessDefinitionRef adaptProcessDefinition(ProcessDefinition procDef)
+  {
+    ObjectName procDefKey = procDef.getKey();
+    Long procDefID = apaptKey(procDefKey);
+    return new ProcessDefinitionRef(procDefID, procDef.getName(), procDef.getVersion());
+  }
+
+  private ProcessService getProcessService()
+  {
+    ProcessEngine engine = Configuration.getProcessEngine();
+    ProcessService pService = engine.getService(ProcessService.class);
+    return pService;
+  }
+
+  private Process getProcessById(long procID)
+  {
+    Process proc = null;
+    ProcessService pdService = getProcessService();
+    Iterator<ObjectName> it = pdService.getProcesses().iterator();
+    while(it.hasNext())
+    {
+      ObjectName auxKey = it.next();
+      if (procID == apaptKey(auxKey))
+      {
+        proc = pdService.getProcess(auxKey);
+        break;
+      }
+    }
+    return proc;
+  }
+  
+  private ProcessInstanceRef adaptProcess(Process proc)
+  {
+    Long procDefID = apaptKey(proc.getProcessDefinition().getKey());
+    Long procID = apaptKey(proc.getKey());
+    
+    // [TODO] clarify process status
+    ProcessStatus status = proc.getProcessStatus();
+    boolean suspended = ProcessStatus.Active != status;
+    
+    ProcessInstanceRef procRef = new ProcessInstanceRef(procID, procDefID, proc.getStartDate(), proc.getEndDate(), suspended);
+    return procRef;
+  }
+
+  private Long apaptKey(ObjectName procDefKey)
+  {
+    String procDefID = procDefKey.getKeyProperty("id");
+    if (procDefID == null)
+      throw new IllegalStateException("Cannot obtain id property from: " + procDefKey);
+    
+    return new Long(procDefID);
+  }
 }




More information about the jbpm-commits mailing list