[jboss-svn-commits] JBL Code SVN: r20153 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/META-INF and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat May 24 09:51:04 EDT 2008


Author: KrisVerlaenen
Date: 2008-05-24 09:51:04 -0400 (Sat, 24 May 2008)
New Revision: 20153

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SubProcessTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/bpelProcessInstanceFactory.conf
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/MappingHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/SubProcessNodeHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/bpel/test/BPELTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
Log:
JBRULES-1622: SubProcess node should support variable mapping and independence 
 - adding in both core and IDE

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/MappingHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/MappingHandler.java	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/MappingHandler.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -2,7 +2,7 @@
 
 import java.util.HashSet;
 
-import org.drools.workflow.core.node.WorkItemNode;
+import org.drools.process.core.context.variable.Mappable;
 import org.drools.xml.BaseAbstractHandler;
 import org.drools.xml.ExtensibleXmlParser;
 import org.drools.xml.Handler;
@@ -16,7 +16,7 @@
     public MappingHandler() {
         if ( (this.validParents == null) && (this.validPeers == null) ) {
             this.validParents = new HashSet();
-            this.validParents.add( WorkItemNode.class );
+            this.validParents.add( Mappable.class );
 
             this.validPeers = new HashSet();         
             this.validPeers.add( null );            
@@ -32,17 +32,17 @@
                         final Attributes attrs,
                         final ExtensibleXmlParser parser) throws SAXException {
         parser.startConfiguration(localName, attrs);
-        WorkItemNode workItemNode = (WorkItemNode) parser.getParent();
+        Mappable mappable = (Mappable) parser.getParent();
         final String type = attrs.getValue("type");
         emptyAttributeCheck(localName, "type", type, parser);
-        final String parameterName = attrs.getValue("parameterName");
-        emptyAttributeCheck(localName, "parameterName", parameterName, parser);
-        final String variableName = attrs.getValue("variableName");
-        emptyAttributeCheck(localName, "variableName", variableName, parser);
+        final String fromName = attrs.getValue("from");
+        emptyAttributeCheck(localName, "from", fromName, parser);
+        final String toName = attrs.getValue("to");
+        emptyAttributeCheck(localName, "to", toName, parser);
         if ("in".equals(type)) {
-            workItemNode.addInMapping(parameterName, variableName);
+            mappable.addInMapping(toName, fromName);
         } else if ("out".equals(type)) {
-            workItemNode.addOutMapping(parameterName, variableName);
+            mappable.addOutMapping(fromName, toName);
         } else {
             throw new SAXParseException(
                 "Unknown mapping type " + type, parser.getLocator());

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/SubProcessNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/SubProcessNodeHandler.java	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/SubProcessNodeHandler.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -1,5 +1,7 @@
 package org.drools.xml.processes;
 
+import java.util.Map;
+
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.node.SubProcessNode;
 import org.drools.xml.Configuration;
@@ -21,6 +23,8 @@
         subProcessNode.setProcessId(processId);
         String waitForCompletion = config.getAttribute("waitForCompletion");
         subProcessNode.setWaitForCompletion(!"false".equals(waitForCompletion));
+        String independent = config.getAttribute("independent");
+        subProcessNode.setIndependent(!"false".equals(independent));
     }
 
     public Class generateNodeFor() {
@@ -37,7 +41,25 @@
         if (!subProcessNode.isWaitForCompletion()) {
             xmlDump.append("waitForCompletion=\"false\" ");
         }
-        endNode(xmlDump);
+        if (!subProcessNode.isIndependent()) {
+            xmlDump.append("independent=\"false\" ");
+        }
+        xmlDump.append(">" + EOL);
+        Map<String, String> inMappings = subProcessNode.getInMappings();
+        for (Map.Entry<String, String> inMapping: inMappings.entrySet()) {
+            xmlDump.append(
+                "      <mapping type=\"in\" "
+                             + "from=\"" + inMapping.getValue() + "\" "
+                             + "to=\"" + inMapping.getKey() + "\" />" + EOL);
+        }
+        Map<String, String> outMappings = subProcessNode.getOutMappings();
+        for (Map.Entry<String, String> outMapping: outMappings.entrySet()) {
+            xmlDump.append(
+                "      <mapping type=\"out\" "
+                             + "from=\"" + outMapping.getKey() + "\" "
+                             + "to=\"" + outMapping.getValue() + "\" />" + EOL);
+        }
+        endNode("subProcess", xmlDump);
 	}
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/WorkItemNodeHandler.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -44,15 +44,15 @@
         for (Map.Entry<String, String> inMapping: inMappings.entrySet()) {
             xmlDump.append(
                 "      <mapping type=\"in\" "
-                             + "parameterName=\"" + inMapping.getKey() + "\" "
-                             + "variableName=\"" + inMapping.getValue() + "\" />" + EOL);
+                             + "from=\"" + inMapping.getValue() + "\" "
+                             + "to=\"" + inMapping.getKey() + "\" />" + EOL);
         }
         Map<String, String> outMappings = workItemNode.getOutMappings();
         for (Map.Entry<String, String> outMapping: outMappings.entrySet()) {
             xmlDump.append(
                 "      <mapping type=\"out\" "
-                             + "parameterName=\"" + outMapping.getKey() + "\" "
-                             + "variableName=\"" + outMapping.getValue() + "\" />" + EOL);
+                             + "from=\"" + outMapping.getKey() + "\" "
+                             + "to=\"" + outMapping.getValue() + "\" />" + EOL);
         }
         endNode("workItem", xmlDump);
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd	2008-05-24 13:51:04 UTC (rev 20153)
@@ -202,6 +202,9 @@
 	</xs:element>
 	<xs:element name="subProcess">
 		<xs:complexType>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="drools:mapping"/>
