[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