[jboss-svn-commits] JBL Code SVN: r24644 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime/rule and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jan 10 22:36:09 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-10 22:36:09 -0500 (Sat, 10 Jan 2009)
New Revision: 24644

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java
Removed:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSetGlobalStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSignalEventStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders 
-Moved DataLoaders out of drools-api, as don't want to support it.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -18,6 +18,8 @@
      */
     void setGlobal(String identifier,
                    Object object);
+    
+    Object getGlobal(String identifier);
 
     /**
      * Delegate used to resolve any global names not found in the global map.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -48,6 +48,14 @@
      * @see KnowledgeBaseConfiguration
      */
     FactHandle getFactHandle(Object object);
+    
+    /**
+     * Returns the object associated with the given FactHandle.
+     * 
+     * @param factHandle
+     * @return
+     */
+    Object getObject(FactHandle factHandle);
 
     /**
      * Returns all facts from the current session.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -238,6 +238,10 @@
                                 object );
     }
     
+    public Object getGlobal(String identifier) {
+        return this.session.getGlobal( identifier );
+    }
+    
     public void setGlobalResolver(GlobalResolver globalResolver) {
         this.session.setGlobalResolver( (org.drools.spi.GlobalResolver) globalResolver );
     }    

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java (from rev 24643, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,47 @@
+package org.drools.runtime.dataloader;
+
+import org.drools.ProviderInitializationException;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.pipeline.Receiver;
+
+public class DataLoaderFactory {
+    private static volatile DataLoaderProvider provider;
+
+    public static WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
+                                                                                           Receiver pipeline) {
+        return getDataLoaderProvider().newStatefulRuleSessionDataLoader( ksession, pipeline );
+    }
+    
+    public static WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
+                                                                                           String entryPointName,
+                                                                                           Receiver pipeline) {
+        return getDataLoaderProvider().newStatefulKnowledgeSessionDataLoader( ksession, entryPointName, pipeline );
+    }    
+
+    public static StatelessKnowledgeSessionDataLoader newStatelessKnowledgeSessionDataLoader(StatelessKnowledgeSession ksession,
+                                                                                             Receiver pipeline) {
+        return getDataLoaderProvider().newStatelessKnowledgeSessionDataLoader( ksession, pipeline );
+    }
+    
+    private static synchronized void setDataLoaderProvider(DataLoaderProvider provider) {
+        DataLoaderFactory.provider = provider;
+    }
+
+    private static synchronized DataLoaderProvider getDataLoaderProvider() {
+        if ( provider == null ) {
+            loadProvider();
+        }
+        return DataLoaderFactory.provider;
+    }
+
+    private static void loadProvider() {
+        try {
+            Class<DataLoaderProvider> cls = (Class<DataLoaderProvider>) Class.forName( "org.drools.runtime.dataloader.impl.DataLoaderProviderImpl" );
+            setDataLoaderProvider( cls.newInstance() );
+        } catch ( Exception e2 ) {
+            throw new ProviderInitializationException( "Provider org.drools.runtime.dataloader.impl.DataLoaderProviderImpl could not be set.",
+                                                       e2 );
+        }
+    }    
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java (from rev 24643, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,17 @@
+package org.drools.runtime.dataloader;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.pipeline.Receiver;
+
+public interface DataLoaderProvider {
+    WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
+                                                                             Receiver pipeline);
+
+    WorkingMemoryDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+                                                                             String entryPointName,
+                                                                             Receiver pipeline);
+    
+    StatelessKnowledgeSessionDataLoader newStatelessKnowledgeSessionDataLoader(StatelessKnowledgeSession ksession,
+                                                                               Receiver pipeline);
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java (from rev 24643, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,8 @@
+package org.drools.runtime.dataloader;
+
+import org.drools.runtime.process.ProcessInstance;
+
+public interface ProcessRuntimeDataLoader {
+    ProcessInstance startProcess(String processId,
+                                 Object parameters);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java (from rev 24643, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,18 @@
+package org.drools.runtime.dataloader;
+
+import org.drools.runtime.Parameters;
+import org.drools.runtime.StatelessKnowledgeSessionResults;
+
+public interface StatelessKnowledgeSessionDataLoader {
+
+    void executeObject(Object object);
+
+    void executeIterable(Object object);
+
+    StatelessKnowledgeSessionResults executeObjectWithParameters(Object object,
+                                                                 Parameters parameters);
+
+    StatelessKnowledgeSessionResults executeIterableWithParameters(Object object,
+                                                                   Parameters parameters);
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/StatelessKnowledgeSessionDataLoader.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java (from rev 24643, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,10 @@
+package org.drools.runtime.dataloader;
+
+import java.util.Map;
+
+import org.drools.runtime.pipeline.Feeder;
+import org.drools.runtime.rule.FactHandle;
+
+public interface WorkingMemoryDataLoader {
+    Map<FactHandle, Object> insert(Object object);
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -1,20 +0,0 @@
-/**
- * 
- */
-package org.drools.runtime.pipeline.impl;
-
-import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Receiver;
-
-public class EntryPointResultStage extends BaseEmitter
-    implements
-    Receiver {
-    public void receive(Object object,
-                       PipelineContext context) {
-        
-        EntryPointPipelineContext pContext = (EntryPointPipelineContext) context;
-        pContext.getResultHandler().handleResult( pContext.getHandles() );
-    }
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -1,25 +0,0 @@
-/**
- * 
- */
-package org.drools.runtime.pipeline.impl;
-
-import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
-import org.drools.runtime.pipeline.Adapter;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Receiver;
-import org.drools.runtime.pipeline.impl.BaseStage;
-import org.drools.runtime.rule.FactHandle;
-
-public class EntryPointStage extends BaseEmitter
-    implements
-    Receiver {
-    public void receive(Object object,
-                       PipelineContext context) {
-        EntryPointPipelineContext pContext = (EntryPointPipelineContext) context;
-
-        FactHandle handle = ((pContext).getEntryPoint()).insert( object );
-        ((pContext).getHandles()).put( handle,
-                                       object );
-    }
-
-}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,30 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
+
+public class StatefulKnowledgeSessionGetGlobalStage extends BaseEmitter
+    implements
+    Receiver {
+
+    public StatefulKnowledgeSessionGetGlobalStage() {
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {        
+        StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
+        StatefulKnowledgeSession ksession = kContext.getStatefulKnowledgeSession();
+        Object result = ksession.getGlobal( (String) object );
+        
+        context.setResult( result );
+        
+        emit( result,
+              kContext );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -0,0 +1,31 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
+import org.drools.runtime.rule.FactHandle;
+
+public class StatefulKnowledgeSessionGetObjectStage extends BaseEmitter
+    implements
+    Receiver {
+
+    public StatefulKnowledgeSessionGetObjectStage() {
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {        
+        StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
+        StatefulKnowledgeSession ksession = kContext.getStatefulKnowledgeSession();
+        Object result = ksession.getObject( (FactHandle) object );        
+        
+        context.setResult( result );
+        
+        emit( result,
+              kContext );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -1,5 +1,8 @@
 package org.drools.runtime.pipeline.impl;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.drools.common.InternalFactHandle;
 import org.drools.runtime.pipeline.PipelineContext;
 import org.drools.runtime.pipeline.Receiver;
@@ -13,10 +16,15 @@
                         PipelineContext context) {
         StatefulKnowledgeSessionPipelineContextImpl kContext = (StatefulKnowledgeSessionPipelineContextImpl) context;
         FactHandle handle = kContext.getEntryPoint().insert( object );
+        Map<FactHandle, Object> handles = (Map<FactHandle, Object>)kContext.getResult();
+        if ( handles == null ) {
+            handles = new HashMap<FactHandle, Object>();
+            kContext.setResult( handles );
+        }
+        
+        handles.put( handle,
+                     ((InternalFactHandle) handle).getObject() );
 
-        kContext.getHandles().put( handle,
-                                   ((InternalFactHandle) handle).getObject() );
-
         emit( object,
               kContext );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -12,7 +12,6 @@
 public class StatefulKnowledgeSessionPipelineContextImpl extends BasePipelineContext
     implements
     StatefulKnowledgeSessionPipelineContext {
-    private Map                     handles;
     private StatefulKnowledgeSession ksession;
     private WorkingMemoryEntryPoint  entryPoint;
 
@@ -33,12 +32,6 @@
     public WorkingMemoryEntryPoint getEntryPoint() {
         return entryPoint;
     }
-    
-    public Map getHandles() {
-        if ( handles == null ) {
-            this.handles = new HashMap();
-        }
-        return handles;
-    }    
+        
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineImpl.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineImpl.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -12,14 +12,13 @@
     private StatefulKnowledgeSession ksession;
     private WorkingMemoryEntryPoint  entryPoint;
 
-    
     public StatefulKnowledgeSessionPipelineImpl(StatefulKnowledgeSession ksession) {
         this.ksession = ksession;
         this.entryPoint = ksession;
     }
-    
+
     public StatefulKnowledgeSessionPipelineImpl(StatefulKnowledgeSession ksession,
-                                                      String entryPointName) {
+                                                String entryPointName) {
         this.ksession = ksession;
         this.entryPoint = ksession.getWorkingMemoryEntryPoint( entryPointName );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSetGlobalStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSetGlobalStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSetGlobalStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -11,21 +11,36 @@
 public class StatefulKnowledgeSessionSetGlobalStage extends BaseEmitter
     implements
     Receiver {
-
+    private String key;
+    
     public StatefulKnowledgeSessionSetGlobalStage() {
+        
     }
+    
+    public StatefulKnowledgeSessionSetGlobalStage(String key) {
+        this.key = key;
+    }
 
     public void receive(Object object,
                         PipelineContext context) {
         StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
         StatefulKnowledgeSession ksession = kContext.getStatefulKnowledgeSession();
-        Map<String, Object> vars = ( Map<String, Object> ) object;        
-        for ( Entry<String, Object> entry : vars.entrySet()) {
-            ksession.setGlobal( entry.getKey(), entry.getValue() );
+        if ( key == null ) {
+            if ( !(object instanceof Map) ) {
+                throw new IllegalArgumentException( "SetGlobalStage must either declare a key or be an instanceof a Map");
+            } else {
+                Map<String, Object> vars = ( Map<String, Object> ) object;        
+                for ( Entry<String, Object> entry : vars.entrySet()) {
+                    ksession.setGlobal( entry.getKey(), entry.getValue() );
+                }
+            }
+        } else {
+            ksession.setGlobal( this.key, object );
         }
+
         
         emit( object,
-              kContext );
+              kContext );        
     }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSignalEventStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSignalEventStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionSignalEventStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -10,6 +10,11 @@
     private long   id;
     private String eventType;
 
+    public StatefulKnowledgeSessionSignalEventStage(String eventType) {
+        this.eventType = eventType;
+        this.id = -1;
+    }
+
     public StatefulKnowledgeSessionSignalEventStage(String eventType,
                                                     long id) {
         this.eventType = eventType;
@@ -19,9 +24,15 @@
     public void receive(Object object,
                         PipelineContext context) {
         StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
-        kContext.getStatefulKnowledgeSession().getProcessInstance( this.id ).signalEvent( this.eventType,
-                                                                                          object );
 
+        if ( this.id != -1 ) {
+            kContext.getStatefulKnowledgeSession().getProcessInstance( this.id ).signalEvent( this.eventType,
+                                                                                              object );
+        } else {
+            kContext.getStatefulKnowledgeSession().signalEvent( this.eventType,
+                                                                object );
+        }
+
         emit( object,
               kContext );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java	2009-01-10 04:47:18 UTC (rev 24643)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java	2009-01-11 03:36:09 UTC (rev 24644)
@@ -18,8 +18,10 @@
     public void receive(Object object,
                         PipelineContext context) {
         StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
-        kContext.getStatefulKnowledgeSession().startProcess( id,
-                                                             (Map<String, Object>) object );
+        long instanceId = kContext.getStatefulKnowledgeSession().startProcess( id,
+                                                             (Map<String, Object>) object ).getId();
+        kContext.setResult( instanceId );
+        
         emit( object,
               kContext );
     }




More information about the jboss-svn-commits mailing list