[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