[jboss-svn-commits] JBL Code SVN: r26297 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/command/impl and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Apr 28 23:02:51 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-04-28 23:02:51 -0400 (Tue, 28 Apr 2009)
New Revision: 26297
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-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
Log:
-added abort work items 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 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -213,6 +213,10 @@
return getCommandFactoryProvider().newCompleteWorkItem( workItemId,
results );
}
+
+ public static Command newAbortWorkItem(long workItemId) {
+ return getCommandFactoryProvider().newAbortWorkItem( workItemId );
+ }
/**
* Executes a query. The query results will be added to the ExecutionResults using the
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 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -72,4 +72,6 @@
Command newBatchExecution(List< ? extends Command> commands);
+ Command newAbortWorkItem(long workItemId);
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2009-04-29 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -6,6 +6,7 @@
import org.drools.command.Command;
import org.drools.command.CommandFactoryProvider;
import org.drools.command.Setter;
+import org.drools.process.command.AbortWorkItemCommand;
import org.drools.process.command.CompleteWorkItemCommand;
import org.drools.process.command.FireAllRulesCommand;
import org.drools.process.command.GetGlobalCommand;
@@ -130,6 +131,10 @@
Map<String, Object> results) {
return new CompleteWorkItemCommand(workItemId, results);
}
+
+ public Command newAbortWorkItem(long workItemId) {
+ return new AbortWorkItemCommand( workItemId);
+ }
public Command newQuery(String identifier, String name) {
return new QueryCommand(identifier, name, null);
@@ -143,5 +148,4 @@
return new BatchExecutionImpl(
(List<org.drools.process.command.Command>) commands);
}
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java 2009-04-29 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -7,7 +7,15 @@
Command<Object> {
private long workItemId;
+
+ public AbortWorkItemCommand() {
+
+ }
+ public AbortWorkItemCommand(long workItemId) {
+ this.workItemId = workItemId;
+ }
+
public long getWorkItemId() {
return workItemId;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2009-04-29 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -14,6 +14,7 @@
import org.drools.command.Setter;
import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalFactHandle;
+import org.drools.process.command.AbortWorkItemCommand;
import org.drools.process.command.CompleteWorkItemCommand;
import org.drools.process.command.FireAllRulesCommand;
import org.drools.process.command.GetGlobalCommand;
@@ -80,6 +81,8 @@
SignalEventCommand.class );
xstream.alias( "complete-work-item",
CompleteWorkItemCommand.class );
+ xstream.alias( "abort-work-item",
+ AbortWorkItemCommand.class );
xstream.alias( "set-global",
SetGlobalCommand.class );
xstream.alias( "get-global",
@@ -108,6 +111,7 @@
xstream.registerConverter( new StartProcessConvert( xstream.getMapper() ) );
xstream.registerConverter( new SignalEventConverter( xstream.getMapper() ) );
xstream.registerConverter( new CompleteWorkItemConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new AbortWorkItemConverter( xstream.getMapper() ) );
xstream.registerConverter( new QueryConverter( xstream.getMapper() ) );
xstream.registerConverter( new SetGlobalConverter( xstream.getMapper() ) );
xstream.registerConverter( new GetGlobalConverter( xstream.getMapper() ) );
@@ -784,7 +788,36 @@
return clazz.equals( CompleteWorkItemCommand.class );
}
}
+
+ public static class AbortWorkItemConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+ public AbortWorkItemConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ AbortWorkItemCommand cmd = (AbortWorkItemCommand) object;
+ writer.addAttribute( "id",
+ Long.toString( cmd.getWorkItemId() ) );
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String id = reader.getAttribute( "id" );
+ Command cmd = CommandFactory.newAbortWorkItem(Long.parseLong( id ) );
+
+ return cmd;
+ }
+
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( AbortWorkItemCommand.class );
+ }
+}
+
public static class BatchExecutionResultConverter extends AbstractCollectionConverter
implements
Converter {
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 02:37:51 UTC (rev 26296)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-04-29 03:02:51 UTC (rev 26297)
@@ -1220,10 +1220,14 @@
assertEquals( "John Doe",
workItem.getParameter( "Comment" ) );
+ assertEquals( WorkItem.PENDING, workItem.getState() );
+
String inXml = "";
inXml = "<complete-work-item id='" + workItem.getId() + "' />";
getPipelineStateful( ksession ).insert( inXml,
new ResultHandlerImpl() );
+
+ assertEquals( WorkItem.COMPLETED, workItem.getState() );
assertEquals( ProcessInstance.STATE_COMPLETED,
processInstance.getState() );
@@ -1251,6 +1255,8 @@
workItem.getParameter( "Content" ) );
assertEquals( "Jane Doe",
workItem.getParameter( "Comment" ) );
+
+ assertEquals( WorkItem.PENDING, workItem.getState() );
inXml = "";
inXml += "<complete-work-item id='" + workItem.getId() + "' >";
@@ -1260,6 +1266,8 @@
inXml += "</complete-work-item>";
getPipelineStateful( ksession ).insert( inXml,
new ResultHandlerImpl() );
+
+ assertEquals( WorkItem.COMPLETED, workItem.getState() );
assertEquals( ProcessInstance.STATE_COMPLETED,
processInstance.getState() );
@@ -1268,7 +1276,111 @@
assertEquals( 15,
processInstance.getVariable( "Number" ) );
}
+
+ public void testAbortWorkItem() {
+ 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.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"UserName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>John Doe</value>\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Person\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"MyObject\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Number\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
+ str += " <work name=\"Human Task\" >\n";
+ str += " <parameter name=\"ActorId\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{UserName}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Content\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{Person.name}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"TaskName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>Do something</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Priority\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Comment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Attachment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </parameter>\n";
+ str += " </work>\n";
+ str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
+ str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
+ str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
+ str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
+ str += " </workItem>\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";
+ str += "\n";
+ str += "</process>";
+
+ Reader source = new StringReader( str );
+ kbuilder.add( ResourceFactory.newReaderResource( source ),
+ ResourceType.DRF );
+
+ Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kpkgs );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ TestWorkItemHandler handler = new TestWorkItemHandler();
+ ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
+ handler );
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put( "UserName",
+ "John Doe" );
+ Person person = new Person();
+ person.setName( "John Doe" );
+ parameters.put( "Person",
+ person );
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+ parameters );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ assertEquals( WorkItem.PENDING, workItem.getState() );
+
+ String inXml = "<abort-work-item id='" + workItem.getId() + "' />";
+ getPipelineStateful( ksession ).insert( inXml,
+ new ResultHandlerImpl() );
+
+ assertEquals( WorkItem.ABORTED, workItem.getState() );
+ }
+
public static class TestWorkItemHandler
implements
WorkItemHandler {
More information about the jboss-svn-commits
mailing list