[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