[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