Author: thomas.diesler(a)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)
Show replies by date