[jboss-svn-commits] JBL Code SVN: r26295 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: process/command and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Apr 28 21:28:47 EDT 2009
Author: mark.proctor at jboss.com
Date: 2009-04-28 21:28:47 -0400 (Tue, 28 Apr 2009)
New Revision: 26295
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/process/command/InsertElementsCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
Log:
-added signalEvent to CommandFactory and xml marshalling
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 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -16,6 +16,7 @@
import org.drools.process.command.QueryCommand;
import org.drools.process.command.RetractCommand;
import org.drools.process.command.SetGlobalCommand;
+import org.drools.process.command.SignalEventCommand;
import org.drools.process.command.StartProcessCommand;
import org.drools.process.command.ModifyCommand.SetterImpl;
import org.drools.runtime.ObjectFilter;
@@ -113,6 +114,17 @@
return startProcess;
}
+ public Command signalEvent(String type,
+ Object event) {
+ return new SignalEventCommand( type, event );
+ }
+
+ public Command signalEvent(long processInstanceId,
+ String type,
+ Object event) {
+ return new SignalEventCommand( processInstanceId, type, event );
+ }
+
public Command newQuery(String identifier, String name) {
return new QueryCommand(identifier, name, null);
@@ -127,6 +139,4 @@
(List<org.drools.process.command.Command>) commands);
}
-
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java 2009-04-29 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -13,7 +13,11 @@
implements
Command<Collection<FactHandle>> {
public Iterable objects;
+
+ private String outIdentifier;
+ private boolean returnObject = true;
+
public InsertElementsCommand() {
this.objects = new ArrayList();
}
@@ -35,9 +39,34 @@
for ( Object object : objects ) {
handles.add( session.insert( object ) );
}
+
+ if ( outIdentifier != null ) {
+ if ( this.returnObject ) {
+ session.getExecutionResult().getResults().put( this.outIdentifier,
+ objects );
+ }
+ session.getExecutionResult().getFacts().put( this.outIdentifier,
+ handles );
+ }
return handles;
}
+
+ public String getOutIdentifier() {
+ return this.outIdentifier;
+ }
+ public void setOutIdentifier(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+ public boolean isReturnObject() {
+ return returnObject;
+ }
+
+ public void setReturnObject(boolean returnObject) {
+ this.returnObject = returnObject;
+ }
+
public String toString() {
List<Object> list = new ArrayList<Object>( );
for ( Object object : objects ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java 2009-04-29 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -7,9 +7,23 @@
private long processInstanceId;
private String eventType;
- private Object event;
+ private Object event;
- public long getProcessInstanceId() {
+ public SignalEventCommand(String eventType,
+ Object event) {
+ this.eventType = eventType;
+ this.event = event;
+ }
+
+ public SignalEventCommand(long processInstanceId,
+ String eventType,
+ Object event) {
+ this.processInstanceId = processInstanceId;
+ this.eventType = eventType;
+ this.event = event;
+ }
+
+ public long getProcessInstanceId() {
return processInstanceId;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-04-29 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -138,9 +138,7 @@
public void signalEvent(String type,
Object event) {
- SignalEventCommand command = new SignalEventCommand();
- command.setEventType( type );
- command.setEvent( event );
+ SignalEventCommand command = new SignalEventCommand(type, event);
commandService.execute( command );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstance.java 2009-04-29 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ProcessInstance.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -46,7 +46,4 @@
Agenda getAgenda();
void start();
-
- void signalEvent(String type, Object event);
-
}
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 01:25:36 UTC (rev 26294)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2009-04-29 01:28:47 UTC (rev 26295)
@@ -24,6 +24,7 @@
import org.drools.process.command.QueryCommand;
import org.drools.process.command.RetractCommand;
import org.drools.process.command.SetGlobalCommand;
+import org.drools.process.command.SignalEventCommand;
import org.drools.process.command.StartProcessCommand;
import org.drools.process.command.ModifyCommand.SetterImpl;
import org.drools.rule.Declaration;
@@ -72,8 +73,10 @@
RetractCommand.class );
xstream.alias( "insert-elements",
InsertElementsCommand.class );
- xstream.alias( "startProcess",
+ xstream.alias( "start-process",
StartProcessCommand.class );
+ xstream.alias( "signal-event",
+ SignalEventCommand.class );
xstream.alias( "set-global",
SetGlobalCommand.class );
xstream.alias( "get-global",
@@ -100,6 +103,7 @@
xstream.registerConverter( new InsertElementsConverter( xstream.getMapper() ) );
xstream.registerConverter( new FireAllRulesConverter( xstream.getMapper() ) );
xstream.registerConverter( new StartProcessConvert( xstream.getMapper() ) );
+ xstream.registerConverter( new SignalEventConverter( xstream.getMapper() ) );
xstream.registerConverter( new QueryConverter( xstream.getMapper() ) );
xstream.registerConverter( new SetGlobalConverter( xstream.getMapper() ) );
xstream.registerConverter( new GetGlobalConverter( xstream.getMapper() ) );
@@ -301,6 +305,15 @@
HierarchicalStreamWriter writer,
MarshallingContext context) {
InsertElementsCommand cmd = (InsertElementsCommand) object;
+
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+
+ writer.addAttribute( "return-object", Boolean.toString( cmd.isReturnObject() ) );
+
+ }
+
for ( Object element : cmd.getObjects() ) {
writeItem( element,
context,
@@ -310,6 +323,9 @@
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
+ String identifierOut = reader.getAttribute( "out-identifier" );
+ String returnObject = reader.getAttribute( "return-object" );
+
List objects = new ArrayList();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
@@ -319,8 +335,14 @@
reader.moveUp();
objects.add( object );
}
+
InsertElementsCommand cmd = new InsertElementsCommand( objects );
-
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ if ( returnObject != null ) {
+ cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
+ }
+ }
return cmd;
}
@@ -643,7 +665,60 @@
return clazz.equals( StartProcessCommand.class );
}
}
+
+ public static class SignalEventConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+ public SignalEventConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ SignalEventCommand cmd = (SignalEventCommand) object;
+ long processInstanceId = cmd.getProcessInstanceId();
+ String eventType = cmd.getEventType();
+ Object event = cmd.getEvent();
+
+ if ( processInstanceId != -1 ) {
+ writer.addAttribute( "process-instance-id", Long.toString( processInstanceId ) );
+ }
+
+ writer.addAttribute( "event-type", eventType );
+
+ writeItem( event, context, writer );
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String processInstanceId = reader.getAttribute( "process-instance-id" );
+ String eventType = reader.getAttribute( "event-type" );
+
+ reader.moveDown();
+ Object event = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+
+
+ Command cmd;
+ if ( processInstanceId != null ) {
+ cmd = new SignalEventCommand(Long.parseLong( processInstanceId ), eventType, event );
+ } else {
+ cmd = new SignalEventCommand( eventType, event );
+ }
+
+ return cmd;
+ }
+
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( SignalEventCommand.class );
+ }
+
+}
+
public static class BatchExecutionResultConverter extends AbstractCollectionConverter
implements
Converter {
More information about the jboss-svn-commits
mailing list