[jboss-svn-commits] JBL Code SVN: r26294 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime/process and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Apr 28 21:25:36 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-04-28 21:25:36 -0400 (Tue, 28 Apr 2009)
New Revision: 26294
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessInstance.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
Log:
-added signalEvent to CommandFactory and xml marshalling
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-04-29 00:44:10 UTC (rev 26293)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-04-29 01:25:36 UTC (rev 26294)
@@ -190,6 +190,20 @@
return getCommandFactoryProvider().newStartProcess( processId );
}
+ public static Command signalEvent(String type,
+ Object event) {
+ return getCommandFactoryProvider().signalEvent( type,
+ event );
+ }
+
+ public static Command signalEvent(long processInstanceId,
+ String type,
+ Object event) {
+ return getCommandFactoryProvider().signalEvent( processInstanceId,
+ type,
+ event );
+ }
+
/**
* Executes a query. The query results will be added to the ExecutionResults using the
* given identifier.
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java 2009-04-29 00:44:10 UTC (rev 26293)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java 2009-04-29 01:25:36 UTC (rev 26294)
@@ -53,6 +53,13 @@
Command newStartProcess(String processId,
Map<String, Object> parameters);
+ Command signalEvent(String type,
+ Object event);
+
+ Command signalEvent(long processInstanceId,
+ String type,
+ Object event);
+
Command newQuery(String identifier,
String name);
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessInstance.java 2009-04-29 00:44:10 UTC (rev 26293)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/ProcessInstance.java 2009-04-29 01:25:36 UTC (rev 26294)
@@ -17,4 +17,8 @@
String getProcessName();
int getState();
+
+
+ void signalEvent(String type,
+ Object event);
}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-04-29 00:44:10 UTC (rev 26293)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-04-29 01:25:36 UTC (rev 26294)
@@ -19,16 +19,25 @@
import org.drools.Cheese;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
import org.drools.TestVariable;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
+import org.drools.compiler.PackageBuilder;
import org.drools.definition.KnowledgePackage;
import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.integrationtests.SerializationHelper;
import org.drools.io.Resource;
import org.drools.io.ResourceFactory;
+import org.drools.process.command.SignalEventCommand;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.rule.Package;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.StatefulKnowledgeSession;
@@ -39,6 +48,7 @@
import org.drools.runtime.pipeline.PipelineFactory;
import org.drools.runtime.pipeline.ResultHandler;
import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.process.ProcessInstance;
import org.drools.runtime.rule.FactHandle;
import org.xml.sax.SAXException;
@@ -96,18 +106,18 @@
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- String outXml = (String) resultHandler.getObject();
+ String outXml = (String) resultHandler.getObject();
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
Cheese stilton = (Cheese) result.getValue( "outStilton" );
assertEquals( 30,
stilton.getPrice() );
-
- FactHandle factHandle = ( FactHandle ) result.getFactHandle( "outStilton" );
- stilton = ( Cheese ) ksession.getObject( factHandle );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ stilton = (Cheese) ksession.getObject( factHandle );
assertEquals( 30,
- stilton.getPrice() );
-
+ stilton.getPrice() );
+
String expectedXml = "";
expectedXml += "<execution-results>\n";
expectedXml += " <result identifier=\"outStilton\">\n";
@@ -119,11 +129,11 @@
expectedXml += " </result>\n";
expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
expectedXml += "</execution-results>\n";
-
+
assertXMLEqual( expectedXml,
outXml );
}
-
+
public void testInsertObjectWithReturnObjectFalse() throws Exception {
String str = "";
str += "package org.drools \n";
@@ -152,25 +162,25 @@
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- String outXml = (String) resultHandler.getObject();
+ String outXml = (String) resultHandler.getObject();
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
assertNull( result.getValue( "outStilton" ) );
-
- FactHandle factHandle = ( FactHandle ) result.getFactHandle( "outStilton" );
- Cheese stilton = ( Cheese ) ksession.getObject( factHandle );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ Cheese stilton = (Cheese) ksession.getObject( factHandle );
assertEquals( 30,
- stilton.getPrice() );
-
+ stilton.getPrice() );
+
String expectedXml = "";
expectedXml += "<execution-results>\n";
expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
expectedXml += "</execution-results>\n";
-
+
assertXMLEqual( expectedXml,
outXml );
- }
-
+ }
+
public void testGetObject() throws Exception {
String str = "";
str += "package org.drools \n";
@@ -199,27 +209,27 @@
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- String outXml = (String) resultHandler.getObject();
+ String outXml = (String) resultHandler.getObject();
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
Cheese stilton = (Cheese) result.getValue( "outStilton" );
assertEquals( 30,
stilton.getPrice() );
-
- FactHandle factHandle = ( FactHandle ) result.getFactHandle( "outStilton" );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
inXml = "";
inXml += "<batch-execution>";
inXml += " <get-object out-identifier='outStilton' factHandle='" + factHandle.toExternalForm() + "' />";
- inXml += "</batch-execution>";
+ inXml += "</batch-execution>";
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- outXml = (String) resultHandler.getObject();
+ outXml = (String) resultHandler.getObject();
result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
stilton = (Cheese) result.getValue( "outStilton" );
assertEquals( 30,
- stilton.getPrice() );
- }
-
+ stilton.getPrice() );
+ }
+
public void testRetractObject() throws Exception {
String str = "";
str += "package org.drools \n";
@@ -248,32 +258,32 @@
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- String outXml = (String) resultHandler.getObject();
+ String outXml = (String) resultHandler.getObject();
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
Cheese stilton = (Cheese) result.getValue( "outStilton" );
assertEquals( 30,
stilton.getPrice() );
-
- FactHandle factHandle = ( FactHandle ) result.getFactHandle( "outStilton" );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
inXml = "";
inXml += "<batch-execution>";
inXml += " <retract factHandle='" + factHandle.toExternalForm() + "' />";
- inXml += "</batch-execution>";
+ inXml += "</batch-execution>";
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
-
+
inXml = "";
inXml += "<batch-execution>";
inXml += " <get-object out-identifier='outStilton' factHandle='" + factHandle.toExternalForm() + "' />";
- inXml += "</batch-execution>";
+ inXml += "</batch-execution>";
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- outXml = (String) resultHandler.getObject();
+ outXml = (String) resultHandler.getObject();
result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
assertNull( result.getValue( "outStilton" ) );
- }
-
+ }
+
public void testModifyObject() throws Exception {
String str = "";
str += "package org.drools \n";
@@ -298,20 +308,19 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
-
StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- String outXml = (String) resultHandler.getObject();
+ String outXml = (String) resultHandler.getObject();
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
Cheese stilton = (Cheese) result.getValue( "outStilton" );
assertEquals( 30,
stilton.getPrice() );
-
+
FactHandle factHandle = ((FactHandle) result.getFactHandle( "outStilton" ));
-
+
String expectedXml = "";
expectedXml += "<execution-results>\n";
expectedXml += " <result identifier=\"outStilton\">\n";
@@ -323,34 +332,34 @@
expectedXml += " </result>\n";
expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + factHandle.toExternalForm() + "\" /> \n";
expectedXml += "</execution-results>\n";
-
+
assertXMLEqual( expectedXml,
outXml );
-
+
inXml = "";
inXml += "<batch-execution>";
inXml += " <modify factHandle='" + factHandle.toExternalForm() + "'> <set accessor='type' value='\"cheddar\"' /><set accessor='price' value='50' /></modify>";
- inXml += " <fire-all-rules />";
- inXml += "</batch-execution>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
inXml = "";
inXml += "<batch-execution>";
inXml += " <get-object out-identifier='outCheddar' factHandle='" + factHandle.toExternalForm() + "' />";
- inXml += "</batch-execution>";
+ inXml += "</batch-execution>";
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- outXml = (String) resultHandler.getObject();
+ outXml = (String) resultHandler.getObject();
result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
Cheese cheddar = (Cheese) result.getValue( "outCheddar" );
- assertEquals( "cheddar", cheddar.getType() );
+ assertEquals( "cheddar",
+ cheddar.getType() );
assertEquals( 55,
- cheddar.getPrice() );
-
-
- }
+ cheddar.getPrice() );
+ }
+
public void testInsertElements() throws Exception {
String str = "";
str += "package org.drools \n";
@@ -615,9 +624,10 @@
expectedXml += " </list>";
expectedXml += " </result>";
expectedXml += "</execution-results>";
-
- assertXMLEqual( expectedXml, outXml );
+ assertXMLEqual( expectedXml,
+ outXml );
+
ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
List list = (List) result.getValue( "list" );
Cheese stilton25 = new Cheese( "stilton",
@@ -828,9 +838,9 @@
getPipeline( ksession ).insert( inXml,
resultHandler );
String outXml = (String) resultHandler.getObject();
-
- FactHandle factHandle = ( FactHandle ) ((ExecutionResults)BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml )).getFactHandle( "outBrie" );
+ FactHandle factHandle = (FactHandle) ((ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml )).getFactHandle( "outBrie" );
+
String expectedXml = "";
expectedXml += "<execution-results>\n";
expectedXml += " <result identifier='list'>\n";
@@ -854,7 +864,7 @@
expectedXml += " <oldPrice>5</oldPrice>\n";
expectedXml += " </org.drools.Cheese>\n";
expectedXml += " </result>\n";
- expectedXml += " <fact-handle identifier=\"outBrie\" externalForm=\"" + factHandle.toExternalForm() + "\" /> \n";
+ expectedXml += " <fact-handle identifier=\"outBrie\" externalForm=\"" + factHandle.toExternalForm() + "\" /> \n";
expectedXml += "</execution-results>\n";
assertXMLEqual( expectedXml,
outXml );
@@ -886,14 +896,45 @@
public void testProcess() throws SAXException,
IOException {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- + " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n"
- + " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n" + "\n" + " <header>\n" + " <imports>\n"
- + " <import name=\"org.drools.TestVariable\" />\n" + " </imports>\n" + " <globals>\n" + " <global identifier=\"list\" type=\"java.util.List\" />\n" + " </globals>\n" + " <variables>\n"
- + " <variable name=\"person\" >\n" + " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n" + " </variable>\n" + " </variables>\n"
- + " </header>\n" + "\n" + " <nodes>\n" + " <start id=\"1\" name=\"Start\" />\n" + " <actionNode id=\"2\" name=\"MyActionNode\" >\n"
- + " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n" + "list.add(person.name);\n" + "</action>\n" + " </actionNode>\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>" );
+
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <imports>\n";
+ str += " <import name=\"org.drools.TestVariable\" />\n";
+ str += " </imports>\n";
+ str += " <globals>\n";
+ str += " <global identifier=\"list\" type=\"java.util.List\" />\n";
+ str += " </globals>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"person\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+ str += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+ str += "list.add(person.name);\n";
+ str += "</action>\n";
+ str += " </actionNode>\n";
+ str += " <end id=\"3\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"2\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " </connections>\n" + "\n";
+ str += "</process>";
+
+ Reader source = new StringReader( str );
kbuilder.add( ResourceFactory.newReaderResource( source ),
ResourceType.DRF );
if ( kbuilder.hasErrors() ) {
@@ -911,13 +952,13 @@
String inXml = "";
inXml += "<batch-execution>";
- inXml += " <startProcess processId='org.drools.actions'>";
+ inXml += " <start-process processId='org.drools.actions'>";
inXml += " <parameter identifier='person'>";
inXml += " <org.drools.TestVariable>";
inXml += " <name>John Doe</name>";
inXml += " </org.drools.TestVariable>";
inXml += " </parameter>";
- inXml += " </startProcess>";
+ inXml += " </start-process>";
inXml += " <get-global identifier='list' out-identifier='out-list'/>";
inXml += "</batch-execution>";
@@ -944,6 +985,129 @@
outXml );
}
+ public void testProcessInstanceSignalEvent() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"MyVar\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>SomeText</value>\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+ str += " <eventFilters>\n";
+ str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ str += " </eventFilters>\n";
+ str += " </eventNode>\n";
+ str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ str += " <end id=\"4\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"3\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " <connection from=\"3\" to=\"4\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRF );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+
+ String inXml = "";
+ inXml += "<signal-event process-instance-id= '" + processInstance.getId() + "' event-type='MyEvent'>";
+ inXml += " <string>MyValue</string>";
+ inXml += "</signal-event>";
+
+ getPipelineStateful( ksession ).insert( inXml, new ResultHandlerImpl() );
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+ assertEquals( "MyValue",
+ ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+ }
+
+ // FIXME for krisv
+ public void FIXME_testProcessRuntimeSignalEvent() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"MyVar\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>SomeText</value>\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <eventNode id=\"2\" name=\"Event\" scope=\"external\" variableName=\"MyVar\" >\n";
+ str += " <eventFilters>\n";
+ str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ str += " </eventFilters>\n";
+ str += " </eventNode>\n";
+ str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ str += " <end id=\"4\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"3\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " <connection from=\"3\" to=\"4\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRF );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+
+ String inXml = "";
+ inXml += "<signal-event event-type='MyEvent'>";
+ inXml += " <string>MyValue</string>";
+ inXml += "</signal-event>";
+
+ getPipelineStateful( ksession ).insert( inXml, new ResultHandlerImpl() );
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+ assertEquals( "MyValue",
+ ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+ }
+
public void testInsertObjectWithDeclaredFact() throws Exception {
String str = "";
str += "package org.foo \n";
@@ -971,14 +1135,14 @@
StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
ResultHandlerImpl resultHandler = new ResultHandlerImpl();
getPipelineStateful( ksession ).insert( inXml,
- resultHandler );
+ resultHandler );
String outXml = (String) resultHandler.getObject();
-
+
ClassLoader cl = ((InternalRuleBase) ((StatefulKnowledgeSessionImpl) ksession).getRuleBase()).getRootClassLoader();
XStream xstream = BatchExecutionHelper.newXStreamMarshaller();
xstream.setClassLoader( cl );
- FactHandle factHandle = ( FactHandle ) ((ExecutionResults)xstream.fromXML( outXml )).getFactHandle( "outStilton" );
-
+ FactHandle factHandle = (FactHandle) ((ExecutionResults) xstream.fromXML( outXml )).getFactHandle( "outStilton" );
+
String expectedXml = "";
expectedXml += "<execution-results>\n";
expectedXml += " <result identifier=\"outStilton\">\n";
@@ -988,9 +1152,9 @@
expectedXml += " <price>30</price>\n";
expectedXml += " </org.foo.Whee>\n";
expectedXml += " </result>\n";
- expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + factHandle.toExternalForm() + "\" /> \n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" externalForm=\"" + factHandle.toExternalForm() + "\" /> \n";
expectedXml += "</execution-results>\n";
-
+
System.out.println( expectedXml );
System.out.println( outXml );
@@ -1030,7 +1194,7 @@
getPipelineStateful( ksession ).insert( inXml,
resultHandler );
- getPipelineStateful( ksession ).insert("<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
+ getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
resultHandler );
String outXml = (String) resultHandler.getObject();
@@ -1047,7 +1211,7 @@
//ksession.fireAllRules();
//ok lets try that again...
- getPipelineStateful( ksession ).insert("<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
+ getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
resultHandler );
outXml = (String) resultHandler.getObject();
assertTrue( outXml.indexOf( "<price>30</price>" ) > -1 );
More information about the jboss-svn-commits
mailing list