[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