[jboss-svn-commits] JBL Code SVN: r36087 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/audit and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Nov 26 10:26:25 EST 2010


Author: KrisVerlaenen
Date: 2010-11-26 10:26:24 -0500 (Fri, 26 Nov 2010)
New Revision: 36087

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessVariableChangedEvent.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessVariableChangedEventImpl.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/DefaultProcessEventListener.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DebugProcessEventListener.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DefaultProcessEventListener.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessEventSupport.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
   labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java
   labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
Log:
 - fixing process variable logging

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/DefaultProcessEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/DefaultProcessEventListener.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/DefaultProcessEventListener.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -35,6 +35,10 @@
     public void afterProcessStarted(ProcessStartedEvent event) {
         // intentionally left blank
     }
+    
+    public void afterVariableChanged(ProcessVariableChangedEvent event) {
+    	// intentionally left blank
+    }
 
     public void beforeNodeLeft(ProcessNodeLeftEvent event) {
         // intentionally left blank
@@ -52,4 +56,8 @@
         // intentionally left blank
     }
 
+    public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+    	// intentionally left blank
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessEventListener.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -38,5 +38,9 @@
     void beforeNodeLeft(ProcessNodeLeftEvent event);
 
     void afterNodeLeft(ProcessNodeLeftEvent event);
+    
+    void beforeVariableChanged(ProcessVariableChangedEvent event);
 
+    void afterVariableChanged(ProcessVariableChangedEvent event);
+
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessVariableChangedEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessVariableChangedEvent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/event/process/ProcessVariableChangedEvent.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -0,0 +1,32 @@
+/**
+ * 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.
+ */
+
+package org.drools.event.process;
+
+
+public interface ProcessVariableChangedEvent
+    extends
+    ProcessEvent {
+	
+	String getVariableId();
+	
+	String getVariableInstanceId();
+	
+	Object getOldValue();
+	
+	Object getNewValue();
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -35,6 +35,7 @@
 import org.drools.audit.event.RuleFlowGroupLogEvent;
 import org.drools.audit.event.RuleFlowLogEvent;
 import org.drools.audit.event.RuleFlowNodeLogEvent;
+import org.drools.audit.event.RuleFlowVariableLogEvent;
 import org.drools.command.impl.CommandBasedStatefulKnowledgeSession;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.common.InternalFactHandle;
@@ -75,6 +76,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.impl.StatelessKnowledgeSessionImpl;
 import org.drools.reteoo.ReteooWorkingMemory;
@@ -518,7 +520,27 @@
             event.getProcessInstance().getId()) );
     }
 
-    public void afterPackageAdded(AfterPackageAddedEvent event) {
+    public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+    	filterLogEvent(new RuleFlowVariableLogEvent(LogEvent.BEFORE_VARIABLE_INSTANCE_CHANGED,
+            event.getVariableId(),
+            event.getVariableInstanceId(),
+            event.getProcessInstance().getProcessId(), 
+            event.getProcessInstance().getProcessName(),
+            event.getProcessInstance().getId(),
+            event.getNewValue() == null ? "null" : event.getNewValue().toString()) );
+	}
+	
+    public void afterVariableChanged(ProcessVariableChangedEvent event) {
+    	filterLogEvent(new RuleFlowVariableLogEvent(LogEvent.AFTER_VARIABLE_INSTANCE_CHANGED,
+            event.getVariableId(),
+            event.getVariableInstanceId(),
+            event.getProcessInstance().getProcessId(), 
+            event.getProcessInstance().getProcessName(),
+            event.getProcessInstance().getId(),
+            event.getNewValue() == null ? "null" : event.getNewValue().toString()) );
+	}
+
+	public void afterPackageAdded(AfterPackageAddedEvent event) {
         filterLogEvent( new RuleBaseLogEvent( LogEvent.AFTER_PACKAGE_ADDED,
                                               event.getPackage().getName(),
                                               null ) );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DebugProcessEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DebugProcessEventListener.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DebugProcessEventListener.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -21,6 +21,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 
 public class DebugProcessEventListener implements ProcessEventListener {
 
@@ -39,6 +40,10 @@
 	public void afterProcessStarted(ProcessStartedEvent event) {
 		System.err.println(event);
 	}
+	
+	public void afterVariableChanged(ProcessVariableChangedEvent event) {
+		System.err.println(event);
+	}
 
 	public void beforeNodeLeft(ProcessNodeLeftEvent event) {
 		System.err.println(event);
@@ -56,4 +61,8 @@
 		System.err.println(event);
 	}
 
+	public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+		System.err.println(event);
+	}
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DefaultProcessEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DefaultProcessEventListener.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/DefaultProcessEventListener.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -21,6 +21,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 
 public class DefaultProcessEventListener implements ProcessEventListener {
 
@@ -35,6 +36,9 @@
 
 	public void afterProcessStarted(ProcessStartedEvent event) {
 	}
+	
+	public void afterVariableChanged(ProcessVariableChangedEvent event) {
+	}
 
 	public void beforeNodeLeft(ProcessNodeLeftEvent event) {
 	}
@@ -48,4 +52,7 @@
 	public void beforeProcessStarted(ProcessStartedEvent event) {
 	}
 
+	public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+	}
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessEventSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessEventSupport.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessEventSupport.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -23,6 +23,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 import org.drools.runtime.KnowledgeRuntime;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.runtime.process.ProcessInstance;
@@ -129,6 +130,36 @@
         }
     }
 
