[jbpm-commits] JBoss JBPM SVN: r2916 - in projects/spec/trunk/modules: cts/src/test/java/org/jbpm/test/cts/service/process and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Nov 13 12:00:09 EST 2008
Author: thomas.diesler at jboss.com
Date: 2008-11-13 12:00:09 -0500 (Thu, 13 Nov 2008)
New Revision: 2916
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Token.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/waitstate/WaitStateTest.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
Log:
Add notion of parent/child tokens
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Token.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Token.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Token.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -23,6 +23,8 @@
// $Id$
+import java.util.Set;
+
import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.runtime.Attachments;
@@ -52,6 +54,11 @@
ProcessEngine getProcessEngine();
/**
+ * Get the associated {@link Process}
+ */
+ Process getProcess();
+
+ /**
* Get the unique token identity
*/
String getTokenID();
@@ -60,11 +67,6 @@
* Get the token status
*/
TokenStatus getTokenStatus();
-
- /**
- * Get the associated {@link Process}
- */
- Process getProcess();
/**
* Get the associated {@link Attachments}
@@ -82,7 +84,24 @@
Node getCurrentNode();
/**
+ * Get the root token that his Token is associated with
+ */
+ Token getRootToken();
+
+ /**
+ * Get the parent token that his Token is associated with
+ * @return null if this is the root token
+ */
+ Token getParentToken();
+
+ /**
+ * Get the set of child tokens
+ * @return An empty set if there are none
+ */
+ Set<Token> getChildTokens();
+
+ /**
* Signal the Token, which takes it to the next wait state
*/
- Token signal();
+ void signal();
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -27,9 +27,9 @@
import javax.management.ObjectName;
+import org.jbpm.api.client.Process;
import org.jbpm.api.client.ProcessDefinition;
import org.jbpm.api.client.ProcessEngine;
-import org.jbpm.api.client.preview.ProcessAsync;
import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessInstanceService;
import org.jbpm.api.test.CTSTestCase;
@@ -66,7 +66,7 @@
ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
ProcessInstanceService procService = engine.getService(ProcessInstanceService.class);
- ProcessAsync proc = (ProcessAsync)procDef.newInstance();
+ Process proc = procDef.newInstance();
assertNotNull("Process not null", proc);
assertNull("Process not automatically registered", procService.getProcess(proc.getKey()));
assertNull("ProcessDefinition not automatically registered", procDefService.getProcessDefinition(procDef.getKey()));
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -25,8 +25,8 @@
import javax.management.ObjectName;
+import org.jbpm.api.client.Process;
import org.jbpm.api.client.ProcessDefinition;
-import org.jbpm.api.client.preview.ProcessAsync;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.service.ProcessDefinitionService;
@@ -47,7 +47,7 @@
ProcessInstanceService procService = ProcessInstanceService.locateProcessService();
ProcessDefinition procDef = getProcessDefinition();
- ProcessAsync proc = (ProcessAsync)procDef.newInstance();
+ Process proc = procDef.newInstance();
assertNull("ProcessDefinition not registered automatically", procDefService.getProcessDefinition(procDef.getKey()));
assertNull("Process not registered automatically", procService.getProcess(proc.getKey()));
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/waitstate/WaitStateTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/waitstate/WaitStateTest.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/waitstate/WaitStateTest.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -25,10 +25,10 @@
import java.io.IOException;
+import org.jbpm.api.client.Process;
import org.jbpm.api.client.ProcessDefinition;
import org.jbpm.api.client.Token;
import org.jbpm.api.client.Token.TokenStatus;
-import org.jbpm.api.client.preview.ProcessAsync;
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.service.ProcessBuilderService;
@@ -45,24 +45,30 @@
public void testBasicWaitState() throws Exception
{
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
- ProcessAsync proc = (ProcessAsync)procDef.newInstance();
+ Process proc = procDef.newInstance();
// Start the Process
- Token tok = proc.startProcess();
- String nodeName = tok.getCurrentNode().getName();
- assertEquals(TokenStatus.Suspended, tok.getTokenStatus());
+ Token token = proc.startProcess();
+ String nodeName = token.getCurrentNode().getName();
+ assertEquals(TokenStatus.Suspended, token.getTokenStatus());
assertEquals("TaskA", nodeName);
- nodeName = tok.signal().getCurrentNode().getName();
- assertEquals(TokenStatus.Suspended, tok.getTokenStatus());
+ token.signal();
+
+ nodeName = token.getCurrentNode().getName();
+ assertEquals(TokenStatus.Suspended, token.getTokenStatus());
assertEquals("TaskB", nodeName);
- nodeName = tok.signal().getCurrentNode().getName();
- assertEquals(TokenStatus.Suspended, tok.getTokenStatus());
+ token.signal();
+
+ nodeName = token.getCurrentNode().getName();
+ assertEquals(TokenStatus.Suspended, token.getTokenStatus());
assertEquals("TaskC", nodeName);
- nodeName = tok.signal().getCurrentNode().getName();
- assertEquals(TokenStatus.Destroyed, tok.getTokenStatus());
+ token.signal();
+
+ nodeName = token.getCurrentNode().getName();
+ assertEquals(TokenStatus.Destroyed, token.getTokenStatus());
assertEquals("End", nodeName);
}
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -270,7 +270,10 @@
token.setLastFlow(new InitialFlow(start));
token.setTokenStatus(TokenStatus.Started);
- return token.signal();
+ // Signal the initial token
+ token.signal();
+
+ return token;
}
public ObjectName startProcessAsync()
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -23,6 +23,8 @@
//$Id$
+import java.util.Set;
+
import org.hibernate.Session;
import org.jbpm.api.client.Process;
import org.jbpm.api.client.ProcessEngine;
@@ -118,6 +120,24 @@
}
@Override
+ public Set<Token> getChildTokens()
+ {
+ return delegateToken.getChildTokens();
+ }
+
+ @Override
+ public Token getParentToken()
+ {
+ return delegateToken.getParentToken();
+ }
+
+ @Override
+ public Token getRootToken()
+ {
+ return delegateToken.getRootToken();
+ }
+
+ @Override
public Session getSession()
{
return delegateToken.getSession();
@@ -130,9 +150,9 @@
}
@Override
- public Token signal()
+ public void signal()
{
- return delegateToken.signal();
+ delegateToken.signal();
}
public String toString()
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java 2008-11-13 16:42:27 UTC (rev 2915)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java 2008-11-13 17:00:09 UTC (rev 2916)
@@ -23,6 +23,10 @@
//$Id$
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
import org.hibernate.Session;
import org.jboss.util.id.UID;
import org.jbpm.api.client.Process;
@@ -59,6 +63,9 @@
private TokenStatus status;
private Process proc;
private Session session;
+
+ private Token parentToken;
+ private Set<Token> childTokens = new HashSet<Token>();
/**
* Construct a Token with given {@link Attachments}
@@ -102,6 +109,47 @@
}
@Override
+ public Token getRootToken()
+ {
+ Token token = this;
+ while (token.getParentToken() != null)
+ {
+ token = token.getParentToken();
+ }
+ return token;
+ }
+
+ @Override
+ public Token getParentToken()
+ {
+ return parentToken;
+ }
+
+ void setParentToken(Token parentToken)
+ {
+ this.parentToken = parentToken;
+ }
+
+ @Override
+ public Set<Token> getChildTokens()
+ {
+ return Collections.unmodifiableSet(childTokens);
+ }
+
+ public void addChildToken(TokenImpl childTok)
+ {
+ childTok.setParentToken(this);
+ childTokens.add(childTok);
+ }
+
+
+ public void removeChildToken(TokenImpl childTok)
+ {
+ if (childTokens.remove(childTok))
+ childTok.setParentToken(null);
+ }
+
+ @Override
public Attachments getAttachments()
{
return att;
@@ -127,7 +175,7 @@
}
@Override
- public Token signal()
+ public void signal()
{
Node node = getCurrentNode();
if (node == null)
@@ -163,8 +211,6 @@
// Call the interceptor chain
rtContext.next();
}
-
- return this;
}
private boolean continueTokenExecution()
More information about the jbpm-commits
mailing list