[jbpm-commits] JBoss JBPM SVN: r3091 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Nov 26 03:44:19 EST 2008


Author: thomas.diesler at jboss.com
Date: 2008-11-26 03:44:19 -0500 (Wed, 26 Nov 2008)
New Revision: 3091

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/model/Process.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/ThreadingTokenExecutor.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
   projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml
Log:
Add token management to process

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-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Token.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -25,6 +25,8 @@
 
 import java.util.Set;
 
+import javax.management.ObjectName;
+
 import org.jbpm.api.model.Node;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.SequenceFlow;
@@ -62,7 +64,7 @@
   /**
    * Get the unique token identity
    */
-  String getTokenID();
+  ObjectName getKey();
 
   /**
    * Get the token status

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java	2008-11-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -24,6 +24,7 @@
 //$Id$
 
 import java.util.Date;
+import java.util.Set;
 
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.client.Token;
@@ -61,6 +62,16 @@
   ProcessStatus getProcessStatus();
 
   /**
+   * Get the root Token associated with this Process 
+   */
+  Token getRootToken();
+  
+  /**
+   * Get the set of Tokens associated with this Process 
+   */
+  Set<Token> getTokens();
+  
+  /**
    * Start the process
    */
   Token startProcess();

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-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -24,6 +24,7 @@
 //$Id$
 
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -94,6 +95,9 @@
   private Date endDate;
   
   @Transient
+  private Token rootToken;
+  
+  @Transient
   private transient RuntimeException runtimeException;
 
   public ProcessImpl(ProcessEngine engine, ProcessDefinitionImpl procDef, ProcessStructureImpl procStruct)
@@ -162,6 +166,30 @@
   }
 
   @Override
+  public Token getRootToken()
+  {
+    return rootToken;
+  }
+
+  @Override
+  public Set<Token> getTokens()
+  {
+    return getAllTokens(rootToken);
+  }
+
+  private Set<Token> getAllTokens(Token token)
+  {
+    Set<Token> tokens = new HashSet<Token>();
+    if (token != null)
+    {
+      tokens.add(token);
+      for (Token childToken : token.getChildTokens())
+        tokens.addAll(getAllTokens(childToken));
+    }
+    return tokens;
+  }
+  
+  @Override
   public List<Assignment> getAssignments()
   {
     return procStruct.getAssignments();
@@ -271,13 +299,15 @@
   @Override
   public Token startProcess()
   {
-    return startProcessInternal(null);
+    rootToken = startProcessInternal(null);
+    return rootToken;
   }
 
   @Override
   public Token startProcess(Attachments att)
   {
-    return startProcessInternal(att);
+    rootToken = startProcessInternal(att);
+    return rootToken;
   }
 
   private Token startProcessInternal(Attachments att)

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-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -25,6 +25,8 @@
 
 import java.util.Set;
 
+import javax.management.ObjectName;
+
 import org.hibernate.Session;
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.client.Token;
@@ -79,9 +81,9 @@
   }
 
   @Override
-  public String getTokenID()
+  public ObjectName getKey()
   {
-    return delegateToken.getTokenID();
+    return delegateToken.getKey();
   }
 
   @Override

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/ThreadingTokenExecutor.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/ThreadingTokenExecutor.java	2008-11-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/ThreadingTokenExecutor.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -31,6 +31,8 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import javax.management.ObjectName;
+
 import org.jbpm.api.client.Token;
 import org.jbpm.api.client.Token.TokenStatus;
 import org.jbpm.api.model.SequenceFlow;
@@ -54,7 +56,7 @@
 
   private RuntimeProcess rtProc;
   private ExecutorService executor = Executors.newCachedThreadPool();
-  Map<String, RunnableToken> runnableTokens = new HashMap<String, RunnableToken>();
+  Map<ObjectName, RunnableToken> runnableTokens = new HashMap<ObjectName, RunnableToken>();
 
   public ThreadingTokenExecutor(RuntimeProcess rtProc)
   {
@@ -93,7 +95,7 @@
       log.debug("Create Token: " + token);
 
       RunnableToken rtToken = new RunnableToken(this, rtProc, mutableToken);
-      runnableTokens.put(token.getTokenID(), rtToken);
+      runnableTokens.put(token.getKey(), rtToken);
     }
   }
 
@@ -110,7 +112,7 @@
       MutableToken mutableToken = (MutableToken)token;
       mutableToken.setTokenStatus(TokenStatus.Started);
 
-      RunnableToken rtToken = runnableTokens.get(token.getTokenID());
+      RunnableToken rtToken = runnableTokens.get(token.getKey());
       executor.submit(rtToken);
     }
   }
@@ -150,7 +152,7 @@
       log.debug("Destroy Token: " + token);
       MutableToken mutableToken = (MutableToken)token;
       mutableToken.setTokenStatus(TokenStatus.Destroyed);
-      runnableTokens.remove(token.getTokenID());
+      runnableTokens.remove(token.getKey());
     }
   }
 
