[jbpm-commits] JBoss JBPM SVN: r2409 - in jbpm4/branches/tdiesler/modules: impl/src/main/java/org/jbpm/ri/model and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Sep 27 14:41:42 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-09-27 14:41:41 -0400 (Sat, 27 Sep 2008)
New Revision: 2409

Modified:
   jbpm4/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/processbuilder/ProcessBuilderTest.java
   jbpm4/branches/tdiesler/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
Log:
wip

Modified: jbpm4/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/processbuilder/ProcessBuilderTest.java
===================================================================
--- jbpm4/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/processbuilder/ProcessBuilderTest.java	2008-09-27 18:27:51 UTC (rev 2408)
+++ jbpm4/branches/tdiesler/modules/cts/src/test/java/org/jbpm/test/cts/processbuilder/ProcessBuilderTest.java	2008-09-27 18:41:41 UTC (rev 2409)
@@ -178,4 +178,38 @@
       // expected
     }
   }
+
+  public void testUnreachableNode() throws Exception
+  {
+    ProcessEngine engine = ProcessEngine.getProcessEngine();
+    ProcessBuilder builder = engine.getService(ProcessBuilder.class);
+    builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task1");
+    builder.addTask("Task1").addSequenceFlow("End").addTask("Task2").addSequenceFlow("End").addEndEvent("End");
+    try
+    {
+      builder.getProcess();
+      fail("Unreachable node Task2");
+    }
+    catch (InvalidProcessException e)
+    {
+      // expected
+    }
+  }
+
+  public void testDeadEndNode() throws Exception
+  {
+    ProcessEngine engine = ProcessEngine.getProcessEngine();
+    ProcessBuilder builder = engine.getService(ProcessBuilder.class);
+    builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
+    builder.addTask("Task").addEndEvent("End");
+    try
+    {
+      builder.getProcess();
+      fail("Dead end Task");
+    }
+    catch (InvalidProcessException e)
+    {
+      // expected
+    }
+  }
 }

Modified: jbpm4/branches/tdiesler/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- jbpm4/branches/tdiesler/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-09-27 18:27:51 UTC (rev 2408)
+++ jbpm4/branches/tdiesler/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-09-27 18:41:41 UTC (rev 2409)
@@ -29,11 +29,13 @@
 
 import org.jbpm.api.InvalidProcessException;
 import org.jbpm.api.NameNotUniqueException;
+import org.jbpm.api.model.EndEvent;
 import org.jbpm.api.model.Gate;
 import org.jbpm.api.model.Gateway;
 import org.jbpm.api.model.Node;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.StartEvent;
 import org.jbpm.api.model.builder.MultipleInFlowSupport;
 import org.jbpm.api.model.builder.MultipleOutFlowSupport;
 import org.jbpm.api.model.builder.SingleInFlowSupport;
@@ -149,8 +151,11 @@
       }
     }
 
-    if (inFlow == null && outFlow == null)
-      throw new InvalidProcessException("Unconnected flow object: " + this);
+    if (inFlow == null && (this instanceof StartEvent == false))
+      throw new InvalidProcessException("Unconnected node: " + this);
+
+    if (outFlow == null && (this instanceof EndEvent == false))
+      throw new InvalidProcessException("Dead end node: " + this);
   }
 
   private void initFlow(Process proc, SequenceFlowImpl flow)




More information about the jbpm-commits mailing list