You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2007/02/01 18:22:05 UTC
svn commit: r502289 - in /incubator/ode/trunk:
bpel-api/src/main/java/org/apache/ode/bpel/evt/
bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/
Author: mriou
Date: Thu Feb 1 09:22:04 2007
New Revision: 502289
URL: http://svn.apache.org/viewvc?view=rev&rev=502289
Log:
ODE-91 EventContext patch provided by Raja Balasubramanian to add variable data access in events.
Added:
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/EventContext.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EventContextImpl.java
Modified:
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/BpelEvent.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java
Modified: incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/BpelEvent.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/BpelEvent.java?view=diff&rev=502289&r1=502288&r2=502289
==============================================================================
--- incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/BpelEvent.java (original)
+++ incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/BpelEvent.java Thu Feb 1 09:22:04 2007
@@ -33,6 +33,11 @@
dataHandling, activityLifecycle, scopeHandling, instanceLifecycle, correlation;
}
+ /**
+ * Bpel Event Context. In Event Listeners, use this to get Variable Data
+ */
+ public transient EventContext eventContext;
+
private Date _timestamp = new Date();
private int _lineNo = -1;
Added: incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/EventContext.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/EventContext.java?view=auto&rev=502289
==============================================================================
--- incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/EventContext.java (added)
+++ incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/evt/EventContext.java Thu Feb 1 09:22:04 2007
@@ -0,0 +1,26 @@
+package org.apache.ode.bpel.evt;
+
+/**
+ * Used in Event Listeners to get Activity Variables and its data.
+ * @author Raja Balasubramanian
+ */
+public interface EventContext {
+ /**
+ * Get ScopeInstanceId
+ * @return scopeInstanceId
+ */
+ Long getScopeInstanceId();
+
+ /**
+ * Get All variable names used in this scope Instance
+ * @return Array of Variable Names. If no variable(s) exists, null will be returned.
+ */
+ String[] getVariableNames();
+
+ /**
+ * Get Variable data for the given variable name, for this scope instance
+ * @param varName Variable Name
+ * @return DOM Node as XML String. If no value exists or variable not initialized, NULL will be returnrd.
+ */
+ String getVariableData(String varName);
+}
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java?view=diff&rev=502289&r1=502288&r2=502289
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java Thu Feb 1 09:22:04 2007
@@ -18,17 +18,18 @@
*/
package org.apache.ode.bpel.runtime;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-
import org.apache.ode.bpel.evt.ActivityEvent;
+import org.apache.ode.bpel.evt.EventContext;
import org.apache.ode.bpel.evt.ScopeEvent;
import org.apache.ode.bpel.explang.EvaluationContext;
import org.apache.ode.bpel.o.OActivity;
import org.apache.ode.bpel.o.OLink;
import org.apache.ode.jacob.IndexedObject;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Iterator;
+
/**
* Base template for activities.
*/
@@ -75,7 +76,20 @@
event.setLineNo(_self.o.debugInfo.startLine);
}
_scopeFrame.fillEventInfo(event);
+ fillEventContext(event);
getBpelRuntimeContext().sendEvent(event);
+ }
+
+ /**
+ * Populate BpelEventContext, to be used by Registered Event Listeners
+ * @param event ScopeEvent
+ */
+ protected void fillEventContext(ScopeEvent event)
+ {
+ EventContext eventContext = new EventContextImpl(_scopeFrame.oscope,
+ _scopeFrame.scopeInstanceId,
+ getBpelRuntimeContext());
+ event.eventContext = eventContext;
}
protected void dpe(Collection<OLink> links) {
Added: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EventContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EventContextImpl.java?view=auto&rev=502289
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EventContextImpl.java (added)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EventContextImpl.java Thu Feb 1 09:22:04 2007
@@ -0,0 +1,99 @@
+package org.apache.ode.bpel.runtime;
+
+import org.apache.ode.bpel.evt.EventContext;
+import org.apache.ode.bpel.o.OScope;
+import org.apache.ode.bpel.o.OScope.Variable;
+import org.apache.ode.utils.DOMUtils;
+import org.w3c.dom.Node;
+
+import java.util.Iterator;
+
+/**
+ * Bpel Event Context Implementation.
+ * @author Raja Balasubramanian
+ */
+public class EventContextImpl implements EventContext
+{
+ /**
+ * Scope Object used in this scope instance.
+ */
+ private OScope __scope;
+ /**
+ * Scope Instance ID
+ */
+ private Long __scopeInstanceId;
+ /**
+ * BPEL Runtime Context
+ */
+ private BpelRuntimeContext __runtimeContext;
+
+ /**
+ * Constructor
+ * @param __scope Scope Object used in this scope instance.
+ * @param __scopeInstanceId Scope Instance ID
+ * @param __runtimeContext BPEL Runtime Context
+ */
+ public EventContextImpl(OScope __scope, Long __scopeInstanceId, BpelRuntimeContext __runtimeContext)
+ {
+ this.__scope = __scope;
+ this.__scopeInstanceId = __scopeInstanceId;
+ this.__runtimeContext = __runtimeContext;
+ }
+
+ /**
+ * Get Variable data for the given variable name, for this scope instance
+ * @param varName Variable Name
+ * @return DOM Node as XML String. If no value exists or variable not initialized, NULL will be returnrd.
+ */
+ public String getVariableData(String varName)
+ {
+ String value = null;
+ try
+ {
+ Variable var = __scope.getVisibleVariable(varName);
+ VariableInstance varInstance = new VariableInstance(__scopeInstanceId, var);
+ Node varNode = __runtimeContext.fetchVariableData(varInstance, false);
+ value = DOMUtils.domToString(varNode);
+ }
+ catch(Throwable e)
+ {
+ //Don't throw any exception back to the caller. Just return null as value.
+ }
+ return value;
+ }
+
+ /**
+ * Get All variable names used in this scope Instance
+ * @return Array of Variable Names. If no variable(s) exists, null will be returned.
+ */
+ public String[] getVariableNames()
+ {
+ String[] __varNames = null;
+ try
+ {
+ int varSize = __scope.variables.size();
+ __varNames = new String[varSize];
+
+ Iterator<String> _varNames = __scope.variables.keySet().iterator();
+ int i = 0;
+ while(_varNames.hasNext())
+ {
+ __varNames[i++] = _varNames.next();
+ }
+ }
+ catch(Throwable e)
+ {
+ //Don't throw any exception back to the caller. Just return null as value.
+ }
+ return __varNames;
+ }
+
+ /**
+ * Get ScopeInstanceId
+ * @return scopeInstanceId
+ */
+ public Long getScopeInstanceId()
+ {
+ return __scopeInstanceId;
+ }
+}