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

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Dec 5 08:36:50 EST 2008


Author: thomas.diesler at jboss.com
Date: 2008-12-05 08:36:50 -0500 (Fri, 05 Dec 2008)
New Revision: 3222

Modified:
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java
   jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java
   jbpm3/trunk/modules/integration/spec/src/test/java/org/jbpm/test/integration/spec/task/TaskTest.java
Log:
Use ProcessDefinition.createNewProcessDefinition() to contruct the procDef

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -134,6 +134,29 @@
     Services.assignId(this);
 
     // create the optional definitions
+    addInitialModuleDefinitions(processDefinition);
+
+    // add the creation log
+    rootToken.addLog(new ProcessInstanceCreateLog());
+
+    // set the variables
+    addInitialContextVariables(variables);
+
+    Node initialNode = rootToken.getNode();
+    fireStartEvent(initialNode);
+  }
+
+  public void addInitialContextVariables(Map variables)
+  {
+    ContextInstance contextInstance = getContextInstance();
+    if ((contextInstance != null) && (variables != null))
+    {
+      contextInstance.addVariables(variables);
+    }
+  }
+
+  public void addInitialModuleDefinitions(ProcessDefinition processDefinition)
+  {
     Map definitions = processDefinition.getDefinitions();
     // if the state-definition has optional definitions
     if (definitions != null)
@@ -152,19 +175,6 @@
         }
       }
     }