+    public void fireBeforeVariableChanged(final String id, final String instanceId, 
+    		final Object oldValue, final Object newValue, 
+    		final ProcessInstance processInstance, KnowledgeRuntime kruntime) {
+        final Iterator<ProcessEventListener> iter = getEventListenersIterator();
+
+        if (iter.hasNext()) {
+            final ProcessVariableChangedEvent event = new ProcessVariableChangedEventImpl(
+        		id, instanceId, oldValue, newValue, processInstance, kruntime);
+
+            do {
+                iter.next().beforeVariableChanged(event);
+            } while (iter.hasNext());
+        }
+    }
+
+    public void fireAfterVariableChanged(final String name, final String id, 
+    		final Object oldValue, final Object newValue, 
+    		final ProcessInstance processInstance, KnowledgeRuntime kruntime) {
+        final Iterator<ProcessEventListener> iter = getEventListenersIterator();
+
+        if (iter.hasNext()) {
+            final ProcessVariableChangedEvent event = new ProcessVariableChangedEventImpl(
+        		name, id, oldValue, newValue, processInstance, kruntime);
+
+            do {
+                iter.next().afterVariableChanged(event);
+            } while (iter.hasNext());
+        }
+    }
+
     public void reset() {
         this.clear();
     }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessVariableChangedEventImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessVariableChangedEventImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/event/ProcessVariableChangedEventImpl.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+package org.drools.event;
