diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/Variable.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/Variable.java
index 4cd1c2b66..9fa43fa20 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/Variable.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/Variable.java
@@ -61,6 +61,8 @@ public interface Variable {
QName getFaultName ();
boolean isFault ();
+
+ String toXML ();
VariableScope getVariableScope ();
diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/VariableEvent.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/VariableEvent.java
index 6ed96ec4b..01ae7d575 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/VariableEvent.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/VariableEvent.java
@@ -61,6 +61,8 @@ public interface VariableEvent extends BPELEvent {
void setReceiveCRMPID (String crmpId);
QName getBPELName ();
+
+ String toXML ();
String getInstanceId ();
diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/KPIListenerImpl.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/KPIListenerImpl.java
index e11033bbf..dd0e1dc4c 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/KPIListenerImpl.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/KPIListenerImpl.java
@@ -45,6 +45,7 @@ import com.sun.jbi.engine.bpel.core.bpel.event.ActivityEvent;
import com.sun.jbi.engine.bpel.core.bpel.event.BPELEvent;
import com.sun.jbi.engine.bpel.core.bpel.event.BPELEventListener;
import com.sun.jbi.engine.bpel.core.bpel.event.BPELInstanceEvent;
+import com.sun.jbi.engine.bpel.core.bpel.event.VariableEvent;
import com.sun.jbi.engine.bpel.core.bpel.util.EventProcessHelper;
import com.sun.jbi.engine.bpel.core.bpel.util.I18n;
@@ -72,10 +73,23 @@ public class KPIListenerImpl implements BPELEventListener {
completeBPActivity(event);
break;
case BP_TERMINATE:
+ terminatedBPI(event);
+ break;
case BP_SUSPEND:
+ suspendBPI(event);
+ break;
case BP_RESUME:
+ resumedBPI(event);
+ break;
+ case BP_FAULT:
+ faultBPI(event);
+ break;
case ACTIVITY_FAULTED:
+ faultBPActivity(event);
+ break;
case VARIABLE_CHANGED:
+ variableChanged(event);
+ break;
default:
if (LOGGER.isLoggable(Level.FINE)) {
LOGGER.log(Level.FINE, I18n.loc("KPI for {0} is not implemented", event.getEventType()));
@@ -103,6 +117,7 @@ public class KPIListenerImpl implements BPELEventListener {
mstr = replaceAll(mstr,"${5}",""+event.getTimeStamp().getTime());
mstr = replaceAll(mstr,"${6}",""+event.getActivityId());
mstr = replaceAll(mstr,"${7}",""+event.getActivityName());
+ mstr = replaceAll(mstr,"${8}",""+event.getActivityXpath());
return mstr;
}
@@ -116,6 +131,52 @@ public class KPIListenerImpl implements BPELEventListener {
new QName("MonitorInstances_iep", "InputService"), "BPInstanceStartEventStream", mstr);
}
+
+private static final String startBPIEventFault =
+ "${1}${2}${3}${4}${5}";
+ private void faultBPI(BPELEvent event) {
+ String mstr = fillInInstanceEventValues(startBPIEventFault, (BPELInstanceEvent)event);
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI InstanceFault XML={0}",mstr));
+ }
+ mEventHelper.sendKPIMEx(
+ new QName("MonitorInstances_iep", "InputService"), "BPInstanceFault", mstr);
+ }
+
+
+ private static final String startBPIEventSuspend =
+ "${1}${2}${3}${4}${5}";
+ private void suspendBPI(BPELEvent event) {
+ String mstr = fillInInstanceEventValues(startBPIEventSuspend, (BPELInstanceEvent)event);
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI InstanceSuspended XML={0}",mstr));
+ }
+ mEventHelper.sendKPIMEx(
+ new QName("MonitorInstances_iep", "InputService"), "BPInstanceSuspended", mstr);
+ }
+
+ private static final String startBPIEventResumed =
+ "${1}${2}${3}${4}${5}";
+ private void resumedBPI(BPELEvent event) {
+ String mstr = fillInInstanceEventValues(startBPIEventResumed, (BPELInstanceEvent)event);
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI InstanceResumed XML={0}",mstr));
+ }
+ mEventHelper.sendKPIMEx(
+ new QName("MonitorInstances_iep", "InputService"), "BPInstanceResumed", mstr);
+ }
+
+ private static final String startBPIEventTerminated =
+ "${1}${2}${3}${4}${5}";
+ private void terminatedBPI(BPELEvent event) {
+ String mstr = fillInInstanceEventValues(startBPIEventTerminated, (BPELInstanceEvent)event);
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI InstanceTerminated XML={0}",mstr));
+ }
+ mEventHelper.sendKPIMEx(
+ new QName("MonitorInstances_iep", "InputService"), "BPInstanceTerminated", mstr);
+ }
+
private static final String completeBPIEventMsgStr =
"${1}${2}${3}${4}${5}";
@@ -124,7 +185,7 @@ public class KPIListenerImpl implements BPELEventListener {
mEventHelper.sendKPIMEx(new QName("MonitorInstances_iep", "InputService"),"BPInstanceComplete", mstr);
}
- private static final String startBPActivityEventMsgStr = "${1}${2}${3}${4}${5}${6}${7}";
+ private static final String startBPActivityEventMsgStr = "${1}${2}${3}${4}${5}${6}${7}${8}";
private void startBPActivity(BPELEvent event) {
if (isInvoke (event)) {
@@ -132,7 +193,35 @@ public class KPIListenerImpl implements BPELEventListener {
mEventHelper.sendKPIMEx(new QName("MonitorActivities_iep", "InputService"), "ActivityStart", msgStr);
}
}
-
+
+
+ private static final String startBPActivityFaultStr = "${1}${2}${3}${4}${5}${6}${7}${8}";
+
+ private void faultBPActivity(BPELEvent event) {
+ if (isInvoke (event)) {
+ String msgStr = fillInActivityEventValues(startBPActivityFaultStr, (ActivityEvent)event);
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI ActivityFault XML={0}",msgStr));
+ }
+ mEventHelper.sendKPIMEx(new QName("MonitorActivities_iep", "InputService"), "ActivityFault", msgStr);
+ }
+ }
+
+
+ private void variableChanged(BPELEvent event) {
+ VariableEvent ve=(VariableEvent)event;
+ String msgStr=ve.toXML();
+ msgStr="" +
+ "" +
+ ve.toXML()+
+ "" +
+ "";
+ if (LOGGER.isLoggable(Level.FINE)) {
+ LOGGER.log(Level.FINE, I18n.loc("KPI Variable Change XML={0}",msgStr));
+ }
+ mEventHelper.sendKPIMEx(new QName("MonitorActivities_iep", "InputService"), "VariableChange", msgStr);
+ }
+
private static boolean isInvoke (BPELEvent event) {
ActivityEvent actEvent = (ActivityEvent) event;
String xpath = actEvent.getActivityXpath();
@@ -150,7 +239,7 @@ public class KPIListenerImpl implements BPELEventListener {
return false;
}
- private static final String completeBPActivityEventMsgStr = "${1}${2}${3}${4}${5}${6}${7}";
+ private static final String completeBPActivityEventMsgStr = "${1}${2}${3}${4}${5}${6}${7}${8}";
private void completeBPActivity(BPELEvent event) {
if (isInvoke (event)) {
diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableEventImpl.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableEventImpl.java
index 5c0901e01..b7745af30 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableEventImpl.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableEventImpl.java
@@ -142,6 +142,22 @@ public class VariableEventImpl extends BPELEventImpl implements VariableEvent {
}
+ public String toXML() {
+ StringBuffer buffer = new StringBuffer ();
+ buffer.append(""+getEventType()+"");
+ buffer.append(""+mXpath+"");
+ buffer.append(""+mBPELName+"");
+ buffer.append(""+mActivityId+"");
+ for (Map.Entry> entry : mVariables.entrySet()) {
+ List vars = entry.getValue();
+ for (Variable var : vars) {
+ buffer.append(var.toXML()); // Uncomment
+ }
+ }
+ return buffer.toString();
+ }
+
+
public String getInvokeCRMPID() {
// TODO Auto-generated method stub
return mInvokeCRMPID;
diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableImpl.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableImpl.java
index 644045ff5..55e5d1ee7 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableImpl.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/event/impl/VariableImpl.java
@@ -40,6 +40,8 @@ import com.sun.jbi.engine.bpel.core.bpel.event.Variable;
import com.sun.jbi.engine.bpel.core.bpel.model.runtime.VariableScope;
import com.sun.jbi.engine.bpel.core.bpel.model.runtime.WSMessage;
import com.sun.jbi.engine.bpel.core.bpel.util.DOMHelper;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
public class VariableImpl implements Variable {
@@ -190,9 +192,56 @@ public class VariableImpl implements Variable {
return buffer.toString();
}
- public VariableScope getVariableScope() {
- // TODO Auto-generated method stub
- return mVariableScope;
- }
+
+ public String toXML() {
+ // TODO Auto-generated method stub
+ StringBuffer buffer = new StringBuffer();
+
+ buffer.append("\n");
+ if (!isFault()) {
+ buffer.append("" + mVarName + "\n");
+ } else {
+ buffer.append("" + mFaultName + "\n");
+ }
+ buffer.append("" + mScopeId + "\n");
+ buffer.append("" + mType + "\n");
+ buffer.append("" + forXML(mValue) + "\n");
+ buffer.append("" + mVarId + "\n");
+ buffer.append("" + mVarName + "\n");
+ buffer.append("" + mFaultName + "\n");
+
+ buffer.append("\n");
+ return buffer.toString();
+ }
+
+ protected static String forXML(String aText) {
+ final StringBuilder result = new StringBuilder();
+ final StringCharacterIterator iterator = new StringCharacterIterator(aText);
+ char character = iterator.current();
+ while (character != CharacterIterator.DONE) {
+ if (character == '<') {
+ result.append("<");
+ } else if (character == '>') {
+ result.append(">");
+ } else if (character == '\"') {
+ result.append(""");
+ } else if (character == '\'') {
+ result.append("'");
+ } else if (character == '&') {
+ result.append("&");
+ } else {
+ //the char is not a special one
+ //add it to the result as is
+ result.append(character);
+ }
+ character = iterator.next();
+ }
+ return result.toString();
+ }
+
+ public VariableScope getVariableScope() {
+ // TODO Auto-generated method stub
+ return mVariableScope;
+ }
}
diff --git a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/model/runtime/impl/MonitorManager.java b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/model/runtime/impl/MonitorManager.java
index c4cd2468c..3ff30655b 100755
--- a/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/model/runtime/impl/MonitorManager.java
+++ b/ojc-core/bpelse/bpelcore/src/com/sun/jbi/engine/bpel/core/bpel/model/runtime/impl/MonitorManager.java
@@ -332,7 +332,8 @@ public class MonitorManager {
// DEVNOTE: For variable events we do not take into account if KPI is enabled or not. This is because today
// KPI events ignore variable events anyway. If this changes (not sure why it would) this logic will need to
// be changed to take KPI into account. See generateEventsForVariable(long uid)
also.
- if (mGenerateEvents && mEngine.isMonitorEnabled() && (mEngine.isVariableMonitorEnabled() || hasFault) ) {
+// if (mGenerateEvents && mEngine.isMonitorEnabled() && (mEngine.isVariableMonitorEnabled() || hasFault) ) {
+ if (mGenerateEvents && mEngine.isKPIEnabled() ) {
processAndFilterVariables(varMap);
if (!varMap.isEmpty()) {
long actId = 0;
@@ -370,7 +371,7 @@ public class MonitorManager {
public void postEventForFault(ActivityUnit unit, Fault fault) {
if (generateEventsForActivity(unit)) {
postActivityFaultedEvent(unit);
- if (mEngine.isMonitorEnabled()) {
+ if (mEngine.isMonitorEnabled() || mEngine.isKPIEnabled()) {
String varStr = null;
if (fault.getData() != null) {
varStr = fault.getName() + " Details: " + fault.getData().toString();
@@ -483,8 +484,9 @@ public class MonitorManager {
// DEVNOTE: For variable events we do not take into account if KPI is enabled or not. This is because today
// KPI events ignore variable events anyway. If this changes (not sure why it would) this logic will need to
// be changed to take KPI into account. See postVariableEvent()
also.
- return (mGenerateEvents && mEngine.isMonitorEnabled() && mEngine.isVariableMonitorEnabled() &&
- (mEventsFilter == null || mEventsFilter.generateEventsForVariable(uid)));
+// return (mGenerateEvents && mEngine.isMonitorEnabled() && mEngine.isVariableMonitorEnabled() &&
+// (mEventsFilter == null || mEventsFilter.generateEventsForVariable(uid)));
+ return (mGenerateEvents && mEngine.isKPIEnabled() && (mEventsFilter == null || mEventsFilter.generateEventsForVariable(uid)));
}
/**