[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