-
-    // add the creation log
-    rootToken.addLog(new ProcessInstanceCreateLog());
-
-    // set the variables
-    ContextInstance contextInstance = getContextInstance();
-    if ((contextInstance != null) && (variables != null))
-    {
-      contextInstance.addVariables(variables);
-    }
-
-    Node initialNode = rootToken.getNode();
-    fireStartEvent(initialNode);
   }
 
   public void fireStartEvent(Node initialNode)

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/AbstractElementImpl.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -49,6 +49,7 @@
   {
     this.engine = engine;
     this.objClass = objClass;
+    
     // Store the ID of the underlying jBPM3 object
     objID = tempObj.getId();
     if (objID == 0)

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessDefinitionImpl.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -60,17 +60,15 @@
   private ObjectName keyCache;
   private List<Node> nodes;
 
-  public ProcessDefinitionImpl(ProcessEngine engine, String name)
-  {
-    this(engine, new org.jbpm.graph.def.ProcessDefinition(name));
-  }
-
   public ProcessDefinitionImpl(ProcessEngine engine, org.jbpm.graph.def.ProcessDefinition tmpProcDef)
   {
     super(engine, tmpProcDef, org.jbpm.graph.def.ProcessDefinition.class);
 
     if (tmpProcDef.getName() == null)
       throw new InvalidProcessException("ProcessDefinition name cannot be null");
+    
+    if (tmpProcDef.getId() > 0)
+      keyCache = getKey(tmpProcDef);
   }
 
   public ObjectName getKey()
@@ -113,6 +111,7 @@
   {
     ProcessInstance oldProc = new ProcessInstance();
     oldProc.setProcessDefinition(getDelegate());
+    oldProc.addInitialModuleDefinitions(getDelegate());
 
     Process proc = new ProcessImpl(getProcessEngine(), oldProc);
     proc = InvocationProxy.newInstance((ProcessImpl)proc, Process.class);

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessImpl.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/ProcessImpl.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -62,9 +62,12 @@
   // [TODO] delegate this property
   private ProcessStatus status = ProcessStatus.None;
 
-  public ProcessImpl(ProcessEngine engine, ProcessInstance tempObj)
+  public ProcessImpl(ProcessEngine engine, ProcessInstance tmpProc)
   {
-    super(engine, tempObj, ProcessInstance.class);
+    super(engine, tmpProc, ProcessInstance.class);
+    
+    if (tmpProc.getId() > 0)
+      keyCache = getKey(tmpProc);
   }
 
   // @Override
@@ -186,12 +189,12 @@
       if (procService.getProcess(getKey()) == null)
         procService.registerProcess(this);
 
-      ProcessInstance delegate = getDelegate();
+      ProcessInstance procInst = getDelegate();
       
       // Initialize the members
-      org.jbpm.graph.exe.Token rootToken = new org.jbpm.graph.exe.Token(delegate);
-      delegate.setStart(Clock.getCurrentTime());
-      delegate.setRootToken(rootToken);
+      org.jbpm.graph.exe.Token rootToken = new org.jbpm.graph.exe.Token(procInst);
+      procInst.setStart(Clock.getCurrentTime());
+      procInst.setRootToken(rootToken);
 
       // Create the root token
       Token token = new TokenImpl(getProcessEngine(), rootToken);
@@ -216,7 +219,7 @@
       
       // Fire the jbpm3 start event
       NodeImpl<?> initialNode = (NodeImpl<?>)token.getCurrentNode();
-      delegate.fireStartEvent(initialNode.getDelegate());
+      procInst.fireStartEvent(initialNode.getDelegate());
       
       // Signal the root token
       token.signal();

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/model/builder/ProcessBuilderImpl.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -85,7 +85,10 @@
   //@Override
   public ProcessBuilder addProcess(String name)
   {
-    procDefImpl = new ProcessDefinitionImpl(engine, name);
+    org.jbpm.graph.def.ProcessDefinition oldProcDef = org.jbpm.graph.def.ProcessDefinition.createNewProcessDefinition();
+    oldProcDef.setName(name);
+    
+    procDefImpl = new ProcessDefinitionImpl(engine, oldProcDef);
     return this;
   }
 

Modified: jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/main/java/org/jbpm/integration/spec/runtime/TokenImpl.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -38,6 +38,7 @@
 import org.jboss.bpm.api.runtime.ExecutionContext;
 import org.jboss.bpm.api.runtime.Token;
 import org.jboss.bpm.api.service.ExecutionContextService;
+import org.jbpm.JbpmContext;
 import org.jbpm.context.exe.ContextInstance;
 import org.jbpm.graph.def.Transition;
 import org.jbpm.integration.spec.model.AbstractElementImpl;
@@ -58,12 +59,15 @@
   private SequenceFlow lastFlow;
   private Attachments att;
 
-  public TokenImpl(ProcessEngine engine, org.jbpm.graph.exe.Token oldToken)
+  public TokenImpl(ProcessEngine engine, org.jbpm.graph.exe.Token tmpToken)
   {
-    super(engine, oldToken, org.jbpm.graph.exe.Token.class);
+    super(engine, tmpToken, org.jbpm.graph.exe.Token.class);
 
-    ContextInstance context = oldToken.getProcessInstance().getContextInstance();
+    ContextInstance context = tmpToken.getProcessInstance().getContextInstance();
     this.att = new TokenAttachmentDelegate(this, context);
+    
+    if (tmpToken.getId() > 0)
+      keyCache = getKey(tmpToken);
   }
 
   public ObjectName getKey()
@@ -179,6 +183,8 @@
 
   private void signalInternal(String name)
   {
+    ExecutionContextService ctxService = getProcessEngine().getService(ExecutionContextService.class);
+    ExecutionContext bpmContext = ctxService.getExecutionContext(true);
     try
     {
       // Make sure we have a current node
@@ -212,6 +218,10 @@
         lastFlow = currNode.getOutFlowByTransition(trans);
         getDelegate().signal();
       }
+      
+      // Save the token
+      JbpmContext jbpmContext = bpmContext.getAttachment(JbpmContext.class);
+      jbpmContext.save(getDelegate());
     }
     catch (RuntimeException rte)
     {
@@ -219,6 +229,10 @@
       procImpl.setProcessStatus(ProcessStatus.Aborted);
       throw rte;
     }
+    finally
+    {
+      bpmContext.close();
+    }
   }
 
   public String toString()

Modified: jbpm3/trunk/modules/integration/spec/src/test/java/org/jbpm/test/integration/spec/task/TaskTest.java
===================================================================
--- jbpm3/trunk/modules/integration/spec/src/test/java/org/jbpm/test/integration/spec/task/TaskTest.java	2008-12-05 13:30:54 UTC (rev 3221)
+++ jbpm3/trunk/modules/integration/spec/src/test/java/org/jbpm/test/integration/spec/task/TaskTest.java	2008-12-05 13:36:50 UTC (rev 3222)
@@ -30,6 +30,7 @@
 import org.jboss.bpm.api.deployment.SimpleDeployment;
 import org.jboss.bpm.api.model.Process;
 import org.jboss.bpm.api.model.ProcessDefinition;
+import org.jboss.bpm.api.runtime.Token;
 import org.jboss.bpm.api.service.DeploymentService;
 import org.jboss.bpm.api.test.APITestCase;
 import org.jbpm.JbpmConfiguration;
@@ -52,49 +53,9 @@
   private JbpmContext jbpmContext;
   private GraphSession graphSession;
   
-  public void testCancelOld() 
+  public void testCancel() 
   {
-    org.jbpm.graph.def.ProcessDefinition processDefinition = org.jbpm.graph.def.ProcessDefinition.parseXmlString(
-      "<process-definition name='endtasksprocess'>" +
-      "  <start-state>" +
-      "    <transition to='approval' />" +
-      "  </start-state>" +
-      "  <task-node name='approval' end-tasks='true'>" +
-      "    <task name='approve' description='Review order'>" +
-      "      <assignment pooled-actors='reviewers' />" +
-      "    </task>" +
-      "    <transition name='approve' to='process'>" +
-      "      <action class='"+Buzz.class.getName()+"' />" +
-      "    </transition>" +
-      "    <transition name='cancel'  to='cancelled'/>" +
-      "  </task-node>" +
-      "  <state name='process' />" +
-      "  <state name='cancelled' />" +
-      "</process-definition>"
-    );
-    
-    jbpmContext = createJbpmContext();
-    
-    jbpmContext.deployProcessDefinition(processDefinition);
-    ProcessInstance processInstance = jbpmContext.newProcessInstance("endtasksprocess");
-    
-    processInstance = saveAndReload(processInstance);
-    
-    processInstance.signal();
-    assertEquals("approval", processInstance.getRootToken().getNode().getName());
-    
-    processInstance = saveAndReload(processInstance);
-
-    processInstance.signal("cancel");
-    assertEquals("cancelled", processInstance.getRootToken().getNode().getName());
-    
-    jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    jbpmContext.close();
-  }
-  
-  public void _testCancel() 
-  {
-    Deployment procDefDeployment = new SimpleDeployment(
+    Deployment dep = new SimpleDeployment(
       "<process-definition name='endtasksprocess' xmlns='urn:jbpm.org:jpdl-3.2'>" +
       "  <start-state>" +
       "    <transition to='approval' />" +
@@ -114,16 +75,23 @@
     );
     
     DeploymentService depService = getProcessEngine().getService(DeploymentService.class);
-    ProcessDefinition procDef = depService.deploy(procDefDeployment);
-
-    Process proc = procDef.newInstance();
-    proc.startProcess();
-
-    assertEquals("approval", proc.getRootToken().getCurrentNode().getName());
-    proc.getRootToken().signal("cancel");
-    assertEquals("cancelled", proc.getRootToken().getCurrentNode().getName());
-
-    depService.undeploy(procDefDeployment);
+    ProcessDefinition procDef = depService.deploy(dep);
+    try
+    {
+      Process proc = procDef.newInstance();
+      
+      Token token = proc.startProcess();
+      
+      assertEquals("approval", proc.getRootToken().getCurrentNode().getName());
+      
+      token.signal("cancel");
+      
+      assertEquals("cancelled", proc.getRootToken().getCurrentNode().getName());
+    }
+    finally
+    {
+      depService.undeploy(dep);
+    }
   }
 
   public void _testApprove() 




More information about the jbpm-commits mailing list