@@ -159,7 +161,7 @@
   {
     synchronized (runnableTokens)
     {
-      RunnableToken rtToken = runnableTokens.get(token.getTokenID());
+      RunnableToken rtToken = runnableTokens.get(token.getKey());
       if (rtToken == null)
         throw new IllegalStateException("Not a runnable token: " + token);
 
@@ -177,7 +179,7 @@
   {
     synchronized (runnableTokens)
     {
-      String tokenID = token.getTokenID();
+      ObjectName tokenID = token.getKey();
       RunnableToken rtToken = runnableTokens.get(tokenID);
       if (rtToken == null)
         throw new IllegalStateException("Not a runnable token: " + tokenID);
@@ -190,7 +192,7 @@
       mutableToken.setTokenStatus(TokenStatus.Started);
 
       rtToken = new RunnableToken(this, rtProc, mutableToken);
-      runnableTokens.put(token.getTokenID(), rtToken);
+      runnableTokens.put(token.getKey(), rtToken);
       executor.submit(rtToken);
     }
   }

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-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java	2008-11-26 08:44:19 UTC (rev 3091)
@@ -27,8 +27,11 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.management.ObjectName;
+
 import org.hibernate.Session;
 import org.jboss.util.id.UID;
+import org.jbpm.api.Constants;
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.client.Token;
 import org.jbpm.api.model.Node;
@@ -36,6 +39,7 @@
 import org.jbpm.api.model.SequenceFlow;
 import org.jbpm.api.model.WaitState;
 import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.model.builder.ObjectNameFactory;
 import org.jbpm.api.runtime.Attachments;
 import org.jbpm.api.runtime.BasicAttachments;
 import org.jbpm.api.runtime.Attachments.Key;
@@ -58,7 +62,7 @@
  */
 public class TokenImpl implements MutableToken
 {
-  private String id;
+  private ObjectName key;
   private SequenceFlow flow;
   private Attachments att;
   private TokenStatus status;
@@ -74,7 +78,7 @@
   public TokenImpl(Process proc, Attachments att)
   {
     this.att = new BasicAttachments(att);
-    this.id = new UID().toString();
+    this.key = ObjectNameFactory.create(Constants.ID_DOMAIN + ":id=" + new UID());
     this.status = TokenStatus.Created;
     this.proc = proc;
   }
@@ -86,9 +90,9 @@
   }
 
   @Override
-  public String getTokenID()
+  public ObjectName getKey()
   {
-    return id;
+    return key;
   }
 
   @Override
@@ -273,6 +277,6 @@
 
   public String toString()
   {
-    return "[sf=" + getLastFlow() + ",status=" + getTokenStatus() + ",ctx=" + getAttachments() + ",id=" + id + "]";
+    return "[sf=" + getLastFlow() + ",status=" + getTokenStatus() + ",ctx=" + getAttachments() + ",key=" + key + "]";
   }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml	2008-11-26 08:04:34 UTC (rev 3090)
+++ projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml	2008-11-26 08:44:19 UTC (rev 3091)
@@ -11,7 +11,6 @@
       <property name="services">
         <set elementClass="org.jbpm.api.service.Service">
           <inject bean="jBPMDialectHandlerService" />
-          <inject bean="jBPMExecutionService" />
           <inject bean="jBPMMessageService" />
           <inject bean="jBPMMessageBuilderService" />
           <inject bean="jBPMPersistenceService" />
@@ -20,6 +19,7 @@
           <inject bean="jBPMProcessService" />
           <inject bean="jBPMSignalService" />
           <inject bean="jBPMSignalBuilderService" />
+          <inject bean="jBPMThreadingService" />
         </set>
       </property>
     </bean>
@@ -92,12 +92,12 @@
     <bean name="jBPMDialectHandlerXPDL21" class="org.jbpm.dialect.xpdl21.DialectHandlerImpl"/>
     
     <!-- Other Services -->
-    <bean name="jBPMExecutionService" class="org.jbpm.ri.service.ExecutionServiceImpl" />
     <bean name="jBPMMessageService" class="org.jbpm.ri.service.MessageServiceImpl" />
     <bean name="jBPMMessageBuilderService" class="org.jbpm.ri.service.MessageBuilderServiceImpl" />
     <bean name="jBPMProcessBuilderService" class="org.jbpm.ri.service.ProcessBuilderServiceImpl" />
     <bean name="jBPMProcessDefinitionService" class="org.jbpm.ri.service.ProcessDefinitionServiceImpl" />
     <bean name="jBPMSignalBuilderService" class="org.jbpm.ri.service.SignalBuilderServiceImpl" />
     <bean name="jBPMSignalService" class="org.jbpm.ri.service.SignalServiceImpl" />
+    <bean name="jBPMThreadingService" class="org.jbpm.ri.service.ThreadingServiceImpl" />
     
   </deployment>




More information about the jbpm-commits mailing list