[jboss-svn-commits] JBL Code SVN: r23354 - in labs/jbossrules/branches/drools-api-refactor-20080929: drools-api/src/main/java/org/drools/event/process and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 7 19:43:59 EDT 2008


Author: KrisVerlaenen
Date: 2008-10-07 19:43:59 -0400 (Tue, 07 Oct 2008)
New Revision: 23354

Added:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/KnowledgeRuntimeEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventManager.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessNodeEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessStartedEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/impl/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/impl/KnowledgeRuntimeEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessNodeEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/process/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
Removed:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/NodeEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessRuntimeEventManager.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java
Modified:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/StatefulProcessSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
Log:
JBRULES-1734: Drools API
 - added process events

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/KnowledgeRuntimeEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/KnowledgeRuntimeEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/KnowledgeRuntimeEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,9 @@
+package org.drools.event;
+
+import org.drools.runtime.KnowledgeRuntime;
+
+public interface KnowledgeRuntimeEvent {
+	
+	KnowledgeRuntime getKnowledgeRuntime();
+
+}

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/NodeEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/NodeEvent.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/NodeEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -1,9 +0,0 @@
-package org.drools.event.process;
-
-import org.drools.process.instance.NodeInstance;
-
-public interface NodeEvent extends ProcessEvent {
-	
-	NodeInstance getNodeInstance();
-
-}

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEvent.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -16,9 +16,10 @@
  * limitations under the License.
  */
 
+import org.drools.event.KnowledgeRuntimeEvent;
 import org.drools.process.instance.ProcessInstance;
 
