[jbpm-commits] JBoss JBPM SVN: r6079 - in jbpm4/trunk/modules: test-db and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jan 14 04:18:42 EST 2010


Author: tom.baeyens at jboss.com
Date: 2010-01-14 04:18:41 -0500 (Thu, 14 Jan 2010)
New Revision: 6079

Added:
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/MultipleForksTest.java
Modified:
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/ForkActivity.java
   jbpm4/trunk/modules/test-db/pom.xml
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ExecutionEagerLoadingTest.java
Log:
JBPM-2742 fixing bug with nested forks

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/ForkActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/ForkActivity.java	2010-01-14 08:33:40 UTC (rev 6078)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/ForkActivity.java	2010-01-14 09:18:41 UTC (rev 6079)
@@ -62,7 +62,7 @@
     if (forkingTransitions.size()==0) {
       // end this execution
       execution.end();
-      
+
     // if there is exactly 1 transition to be taken, just use the incoming execution
     } else if (forkingTransitions.size()==1) {
       execution.take(forkingTransitions.get(0));
@@ -76,6 +76,7 @@
         execution.setActivity(null);
       } else if (Execution.STATE_ACTIVE_CONCURRENT.equals(execution.getState())) {
         concurrentRoot = execution.getParent();
+        execution.end();
       }
 
       for (Transition transition: forkingTransitions) {

Modified: jbpm4/trunk/modules/test-db/pom.xml
===================================================================
--- jbpm4/trunk/modules/test-db/pom.xml	2010-01-14 08:33:40 UTC (rev 6078)
+++ jbpm4/trunk/modules/test-db/pom.xml	2010-01-14 09:18:41 UTC (rev 6079)
@@ -98,6 +98,17 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <failIfNoTests>false</failIfNoTests>
+          <trimStackTrace>false</trimStackTrace>
+          <redirectTestOutputToFile>true</redirectTestOutputToFile>
+          <excludes>
+            <exclude>org/jbpm/bpmn/UserTaskTest.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 

Added: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/MultipleForksTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/MultipleForksTest.java	                        (rev 0)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/MultipleForksTest.java	2010-01-14 09:18:41 UTC (rev 6079)
@@ -0,0 +1,118 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.test.activity.forkjoin;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.test.JbpmTestCase;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class MultipleForksTest extends JbpmTestCase {
+
+  public void testConcurrencyGraphBased() {
+    deployJpdlXmlString(
+      "<process name='ConcurrencyGraphBased'>" +
+      "  <start>" +
+      "    <transition to='fork'/>" +
+      "  </start>" +
+      "  <fork name='fork'>" +
+      "    <transition to='send invoice' />" +
+      "    <transition to='fork2' />" +
+      "  </fork>" +
+      "  <fork name='fork2'>" +
+      "    <transition to='load truck'/>" +
+      "    <transition to='print shipping documents' />" +
+      "  </fork>" +
+      "  <state name='send invoice'>" +
+      "    <transition to='final join' />" +
+      "  </state>" +
+      "  <state name='load truck'>" +
+      "    <transition to='shipping join' />" +
+      "  </state>" +
+      "  <state name='print shipping documents'>" +
+      "    <transition to='shipping join' />" +
+      "  </state>" +
+      "  <join name='shipping join'>" +
+      "    <transition to='drive truck to destination'/>" +
+      "  </join>" +
+      "  <state name='drive truck to destination'>" +
+      "    <transition to='final join' />" +
+      "  </state>" +
+      "  <join name='final join'>" +
+      "    <transition to='end'/>" +
+      "  </join>" +
+      "  <end name='end' />" +
+      "</process>"
+    );
+        
+    ProcessInstance processInstance = executionService.startProcessInstanceByKey("ConcurrencyGraphBased");
+    String pid = processInstance.getId();
+    
+    Set<String> expectedActivityNames = new HashSet<String>();
+    expectedActivityNames.add("send invoice");
+    expectedActivityNames.add("load truck");
+    expectedActivityNames.add("print shipping documents");
+    
+    assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+    
+    assertNotNull(processInstance.findActiveExecutionIn("send invoice"));
+    assertNotNull(processInstance.findActiveExecutionIn("load truck"));
+    assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+    
+    String sendInvoiceExecutionId = processInstance.findActiveExecutionIn("send invoice").getId();
+    processInstance = executionService.signalExecutionById(sendInvoiceExecutionId);
+
+    expectedActivityNames.remove("send invoice");
+    assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+    assertNotNull(processInstance.findActiveExecutionIn("load truck"));
+    assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+
+    String loadTruckExecutionId = processInstance.findActiveExecutionIn("load truck").getId();
+    processInstance = executionService.signalExecutionById(loadTruckExecutionId);
+
+    expectedActivityNames.remove("load truck");
+    assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+    assertNotNull(processInstance.findActiveExecutionIn("print shipping documents"));
+    
+    String printShippingDocumentsId = processInstance.findActiveExecutionIn("print shipping documents").getId();
+    processInstance = executionService.signalExecutionById(printShippingDocumentsId);
+
+    expectedActivityNames.remove("print shipping documents");
+    expectedActivityNames.add("drive truck to destination");
+    assertEquals(expectedActivityNames, processInstance.findActiveActivityNames());
+
+    assertNotNull(processInstance.findActiveExecutionIn("drive truck to destination"));
+
+    String driveTruckExecutionId = processInstance.findActiveExecutionIn("drive truck to destination").getId();
+    processInstance = executionService.signalExecutionById(driveTruckExecutionId);
+
+    assertNull("execution "+pid+" should not exist", executionService.findExecutionById(pid));
+  }
+
+}


Property changes on: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/activity/forkjoin/MultipleForksTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ExecutionEagerLoadingTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ExecutionEagerLoadingTest.java	2010-01-14 08:33:40 UTC (rev 6078)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/execution/ExecutionEagerLoadingTest.java	2010-01-14 09:18:41 UTC (rev 6079)
@@ -66,7 +66,7 @@
 
     processInstance = executionService.findExecutionById(processInstance.getId());
 
-    assertEquals(6, processInstance.getExecutions().size());
+    assertEquals(4, processInstance.getExecutions().size());
 
     processInstance = executionService.findExecutionById(processInstance.getId());
 



More information about the jbpm-commits mailing list