[jbpm-commits] JBoss JBPM SVN: r3129 - jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/model.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Nov 27 10:20:20 EST 2008


Author: thomas.diesler at jboss.com
Date: 2008-11-27 10:20:20 -0500 (Thu, 27 Nov 2008)
New Revision: 3129

Modified:
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java
Log:
Add Process.cancel()

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java	2008-11-27 14:56:40 UTC (rev 3128)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java	2008-11-27 15:20:20 UTC (rev 3129)
@@ -29,7 +29,6 @@
 import javax.management.ObjectName;
 
 import org.jboss.bpm.api.Constants;
-import org.jboss.bpm.api.NotImplementedException;
 import org.jboss.bpm.api.client.ProcessEngine;
 import org.jboss.bpm.api.model.Node;
 import org.jboss.bpm.api.model.Process;
@@ -55,28 +54,28 @@
 
   private ProcessDefinitionImpl procDef;
   private ProcessInstance oldProc;
-  private ProcessStatus procStatus = ProcessStatus.None;
-  
+  private ProcessStatus status = ProcessStatus.None;
+
   public ProcessImpl(ProcessDefinitionImpl procDef)
   {
     this.procDef = procDef;
     this.oldProc = new ProcessInstance(procDef.getOldProcessDefinition());
   }
 
-  //@Override
+  // @Override
   public ObjectName getKey()
   {
     long id = oldProc.getId();
     return ObjectNameFactory.create(Constants.ID_DOMAIN + ":proc=" + getName() + ",id=" + id);
   }
-  
-  //@Override
+
+  // @Override
   public ProcessDefinition getProcessDefinition()
   {
     return procDef;
   }
 
-  //@Override
+  // @Override
   public ProcessEngine getProcessEngine()
   {
     return procDef.getProcessEngine();
@@ -87,24 +86,29 @@
     return oldProc;
   }
 
-  //@Override
+  // @Override
   public ProcessStatus getProcessStatus()
   {
     Token rootToken = getRootToken();
-    if (rootToken != null && procStatus == ProcessStatus.Active)
+    TokenStatus tokenStatus = rootToken != null ? rootToken.getTokenStatus() : null;
+
+    if (oldProc.isSuspended())
+      status = ProcessStatus.Suspended;
+
+    if (status == ProcessStatus.Active)
     {
-      if (rootToken.getTokenStatus() == TokenStatus.Destroyed)
-        procStatus = ProcessStatus.Completed;
+      if (oldProc.hasEnded() || tokenStatus == TokenStatus.Destroyed)
+        status = ProcessStatus.Completed;
     }
-    return procStatus;
+    return status;
   }
 
-  public void setProcessStatus(ProcessStatus procStatus)
+  public void setProcessStatus(ProcessStatus status)
   {
-    this.procStatus = procStatus;
+    this.status = status;
   }
 
-  //@Override
+  // @Override
   public String getName()
   {
     return procDef.getName();
@@ -120,46 +124,46 @@
     return oldProc.getStart();
   }
 
-  //@Override
+  // @Override
   public <T extends Node> T getNode(Class<T> clazz, String name)
   {
     return procDef.getNode(clazz, name);
   }
 
-  //@Override
+  // @Override
   public Node getNode(String name)
   {
     return procDef.getNode(name);
   }
 
-  //@Override
+  // @Override
   public List<Node> getNodes()
   {
     return procDef.getNodes();
   }
 
-  //@Override
+  // @Override
   public <T extends Node> List<T> getNodes(Class<T> clazz)
   {
     return procDef.getNodes(clazz);
   }
 
-  //@Override
+  // @Override
   public Token startProcess()
   {
     return startProcess(null);
   }
 
-  //@Override
+  // @Override
   public Token startProcess(Attachments contextData)
   {
     // Register the Process
     ProcessService procService = getProcessEngine().getService(ProcessService.class);
     procService.registerProcess(this);
-    
+
     // Create the root token
     Token token = new TokenImpl(this, oldProc.getRootToken());
-    
+
     // Initialize the context data
     if (contextData != null)
     {
@@ -170,11 +174,11 @@
         tokenAtt.addAttachment(key.getClassPart(), key.getNamePart(), val);
       }
     }
-    
+
     // Signal the root token
     setProcessStatus(ProcessStatus.Active);
     token.signal();
-    
+
     return token;
   }
 
@@ -187,20 +191,33 @@
   {
     return getAllTokens(getRootToken());
   }
-  
+
   public void suspend()
   {
+    if (status != ProcessStatus.Active)
+      throw new IllegalStateException("Cannot suspend a process in state: " + status);
+    
     oldProc.suspend();
+    status = ProcessStatus.Suspended;
   }
-  
+
   public void resume()
   {
+    if (status != ProcessStatus.Suspended)
+      throw new IllegalStateException("Cannot resume a process in state: " + status);
+    
     oldProc.resume();
+    status = ProcessStatus.Active;
   }
 
   public void cancel()
   {
-    throw new NotImplementedException();
+    if (status != ProcessStatus.Active && status != ProcessStatus.Suspended)
+      throw new IllegalStateException("Cannot cancel a process in state: " + status);
+    
+    oldProc.setEnd(new Date());
+    oldProc.end();
+    status = ProcessStatus.Cancelled;
   }
 
   private Set<Token> getAllTokens(Token token)




More information about the jbpm-commits mailing list