[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