[jbpm-commits] JBoss JBPM SVN: r3089 - projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Nov 26 02:33:48 EST 2008
Author: thomas.diesler at jboss.com
Date: 2008-11-26 02:33:48 -0500 (Wed, 26 Nov 2008)
New Revision: 3089
Modified:
projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java
Log:
Restore Spec integration
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-26 07:27:22 UTC (rev 3088)
+++ projects/gwt-console/trunk/server/src/main/java/org/jboss/bpm/console/server/integration/spec/ProcessManagementImpl.java 2008-11-26 07:33:48 UTC (rev 3089)
@@ -21,11 +21,22 @@
*/
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.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
@@ -37,36 +48,147 @@
{
public List<ProcessDefinitionRef> getAllDefinitions()
{
- throw new RuntimeException("Not implemented");
+ 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 RuntimeException("Not implemented");
+ ProcessDefinitionRef results = null;
+
+ ProcessDefinition procDef = getProcessDefinitionById(procDefId);
+ if (procDef != null)
+ {
+ results = new ProcessDefinitionRef(procDefId, procDef.getName(), procDef.getVersion());
+ }
+
+ return results;
}
- public List<ProcessDefinitionRef> removeDefinition(long processId)
+ public List<ProcessDefinitionRef> removeDefinition(long procDefId)
{
- throw new RuntimeException("Not implemented");
+ ProcessDefinition procDef = getProcessDefinitionById(procDefId);
+ if (procDef != null)
+ {
+ ProcessDefinitionService pdService = getProcessDefinitionService();
+ pdService.unregisterProcessDefinition(procDef.getKey());
+ }
+ return getAllDefinitions();
}
- public ProcessInstanceRef newInstance(long processId)
+ public ProcessInstanceRef newInstance(long procDefId)
{
- throw new RuntimeException("Not implemented");
+ 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 List<ProcessInstanceRef> getInstancesByDefinitionId(long processId)
+ public List<ProcessInstanceRef> getInstancesByDefinitionId(long procDefId)
{
throw new RuntimeException("Not implemented");
}
- public ProcessInstanceRef getInstanceById(long instanceId)
+ public ProcessInstanceRef getInstanceById(long procID)
{
- throw new RuntimeException("Not implemented");
+ Process proc = getProcessById(procID);
+ ProcessInstanceRef procRef = adaptProcess(proc);
+ return procRef;
}
public void signalToken(long tokenId, String signal)
{
throw new RuntimeException("Not implemented");
}
+
+ private ProcessDefinitionService getProcessDefinitionService()
+ {
+ 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