[jboss-svn-commits] JBL Code SVN: r35263 - in labs/jbossrules/trunk/drools-flow-core/src: test/java/org/drools/process and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Sep 23 19:59:41 EDT 2010
Author: diegoll
Date: 2010-09-23 19:59:40 -0400 (Thu, 23 Sep 2010)
New Revision: 35263
Modified:
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
Log:
throwing exception on nonexistent subprocess id. Closes JBRULES-2708
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java 2010-09-23 23:42:01 UTC (rev 35262)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java 2010-09-23 23:59:40 UTC (rev 35263)
@@ -21,12 +21,11 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.drools.common.InternalRuleBase;
+import org.drools.RuntimeDroolsException;
import org.drools.definition.process.Node;
import org.drools.definition.process.Process;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.ProcessInstance;
-import org.drools.process.instance.WorkItem;
import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.NodeInstance;
@@ -110,9 +109,9 @@
Process process = ((ProcessInstance) getProcessInstance())
.getKnowledgeRuntime().getKnowledgeBase().getProcess(processId);
if (process == null) {
- System.err.println("Could not find process " + processId);
System.err.println("Aborting process");
((ProcessInstance) getProcessInstance()).setState(ProcessInstance.STATE_ABORTED);
+ throw new RuntimeDroolsException("Could not find process " + processId);
} else {
ProcessInstance processInstance = ( ProcessInstance )
((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java 2010-09-23 23:42:01 UTC (rev 35262)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java 2010-09-23 23:59:40 UTC (rev 35263)
@@ -16,8 +16,6 @@
package org.drools.process;
-import junit.framework.TestCase;
-
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.common.AbstractRuleBase;
@@ -40,17 +38,22 @@
import org.drools.workflow.core.node.StartNode;
import org.drools.workflow.core.node.SubProcessNode;
import org.drools.workflow.core.node.WorkItemNode;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
-public class SubProcessTest extends TestCase {
+public class SubProcessTest {
private boolean executed = false;
private WorkItem workItem;
+ @Before
public void setUp() {
executed = false;
workItem = null;
}
+ @Test
public void testSynchronousSubProcess() {
RuleFlowProcess process = new RuleFlowProcess();
process.setId("org.drools.process.process");
@@ -121,6 +124,7 @@
assertEquals(0, ksession.getProcessInstances().size());
}
+ @Test
public void testAsynchronousSubProcess() {
RuleFlowProcess process = new RuleFlowProcess();
process.setId("org.drools.process.process");
@@ -197,4 +201,46 @@
assertEquals(0, ksession.getProcessInstances().size());
}
+ @Test
+ public void testNonExistentSubProcess() {
+ String nonExistentSubProcessName = "nonexistent.process";
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId("org.drools.process.process");
+ process.setName("Process");
+ StartNode startNode = new StartNode();
+ startNode.setName("Start");
+ startNode.setId(1);
+ SubProcessNode subProcessNode = new SubProcessNode();
+ subProcessNode.setName("SubProcessNode");
+ subProcessNode.setId(2);
+ subProcessNode.setProcessId(nonExistentSubProcessName);
+ EndNode endNode = new EndNode();
+ endNode.setName("End");
+ endNode.setId(3);
+
+ connect(startNode, subProcessNode);
+ connect(subProcessNode, endNode);
+
+ process.addNode( startNode );
+ process.addNode( subProcessNode );
+ process.addNode( endNode );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ try{
+ ksession.startProcess("org.drools.process.process");
+ fail("should throw exception");
+ } catch (RuntimeException re){
+ assertTrue(re.getMessage().contains( nonExistentSubProcessName ));
+ }
+ }
+
+ private void connect(Node sourceNode,
+ Node targetNode) {
+ new ConnectionImpl (sourceNode, Node.CONNECTION_DEFAULT_TYPE,
+ targetNode, Node.CONNECTION_DEFAULT_TYPE);
+ }
+
}
More information about the jboss-svn-commits
mailing list