+
+import org.drools.event.process.ProcessVariableChangedEvent;
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.process.ProcessInstance;
+
+/**
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class ProcessVariableChangedEventImpl extends ProcessEvent implements ProcessVariableChangedEvent {
+
+    private static final long serialVersionUID = 510l;
+    
+    private String id;
+    private String instanceId;
+    private Object oldValue;
+    private Object newValue;
+
+    public ProcessVariableChangedEventImpl(final String id, final String instanceId,
+    		final Object oldValue, final Object newValue, 
+    		final ProcessInstance processInstance, KnowledgeRuntime kruntime) {
+        super( processInstance, kruntime );
+        this.id = id;
+        this.instanceId = instanceId;
+        this.oldValue = oldValue;
+        this.newValue = newValue;
+    }
+    
+    public String getVariableInstanceId() {
+        return instanceId;
+    }
+    
+    public String getVariableId() {
+    	return id;
+    }
+    
+    public Object getOldValue() {
+    	return oldValue;
+    }
+    
+    public Object getNewValue() {
+    	return newValue;
+    }
+
+    public String toString() {
+        return "==>[ProcessVariableChanged(id=" + id + "; instanceId=" + instanceId + "; oldValue=" + oldValue + "; newValue=" + newValue
+            + "; processName=" + getProcessInstance().getProcessName() + "; processId=" + getProcessInstance().getProcessId() + ")]";
+    }
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -42,6 +42,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 import org.drools.management.KnowledgeSessionMonitoring.AgendaStats.AgendaStatsData;
 import org.drools.management.KnowledgeSessionMonitoring.ProcessStats.ProcessInstanceStatsData;
 import org.drools.management.KnowledgeSessionMonitoring.ProcessStats.ProcessStatsData;
@@ -456,6 +457,16 @@
 			
 		}
         
+		public void afterVariableChanged(ProcessVariableChangedEvent event) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+			// TODO Auto-generated method stub
+			
+		}
+
         public static class GlobalProcessStatsData {
         	
             public AtomicLong processInstancesStarted;

Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -34,6 +34,7 @@
 import org.drools.event.process.ProcessNodeLeftEvent;
 import org.drools.event.process.ProcessNodeTriggeredEvent;
 import org.drools.event.process.ProcessStartedEvent;
+import org.drools.event.process.ProcessVariableChangedEvent;
 import org.drools.process.core.context.variable.VariableScope;
 import org.drools.process.instance.context.variable.VariableScopeInstance;
 import org.drools.rule.Package;
@@ -126,6 +127,13 @@
                 processEventList.add(event);
 			}
 
+			public void afterVariableChanged(ProcessVariableChangedEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+				processEventList.add(event);
+			}
         };
 
         ((InternalWorkingMemory)session).getProcessRuntime().addEventListener(listener);

Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -120,6 +120,13 @@
 				processEventList.add(event);
 			}
 
+			public void afterVariableChanged(ProcessVariableChangedEvent event) {
+				processEventList.add(event);
+			}
+
+			public void beforeVariableChanged(ProcessVariableChangedEvent event) {
+				processEventList.add(event);
+			}
         };
         session.addEventListener( processEventListener );
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java	2010-11-26 14:57:14 UTC (rev 36086)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java	2010-11-26 15:26:24 UTC (rev 36087)
@@ -46,6 +46,7 @@
 import org.drools.builder.ResourceType;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.xml.XmlProcessReader;
+import org.drools.event.process.DefaultProcessEventListener;
 import org.drools.event.process.ProcessCompletedEvent;
 import org.drools.event.process.ProcessEventListener;
 import org.drools.event.process.ProcessNodeLeftEvent;
@@ -805,24 +806,10 @@
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerStart.xml");
 		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		final List<Long> list = new ArrayList<Long>();
-		ksession.addEventListener(new ProcessEventListener() {
-			public void beforeProcessStarted(ProcessStartedEvent event) {
-			}
-			public void beforeProcessCompleted(ProcessCompletedEvent event) {
-			}
-			public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
-			}
-			public void beforeNodeLeft(ProcessNodeLeftEvent event) {
-			}
+		ksession.addEventListener(new DefaultProcessEventListener() {
 			public void afterProcessStarted(ProcessStartedEvent event) {
 				list.add(event.getProcessInstance().getId());
 			}
-			public void afterProcessCompleted(ProcessCompletedEvent event) {
-			}
-			public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
-			}
-			public void afterNodeLeft(ProcessNodeLeftEvent event) {
-			}
 		});
 		Thread.sleep(250);
 		assertEquals(0, list.size());
@@ -837,24 +824,10 @@
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-SignalStart.xml");
 		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		final List<Long> list = new ArrayList<Long>();
-		ksession.addEventListener(new ProcessEventListener() {
-			public void beforeProcessStarted(ProcessStartedEvent event) {
-			}
-			public void beforeProcessCompleted(ProcessCompletedEvent event) {
-			}
-			public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
-			}
-			public void beforeNodeLeft(ProcessNodeLeftEvent event) {
-			}
+		ksession.addEventListener(new DefaultProcessEventListener() {
 			public void afterProcessStarted(ProcessStartedEvent event) {
 				list.add(event.getProcessInstance().getId());
 			}
-			public void afterProcessCompleted(ProcessCompletedEvent event) {
-			}
-			public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
-			}
-			public void afterNodeLeft(ProcessNodeLeftEvent event) {
-			}
 		});
         ksession.signalEvent("MyStartSignal", "NewValue");
 		assertEquals(1, list.size());



More information about the jboss-svn-commits mailing list