[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