-public interface ProcessEvent {
+public interface ProcessEvent extends KnowledgeRuntimeEvent {
 	
 	ProcessInstance getProcessInstance();
 

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,39 @@
+package org.drools.event.process;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.EventListener;
+
+public interface ProcessEventListener extends EventListener {
+
+    void beforeProcessStarted(ProcessEvent event);
+
+    void afterProcessStarted(ProcessEvent event);
+
+    void beforeProcessCompleted(ProcessEvent event);
+
+    void afterProcessCompleted(ProcessEvent event);
+
+    void beforeNodeTriggered(ProcessNodeEvent event);
+
+    void afterNodeTriggered(ProcessNodeEvent event);
+
+    void beforeNodeLeft(ProcessNodeEvent event);
+
+    void afterNodeLeft(ProcessNodeEvent event);
+
+}
\ No newline at end of file

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventManager.java (from rev 23343, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessRuntimeEventManager.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventManager.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventManager.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,30 @@
+package org.drools.event.process;
+
+import java.util.Collection;
+
+public interface ProcessEventManager {
+	
+    /**
+     * Add an event listener.
+     * 
+     * @param listener
+     *            The listener to add.
+     */
+    public void addEventListener(ProcessEventListener listener);
+
+    /**
+     * Remove an event listener.
+     * 
+     * @param listener
+     *            The listener to remove.
+     */
+    public void removeEventListener(ProcessEventListener listener);
+
+    /**
+     * Returns all event listeners.
+     * 
+     * @return listeners The listeners.
+     */
+    public Collection<ProcessEventListener> getProcessEventListeners();
+    
+}


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessEventManager.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessNodeEvent.java (from rev 23343, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/NodeEvent.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessNodeEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessNodeEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,9 @@
+package org.drools.event.process;
+
+import org.drools.process.instance.NodeInstance;
+
+public interface ProcessNodeEvent extends ProcessEvent {
+	
+	NodeInstance getNodeInstance();
+
+}


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessNodeEvent.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessRuntimeEventManager.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessRuntimeEventManager.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessRuntimeEventManager.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -1,28 +0,0 @@
-package org.drools.event.process;
-
-import java.util.List;
-
-public interface ProcessRuntimeEventManager {
-//    /**
-//     * Add an event listener.
-//     * 
-//     * @param listener
-//     *            The listener to add.
-//     */
-//    public void addEventListener(RuleFlowEventListener listener);
-//
-//    /**
-//     * Remove an event listener.
-//     * 
-//     * @param listener
-//     *            The listener to remove.
-//     */
-//    public void removeEventListener(RuleFlowEventListener listener);
-//
-//    /**
-//     * Returns all event listeners.
-//     * 
-//     * @return listeners The listeners.
-//     */
-//    public Collection<RuleFlowEventListener> getRuleFlowEventListeners();
-}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessStartedEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessStartedEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/process/ProcessStartedEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,21 @@
+package org.drools.event.process;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public interface ProcessStartedEvent extends ProcessEvent {
+
+}

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -1,14 +0,0 @@
-package org.drools.event.rule;
-
-import org.drools.runtime.rule.PropagationContext;
-import org.drools.runtime.rule.WorkingMemory;
-
-public interface WorkingMemoryEvent {
-    
-    /**
-     * This method returns null after it is Serialized
-     */    
-    public WorkingMemory getWorkingMemory();
-    
-    public PropagationContext getPropagationContext();
-}

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java (from rev 23343, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/WorkingMemoryEvent.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,14 @@
+package org.drools.event.rule;
+
+import org.drools.runtime.rule.PropagationContext;
+import org.drools.runtime.rule.WorkingMemory;
+
+public interface WorkingMemoryEvent {
+    
+    /**
+     * This method returns null after it is Serialized
+     */    
+    public WorkingMemory getWorkingMemory();
+    
+    public PropagationContext getPropagationContext();
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,8 @@
+package org.drools.runtime;
+
+import org.drools.runtime.process.ProcessRuntime;
+import org.drools.runtime.rule.WorkingMemory;
+
+public interface KnowledgeRuntime extends WorkingMemory, ProcessRuntime {
+
+}

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -4,7 +4,7 @@
 import org.drools.runtime.process.StatefulProcessSession;
 import org.drools.runtime.rule.StatefulRuleSession;
 
-public interface StatefulKnowledgeSession extends  StatefulRuleSession, StatefulProcessSession  {
+public interface StatefulKnowledgeSession extends StatefulRuleSession, StatefulProcessSession, KnowledgeRuntime {
 
     void setGlobal(String identifier,
                    Object object);

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/ProcessRuntime.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -1,5 +1,22 @@
 package org.drools.runtime.process;
 
-public interface ProcessRuntime {
+import java.util.Collection;
+import java.util.Map;
 
+import org.drools.event.process.ProcessEventManager;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.WorkItemManager;
+
+public interface ProcessRuntime extends ProcessEventManager {
+
+    ProcessInstance startProcess(String processId);
+    
+    ProcessInstance startProcess(String processId, Map<String, Object> parameters);
+    
+    Collection<ProcessInstance> getProcessInstances();
+
+    ProcessInstance getProcessInstance(long id);
+
+    WorkItemManager getWorkItemManager();
+    
 }

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/StatefulProcessSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/StatefulProcessSession.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/runtime/process/StatefulProcessSession.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -1,21 +1,6 @@
 package org.drools.runtime.process;
 
-import java.util.Collection;
-import java.util.Map;
 
-import org.drools.process.instance.ProcessInstance;
-import org.drools.process.instance.WorkItemManager;
-
 public interface StatefulProcessSession extends ProcessRuntime {
 	
-    ProcessInstance startProcess(String processId);
-    
-    ProcessInstance startProcess(String processId, Map<String, Object> parameters);
-    
-    Collection<ProcessInstance> getProcessInstances();
-
-    ProcessInstance getProcessInstance(long id);
-
-    WorkItemManager getWorkItemManager();
-    
 }

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/impl/KnowledgeRuntimeEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/impl/KnowledgeRuntimeEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/impl/KnowledgeRuntimeEventImpl.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,30 @@
+package org.drools.event.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.event.KnowledgeRuntimeEvent;
+import org.drools.runtime.KnowledgeRuntime;
+
+public class KnowledgeRuntimeEventImpl implements KnowledgeRuntimeEvent, Externalizable {
+	
+    private KnowledgeRuntime knowledgeRuntime;
+    
+    public KnowledgeRuntimeEventImpl(KnowledgeRuntime knowledgeRuntime) {
+        this.knowledgeRuntime = knowledgeRuntime;
+    }
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+    } 
+    
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {        
+        this.knowledgeRuntime = null; // null because we don't serialise this
+    }    
+    
+    public KnowledgeRuntime getKnowledgeRuntime() {
+        return knowledgeRuntime;
+    }
+    
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessEventImpl.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,38 @@
+package org.drools.event.process.impl;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.WorkingMemory;
+import org.drools.event.impl.KnowledgeRuntimeEventImpl;
+import org.drools.event.process.ProcessEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.reteoo.ReteooStatefulSession;
+
+public class ProcessEventImpl extends KnowledgeRuntimeEventImpl implements ProcessEvent {
+
+    private ProcessInstance processInstance;
+
+    public ProcessEventImpl(org.drools.event.ProcessEvent event, WorkingMemory workingMemory) {
+        super( new StatefulKnowledgeSessionImpl( (ReteooStatefulSession) workingMemory ));
+        processInstance = event.getProcessInstance();
+    }
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal( out );
+        out.writeObject( processInstance );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        super.readExternal( in );
+        this.processInstance = (ProcessInstance) in.readObject();
+    }
+
+	public ProcessInstance getProcessInstance() {
+		return processInstance;
+	}
+
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessNodeEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessNodeEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/process/impl/ProcessNodeEventImpl.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,36 @@
+package org.drools.event.process.impl;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.WorkingMemory;
+import org.drools.event.RuleFlowNodeTriggeredEvent;
+import org.drools.event.process.ProcessNodeEvent;
+import org.drools.process.instance.NodeInstance;
+
+public class ProcessNodeEventImpl extends ProcessEventImpl implements ProcessNodeEvent {
+
+    private NodeInstance nodeInstance;
+
+    public ProcessNodeEventImpl(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+        super(event, workingMemory);
+        nodeInstance = event.getRuleFlowNodeInstance();
+    }
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal( out );
+        out.writeObject( nodeInstance );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        super.readExternal( in );
+        this.nodeInstance = (NodeInstance) in.readObject();
+    }
+
+	public NodeInstance getNodeInstance() {
+		return nodeInstance;
+	}
+
+}

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-10-07 17:01:06 UTC (rev 23353)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -4,13 +4,9 @@
 import java.util.Collections;
 import java.util.IdentityHashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Future;
 
-
-import org.drools.event.rule.AgendaEventListener;
-import org.drools.event.rule.WorkingMemoryEventListener;
 import org.drools.KnowledgeBase;
 import org.drools.WorkingMemory;
 import org.drools.common.InternalFactHandle;
@@ -25,6 +21,16 @@
 import org.drools.event.ObjectInsertedEvent;
 import org.drools.event.ObjectRetractedEvent;
 import org.drools.event.ObjectUpdatedEvent;
+import org.drools.event.RuleFlowCompletedEvent;
+import org.drools.event.RuleFlowGroupActivatedEvent;
+import org.drools.event.RuleFlowGroupDeactivatedEvent;
+import org.drools.event.RuleFlowNodeTriggeredEvent;
+import org.drools.event.RuleFlowStartedEvent;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.process.impl.ProcessEventImpl;
+import org.drools.event.process.impl.ProcessNodeEventImpl;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.WorkingMemoryEventListener;
 import org.drools.event.rule.impl.ActivationCancelledEventImpl;
 import org.drools.event.rule.impl.ActivationCreatedEventImpl;
 import org.drools.event.rule.impl.AfterActivationFiredEventImpl;
@@ -50,6 +56,7 @@
     
     public Map<WorkingMemoryEventListener, WorkingMemoryEventListenerWrapper> mappedWorkingMemoryListeners;
     public Map<AgendaEventListener, AgendaEventListenerWrapper> mappedAgendaListeners;
+    public Map<ProcessEventListener, ProcessEventListenerWrapper> mappedProcessListeners;
     
     public StatefulKnowledgeSessionImpl(ReteooStatefulSession session) {
         this( session, null );
@@ -60,6 +67,7 @@
         this.kbase = kbase;
         this.mappedWorkingMemoryListeners = new IdentityHashMap<WorkingMemoryEventListener, WorkingMemoryEventListenerWrapper>();
         this.mappedAgendaListeners = new IdentityHashMap<AgendaEventListener, AgendaEventListenerWrapper>();
+        this.mappedProcessListeners = new IdentityHashMap<ProcessEventListener, ProcessEventListenerWrapper>();
     }
     
     public void addEventListener(WorkingMemoryEventListener listener) {
@@ -92,6 +100,21 @@
         this.session.removeEventListener( wrapper );  
     }    
     
+    public void addEventListener(ProcessEventListener listener) {
+    	ProcessEventListenerWrapper wrapper = new ProcessEventListenerWrapper( listener );
+        this.mappedProcessListeners.put( listener, wrapper );
+        this.session.addEventListener( wrapper );
+    }
+
+    public Collection<ProcessEventListener> getProcessEventListeners() {
+        return Collections.unmodifiableCollection( this.mappedProcessListeners.keySet() );
+    }
+
+    public void removeEventListener(ProcessEventListener listener) {
+        ProcessEventListenerWrapper wrapper = this.mappedProcessListeners.get( listener );
+        this.session.removeEventListener( wrapper );  
+    }    
+    
     public KnowledgeBase getKnowledgeBase() {
         if ( this.kbase == null ) {
             this.kbase = new KnowledgeBaseImpl( session.getRuleBase() );
@@ -387,4 +410,59 @@
        
     }
 
+    public static class ProcessEventListenerWrapper implements org.drools.event.RuleFlowEventListener {
+        private ProcessEventListener listener;
+        
+        public ProcessEventListenerWrapper(ProcessEventListener listener) {
+            this.listener = listener;
+        }
+
+		public void beforeRuleFlowCompleted(RuleFlowCompletedEvent event, WorkingMemory workingMemory) {
+			listener.beforeProcessCompleted(new ProcessEventImpl( event, workingMemory ));
+		}
+
+		public void beforeRuleFlowGroupActivated(
+				RuleFlowGroupActivatedEvent event, WorkingMemory workingMemory) {
+		}
+
+		public void beforeRuleFlowGroupDeactivated(
+				RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+		}
+
+		public void beforeRuleFlowNodeLeft(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+			listener.beforeNodeLeft(new ProcessNodeEventImpl( event, workingMemory ));
+		}
+
+		public void beforeRuleFlowNodeTriggered(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+			listener.beforeNodeTriggered(new ProcessNodeEventImpl( event, workingMemory ));
+		}
+
+		public void beforeRuleFlowStarted(RuleFlowStartedEvent event, WorkingMemory workingMemory) {
+			listener.beforeProcessStarted(new ProcessEventImpl( event, workingMemory ));
+		}        
+
+		public void afterRuleFlowCompleted(RuleFlowCompletedEvent event, WorkingMemory workingMemory) {
+			listener.afterProcessCompleted(new ProcessEventImpl( event, workingMemory ));
+		}
+
+		public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event, WorkingMemory workingMemory) {
+		}
+
+		public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+		}
+
+		public void afterRuleFlowNodeLeft(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+			listener.afterNodeLeft(new ProcessNodeEventImpl( event, workingMemory ));
+		}
+
+		public void afterRuleFlowNodeTriggered(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+			listener.afterNodeTriggered(new ProcessNodeEventImpl( event, workingMemory ));
+		}
+
+		public void afterRuleFlowStarted(RuleFlowStartedEvent event, WorkingMemory workingMemory) {
+			listener.afterProcessStarted(new ProcessEventImpl( event, workingMemory ));
+		}
+
+    }
+    
 }

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	2008-10-07 23:43:59 UTC (rev 23354)
@@ -0,0 +1,131 @@
+package org.drools.event.process;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.knowledge.definitions.impl.KnowledgePackageImp;
+import org.drools.rule.Package;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.spi.Action;
+import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.StartNode;
+
+public class ProcessEventSupportTest extends TestCase {
+
+    public void testProcessEventListener() throws Exception {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+        // create a simple package with one process to test the events
+        final Package pkg = new Package( "org.drools.test" );
+        RuleFlowProcess process = new RuleFlowProcess();
+        process.setId("org.drools.process.event");
+        process.setName("Event Process");
+        
+        StartNode startNode = new StartNode();
+        startNode.setName("Start");
+        startNode.setId(1);
+        process.addNode(startNode);
+        
+        ActionNode actionNode = new ActionNode();
+        actionNode.setName("Print");
+        DroolsAction action = new DroolsConsequenceAction("java", null);
+        action.setMetaData("Action", new Action() {
+			public void execute(KnowledgeHelper knowledgeHelper,
+					org.drools.WorkingMemory workingMemory,
+					ProcessContext context) throws Exception {
+            	System.out.println("Executed action");
+			}
+        });
+        actionNode.setAction(action);
+        actionNode.setId(2);
+        process.addNode(actionNode);
+        new ConnectionImpl(
+            startNode, Node.CONNECTION_DEFAULT_TYPE,
+            actionNode, Node.CONNECTION_DEFAULT_TYPE
+        );
+        
+        EndNode endNode = new EndNode();
+        endNode.setName("EndNode");
+        endNode.setId(3);
+        process.addNode(endNode);
+        new ConnectionImpl(
+            actionNode, Node.CONNECTION_DEFAULT_TYPE,
+            endNode, Node.CONNECTION_DEFAULT_TYPE
+        );
+        
+        pkg.addProcess(process);
+        kbase.addKnowledgePackage( new KnowledgePackageImp( pkg ) );
+        
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+        final List<ProcessEvent> processEventList = new ArrayList<ProcessEvent>();
+        final ProcessEventListener processEventListener = new ProcessEventListener() {
+
+        	public void afterNodeLeft(ProcessNodeEvent event) {
+				processEventList.add(event);
+			}
+
+			public void afterNodeTriggered(ProcessNodeEvent event) {
+				processEventList.add(event);
+			}
+
+			public void afterProcessCompleted(ProcessEvent event) {
+				processEventList.add(event);
+			}
+
+			public void afterProcessStarted(ProcessEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeNodeLeft(ProcessNodeEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeNodeTriggered(ProcessNodeEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeProcessCompleted(ProcessEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeProcessStarted(ProcessEvent event) {
+				processEventList.add(event);
+			}
+
+        };
+        session.addEventListener( processEventListener );
+
+        // execute the process
+        session.startProcess("org.drools.process.event");
+        assertEquals( 16, processEventList.size() );
+    }
+
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list