[jboss-svn-commits] JBL Code SVN: r25536 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Mar 7 21:57:48 EST 2009
Author: KrisVerlaenen
Date: 2009-03-07 21:57:47 -0500 (Sat, 07 Mar 2009)
New Revision: 25536
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
Log:
- added test with new API
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java 2009-03-07 04:40:42 UTC (rev 25535)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java 2009-03-08 02:57:47 UTC (rev 25536)
@@ -3,22 +3,32 @@
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
import org.drools.compiler.PackageBuilder;
+import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.rule.Package;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
public class ProcessSplitTest extends TestCase {
@@ -107,6 +117,95 @@
assertEquals(2, list.size());
}
+ public void testSplitWithProcessInstanceConstraint2() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ Reader source = new StringReader(
+ "<process xmlns=\"http://drools.org/drools-5.0/process\"" +
+ " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" +
+ " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"" +
+ " type=\"RuleFlow\" name=\"ruleflow\" id=\"org.drools.process-split\" package-name=\"org.drools\" >" +
+ "" +
+ " <header>" +
+ " <imports>" +
+ " <import name=\"org.drools.Person\" />" +
+ " <import name=\"org.drools.runtime.process.WorkflowProcessInstance\" />" +
+ " </imports>" +
+ " <globals>" +
+ " <global identifier=\"list\" type=\"java.util.List\" />" +
+ " </globals>" +
+ " <variables>\n" +
+ " <variable name=\"name\" >\n" +
+ " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+ " </variable>\n" +
+ " </variables>\n" +
+ " </header>" +
+ "" +
+ " <nodes>" +
+ " <actionNode id=\"2\" name=\"Action\" >" +
+ " <action type=\"expression\" dialect=\"mvel\" >insert(kcontext.getProcessInstance());</action>" +
+ " </actionNode>" +
+ " <split id=\"4\" name=\"Split\" type=\"2\" >" +
+ " <constraints>" +
+ " <constraint toNodeId=\"8\" toType=\"DROOLS_DEFAULT\" priority=\"2\" type=\"rule\" dialect=\"mvel\" >eval(true)</constraint>" +
+ " <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" name=\"constraint\" priority=\"1\" type=\"rule\" dialect=\"mvel\" >processInstance: WorkflowProcessInstance()" +
+ "Person( name == ( processInstance.getVariable(\"name\") ) )</constraint>" +
+ " </constraints>" +
+ " </split>" +
+ " <end id=\"8\" name=\"End\" />" +
+ " <actionNode id=\"6\" name=\"Action\" >" +
+ " <action type=\"expression\" dialect=\"mvel\" >list.add(kcontext.getProcessInstance().getId());</action>" +
+ " </actionNode>" +
+ " <start id=\"1\" name=\"Start\" />" +
+ " <end id=\"3\" name=\"End\" />" +
+ " </nodes>" +
+ " <connections>" +
+ " <connection from=\"1\" to=\"2\" />" +
+ " <connection from=\"2\" to=\"4\" />" +
+ " <connection from=\"4\" to=\"8\" />" +
+ " <connection from=\"4\" to=\"6\" />" +
+ " <connection from=\"6\" to=\"3\" />" +
+ " </connections>" +
+ "" +
+ "</process>");
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ for (KnowledgeBuilderError error: kbuilder.getErrors()) {
+ System.out.println(error);
+ }
+
+ Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kpkgs );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ List<Long> list = new ArrayList<Long>();
+ ksession.setGlobal("list", list);
+
+ Person john = new Person("John Doe", 20);
+ Person jane = new Person("Jane Doe", 20);
+ Person julie = new Person("Julie Doe", 20);
+ ksession.insert(john);
+ ksession.insert(jane);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("name", john.getName());
+ org.drools.runtime.process.ProcessInstance processInstance1 =
+ ksession.startProcess("org.drools.process-split", params);
+
+ params = new HashMap<String, Object>();
+ params.put("name", jane.getName());
+ org.drools.runtime.process.ProcessInstance processInstance2 =
+ ksession.startProcess("org.drools.process-split", params);
+
+ params = new HashMap<String, Object>();
+ params.put("name", julie.getName());
+ org.drools.runtime.process.ProcessInstance processInstance3 =
+ ksession.startProcess("org.drools.process-split", params);
+
+ assertEquals(ProcessInstance.STATE_COMPLETED, processInstance1.getState());
+ assertEquals(ProcessInstance.STATE_COMPLETED, processInstance2.getState());
+ assertEquals(ProcessInstance.STATE_COMPLETED, processInstance3.getState());
+ assertEquals(2, list.size());
+ }
+
public void testSplitWithMVELVariableConstraint() {
PackageBuilder builder = new PackageBuilder();
Reader source = new StringReader(
More information about the jboss-svn-commits
mailing list