+			</xs:choice>
 			<xs:attribute name="id" type="xs:string" use="required"/>
 			<xs:attribute name="name" type="xs:string"/>
 			<xs:attribute name="x" type="xs:string"/>
@@ -210,6 +213,7 @@
 			<xs:attribute name="height" type="xs:string"/>
 			<xs:attribute name="processId" type="xs:string"/>
 			<xs:attribute name="waitForCompletion" type="xs:string"/>
+			<xs:attribute name="independent" type="xs:string"/>
 		</xs:complexType>
 	</xs:element>
 	<xs:element name="workItem">
@@ -248,8 +252,8 @@
 	<xs:element name="mapping">
 		<xs:complexType>
 			<xs:attribute name="type" type="xs:string" use="required"/>
-			<xs:attribute name="parameterName" type="xs:string" use="required"/>
-			<xs:attribute name="variableName" type="xs:string" use="required"/>
+			<xs:attribute name="from" type="xs:string" use="required"/>
+			<xs:attribute name="to" type="xs:string" use="required"/>
 		</xs:complexType>
 	</xs:element>
 	<xs:element name="timer">

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/bpel/test/BPELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/bpel/test/BPELTest.java	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/bpel/test/BPELTest.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -22,7 +22,6 @@
 import org.drools.bpel.core.BPELReply;
 import org.drools.bpel.core.BPELSequence;
 import org.drools.bpel.instance.BPELProcessInstance;
-import org.drools.bpel.instance.BPELProcessInstanceFactory;
 import org.drools.common.AbstractRuleBase;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.compiler.PackageBuilder;
@@ -252,18 +251,17 @@
     }
     
     // normal execution
-    public static void main1(String[] args) {
+    public static void main(String[] args) {
         BPELProcess process = getProcess();
         // execute
         Properties properties = new Properties(); 
+        properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );        
         properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );        
         properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );        
         RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
         AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
         ruleBase.addProcess(process);
         InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        workingMemory.registerProcessInstanceFactory(
-            BPELProcess.BPEL_TYPE, new BPELProcessInstanceFactory());
         WorkItemHandler handler = new WebServiceInvocationHandler();
         workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
         WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);
@@ -297,18 +295,17 @@
     }
     
     // shipping returns fault
-    public static void main(String[] args) {
+    public static void main1(String[] args) {
         BPELProcess process = getProcess();
         // execute
         Properties properties = new Properties(); 
+        properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );        
         properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );        
         properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );        
         RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
         AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
         ruleBase.addProcess(process);
         InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
-        workingMemory.registerProcessInstanceFactory(
-            BPELProcess.BPEL_TYPE, new BPELProcessInstanceFactory());
         WorkItemHandler handler = new WebServiceInvocationHandler();
         workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
         WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SubProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SubProcessTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SubProcessTest.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -0,0 +1,175 @@
+package org.drools.integrationtests;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.drools.Person;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+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;
+
+public class SubProcessTest extends TestCase {
+
+    public void testSubProcess() {
+        try {
+            RuleBase ruleBase = readRule(true);
+            WorkingMemory workingMemory = ruleBase.newStatefulSession();
+            ProcessInstance processInstance =
+        		workingMemory.startProcess("com.sample.ruleflow");
+            assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+            assertEquals(2, workingMemory.getProcessInstances().size());
+            workingMemory.insert(new Person());
+            assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+            assertEquals(0, workingMemory.getProcessInstances().size());
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    public void testSubProcessCancel() {
+        try {
+            RuleBase ruleBase = readRule(true);
+            WorkingMemory workingMemory = ruleBase.newStatefulSession();
+            ProcessInstance processInstance =
+        		workingMemory.startProcess("com.sample.ruleflow");
+            assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+            assertEquals(2, workingMemory.getProcessInstances().size());
+            processInstance.setState(ProcessInstance.STATE_ABORTED);
+            assertEquals(1, workingMemory.getProcessInstances().size());
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    public void testIndependentSubProcessCancel() {
+        try {
+            RuleBase ruleBase = readRule(false);
+            WorkingMemory workingMemory = ruleBase.newStatefulSession();
+            ProcessInstance processInstance =
+        		workingMemory.startProcess("com.sample.ruleflow");
+            assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+            assertEquals(2, workingMemory.getProcessInstances().size());
+            processInstance.setState(ProcessInstance.STATE_ABORTED);
+            assertEquals(0, workingMemory.getProcessInstances().size());
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    public void testVariableMapping() {
+        try {
+            RuleBase ruleBase = readRule(false);
+            WorkingMemory workingMemory = ruleBase.newStatefulSession();
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("x", "x-value");
+            ProcessInstance processInstance =
+        		workingMemory.startProcess("com.sample.ruleflow", map);
+            assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
+            assertEquals(2, workingMemory.getProcessInstances().size());
+            for (ProcessInstance p: workingMemory.getProcessInstances()) {
+        		VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+        			p.getContextInstance(VariableScope.VARIABLE_SCOPE);
+            	if ("com.sample.ruleflow".equals(p.getProcessId())) {
+            		assertEquals("x-value", variableScopeInstance.getVariable("x"));
+            	} else if ("com.sample.subflow".equals(p.getProcessId())) {
+            		assertEquals("x-value", variableScopeInstance.getVariable("y"));
+            		assertEquals("z-value", variableScopeInstance.getVariable("z"));
+            	}
+            }
+            workingMemory.insert(new Person());
+            assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+            VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+				processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
+        	assertEquals("z-value", variableScopeInstance.getVariable("x"));
+            assertEquals(0, workingMemory.getProcessInstances().size());
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+	private static RuleBase readRule(boolean independent) throws Exception {
+		PackageBuilder builder = new PackageBuilder();
+		Reader source = new StringReader(
+			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+			"<process xmlns=\"http://drools.org/drools-4.0/process\"\n" +
+			"         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+			"         xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\"\n" +
+			"         type=\"RuleFlow\" name=\"ruleflow\" id=\"com.sample.ruleflow\" package-name=\"com.sample\" >\n" +
+			"\n" +
+			"  <header>\n" +
+			"    <variables>\n" +
+			"      <variable name=\"x\" >\n" +
+			"        <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+			"        <value></value>\n" +
+			"      </variable>\n" +
+			"    </variables>\n" + 
+			"  </header>\n" +
+			"\n" +
+			"  <nodes>\n" +
+			"    <start id=\"1\" name=\"Start\" />\n" +
+			"    <subProcess id=\"2\" name=\"SubProcess\" processId=\"com.sample.subflow\" independent=\"" + independent + "\" >\n" +
+			"      <mapping type=\"in\" from=\"x\" to=\"y\" />\n" +
+			"      <mapping type=\"out\" from=\"z\" to=\"x\" />\n" +
+			"    </subProcess>\n" +
+			"    <end id=\"3\" name=\"End\" />\n" +
+			"  </nodes>\n" +
+			"\n" +
+			"  <connections>\n" +
+			"    <connection from=\"1\" to=\"2\" />\n" +
+			"    <connection from=\"2\" to=\"3\" />\n" +
+			"  </connections>\n" +
+			"\n" +
+			"</process>");
+		builder.addRuleFlow(source);
+		source = new StringReader(
+			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+			"<process xmlns=\"http://drools.org/drools-4.0/process\"\n" +
+			"         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+			"         xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\"\n" +
+			"         type=\"RuleFlow\" name=\"flow\" id=\"com.sample.subflow\" package-name=\"com.sample\" >\n" +
+			"\n" +
+			"  <header>\n" +
+			"    <imports>\n" +
+			"      <import name=\"org.drools.Person\" />\n" +
+			"    </imports>\n" +
+			"    <variables>\n" +
+			"      <variable name=\"y\" >\n" +
+			"        <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+			"        <value></value>\n" +
+			"      </variable>\n" +
+			"      <variable name=\"z\" >\n" +
+			"        <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+			"        <value>z-value</value>\n" +
+			"      </variable>\n" +
+			"    </variables>\n" + 
+			"  </header>\n" +
+			"\n" +
+			"  <nodes>\n" +
+			"    <start id=\"1\" name=\"Start\" />\n" +
+			"    <milestone id=\"2\" name=\"Event Wait\" >Person( )</milestone>\n" +
+			"    <end id=\"3\" name=\"End\" />\n" +
+			"  </nodes>\n" +
+			"\n" +
+			"  <connections>\n" +
+			"    <connection from=\"1\" to=\"2\" />\n" +
+			"    <connection from=\"2\" to=\"3\" />\n" +
+			"  </connections>\n" +
+			"\n" +
+			"</process>");
+		builder.addRuleFlow(source);
+		Package pkg = builder.getPackage();
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage( pkg );
+		return ruleBase;
+	}
+	
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java	2008-05-24 13:50:56 UTC (rev 20152)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java	2008-05-24 13:51:04 UTC (rev 20153)
@@ -18,6 +18,7 @@
 import org.drools.process.core.datatype.impl.type.StringDataType;
 import org.drools.process.core.impl.ParameterDefinitionImpl;
 import org.drools.process.core.impl.WorkImpl;
+import org.drools.process.core.timer.Timer;
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.workflow.core.Connection;
 import org.drools.workflow.core.Constraint;
@@ -33,6 +34,7 @@
 import org.drools.workflow.core.node.Split;
 import org.drools.workflow.core.node.StartNode;
 import org.drools.workflow.core.node.SubProcessNode;
+import org.drools.workflow.core.node.TimerNode;
 import org.drools.workflow.core.node.WorkItemNode;
 import org.drools.xml.XmlProcessReader;
 import org.drools.xml.XmlRuleFlowProcessDumper;
@@ -57,6 +59,7 @@
         process.addNode(new RuleSetNode());
         process.addNode(new SubProcessNode());
         process.addNode(new WorkItemNode());
+        process.addNode(new TimerNode());
         
         XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
         
@@ -65,7 +68,7 @@
             throw new IllegalArgumentException("Failed to persist empty nodes!");
         }
         
-        System.out.println(xml);
+//        System.out.println(xml);
         
         XmlProcessReader reader = new XmlProcessReader(
             new PackageBuilderConfiguration().getSemanticModules());
@@ -74,7 +77,7 @@
             throw new IllegalArgumentException("Failed to reload process!");
         }
         
-        assertEquals(9, process.getNodes().length);
+        assertEquals(10, process.getNodes().length);
         
 //        System.out.println("************************************");
         
@@ -83,7 +86,7 @@
             throw new IllegalArgumentException("Failed to persist empty nodes!");
         }
         
-//        System.out.println(xml2);
+        System.out.println(xml2);
         
 //        assertEquals(xml, xml2);
     }
@@ -206,6 +209,9 @@
         subProcess.setMetaData("height", 4);
         subProcess.setProcessId("processId");
         subProcess.setWaitForCompletion(false);
+        subProcess.setIndependent(false);
+        subProcess.addInMapping("subvar1", "var1");
+        subProcess.addOutMapping("subvar2", "var2");
         process.addNode(subProcess);
         connection = new ConnectionImpl(milestone, Node.CONNECTION_DEFAULT_TYPE, subProcess, Node.CONNECTION_DEFAULT_TYPE);
         connection.setMetaData("bendpoints", "[10,10]");
@@ -229,6 +235,19 @@
         connection = new ConnectionImpl(subProcess, Node.CONNECTION_DEFAULT_TYPE, workItemNode, Node.CONNECTION_DEFAULT_TYPE);
         connection.setMetaData("bendpoints", "[]");
         
+        TimerNode timerNode = new TimerNode();
+        timerNode.setName("timer");
+        timerNode.setMetaData("x", 1);
+        timerNode.setMetaData("y", 2);
+        timerNode.setMetaData("width", 3);
+        timerNode.setMetaData("height", 4);
+        Timer timer = new Timer();
+        timer.setDelay(1000);
+        timer.setPeriod(1000);
+        timerNode.setTimer(timer);
+        process.addNode(timerNode);
+        new ConnectionImpl(workItemNode, Node.CONNECTION_DEFAULT_TYPE, timerNode, Node.CONNECTION_DEFAULT_TYPE);
+        
         EndNode endNode = new EndNode();
         endNode.setName("end");
         endNode.setMetaData("x", 1);
@@ -236,7 +255,7 @@
         endNode.setMetaData("width", 3);
         endNode.setMetaData("height", 4);
         process.addNode(endNode);
-        new ConnectionImpl(workItemNode, Node.CONNECTION_DEFAULT_TYPE, endNode, Node.CONNECTION_DEFAULT_TYPE);
+        new ConnectionImpl(timerNode, Node.CONNECTION_DEFAULT_TYPE, endNode, Node.CONNECTION_DEFAULT_TYPE);
         
         XmlRuleFlowProcessDumper dumper = new XmlRuleFlowProcessDumper();
         
@@ -245,7 +264,7 @@
             throw new IllegalArgumentException("Failed to persist empty nodes!");
         }
         
-        System.out.println(xml);
+//        System.out.println(xml);
         
         XmlProcessReader reader = new XmlProcessReader(
             new PackageBuilderConfiguration().getSemanticModules());
@@ -254,7 +273,7 @@
             throw new IllegalArgumentException("Failed to reload process!");
         }
         
-        assertEquals(9, process.getNodes().length);
+        assertEquals(10, process.getNodes().length);
         
 //        System.out.println("************************************");
         
@@ -263,7 +282,7 @@
             throw new IllegalArgumentException("Failed to persist empty nodes!");
         }
         
-//        System.out.println(xml2);
+        System.out.println(xml2);
         
 //        assertEquals(xml, xml2);
     }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/bpelProcessInstanceFactory.conf
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/bpelProcessInstanceFactory.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/META-INF/bpelProcessInstanceFactory.conf	2008-05-24 13:51:04 UTC (rev 20153)
@@ -0,0 +1,7 @@
+// we use MVEL to configure our process, simply populate a map, which will be added to the main registry
+import org.drools.bpel.core.BPELProcess;
+import org.drools.bpel.instance.BPELProcessInstanceFactory;
+
+[
+    BPELProcess     : new BPELProcessInstanceFactory(),
+]




More information about the jboss-svn-commits mailing list