Merged in bbendukow/openesb-components/ESBCOMP-93-bpelse-sends-kpi-events-only- (pull request #25)

Fix for ESBCOMP-93
master
David Brassely 2014-03-06 10:12:54 +01:00
commit cf2cb10b80
6 changed files with 171 additions and 11 deletions

View File

@ -61,6 +61,8 @@ public interface Variable {
QName getFaultName ();
boolean isFault ();
String toXML ();
VariableScope getVariableScope ();

View File

@ -61,6 +61,8 @@ public interface VariableEvent extends BPELEvent {
void setReceiveCRMPID (String crmpId);
QName getBPELName ();
String toXML ();
String getInstanceId ();

View File

@ -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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorInstances_iep\" name=\"input\" type=\"msgns:BPInstanceFault_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:BPInstanceFault_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime></msgns:BPInstanceFault_MsgObj></jbi:part></jbi:message>";
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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorInstances_iep\" name=\"input\" type=\"msgns:BPInstanceSuspended_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:BPInstanceSuspended_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime></msgns:BPInstanceSuspended_MsgObj></jbi:part></jbi:message>";
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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorInstances_iep\" name=\"input\" type=\"msgns:BPInstanceResumed_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:BPInstanceResumed_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime></msgns:BPInstanceResumed_MsgObj></jbi:part></jbi:message>";
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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorInstances_iep\" name=\"input\" type=\"msgns:BPInstanceTerminated_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:BPInstanceTerminated_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime></msgns:BPInstanceTerminated_MsgObj></jbi:part></jbi:message>";
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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorInstances_iep\" name=\"input\" type=\"msgns:BPInstanceComplete_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:BPInstanceComplete_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime></msgns:BPInstanceComplete_MsgObj></jbi:part></jbi:message>";
@ -124,7 +185,7 @@ public class KPIListenerImpl implements BPELEventListener {
mEventHelper.sendKPIMEx(new QName("MonitorInstances_iep", "InputService"),"BPInstanceComplete", mstr);
}
private static final String startBPActivityEventMsgStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:ActivityStart_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:ActivityStart_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime><msgns:activityID>${6}</msgns:activityID><msgns:activityName>${7}</msgns:activityName></msgns:ActivityStart_MsgObj></jbi:part></jbi:message>";
private static final String startBPActivityEventMsgStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:ActivityStart_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:ActivityStart_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime><msgns:activityID>${6}</msgns:activityID><msgns:activityName>${7}</msgns:activityName><msgns:activityXPath>${8}</msgns:activityXPath></msgns:ActivityStart_MsgObj></jbi:part></jbi:message>";
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 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:ActivityFault_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:ActivityFault_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime><msgns:activityID>${6}</msgns:activityID><msgns:activityName>${7}</msgns:activityName><msgns:activityXPath>${8}</msgns:activityXPath></msgns:ActivityFault_MsgObj></jbi:part></jbi:message>";
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="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:VariableChange_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part>" +
"<msgns:VariableChange_MsgObj>" +
ve.toXML()+
"</msgns:VariableChange_MsgObj>" +
"</jbi:part></jbi:message>";
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 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:ActivityFinished_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:ActivityFinished_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime><msgns:activityID>${6}</msgns:activityID><msgns:activityName>${7}</msgns:activityName></msgns:ActivityFinished_MsgObj></jbi:part></jbi:message>";
private static final String completeBPActivityEventMsgStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><jbi:message xmlns:msgns=\"MonitorActivities_iep\" name=\"input\" type=\"msgns:ActivityFinished_Msg\" version=\"1.0\" xmlns:jbi=\"http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper\"><jbi:part><msgns:ActivityFinished_MsgObj><msgns:eventID>${1}</msgns:eventID><msgns:engineID>${2}</msgns:engineID><msgns:bpID>${3}</msgns:bpID><msgns:processID>${4}</msgns:processID><msgns:eventTime>${5}</msgns:eventTime><msgns:activityID>${6}</msgns:activityID><msgns:activityName>${7}</msgns:activityName><msgns:activityXPath>${8}</msgns:activityXPath></msgns:ActivityFinished_MsgObj></jbi:part></jbi:message>";
private void completeBPActivity(BPELEvent event) {
if (isInvoke (event)) {

View File

@ -142,6 +142,22 @@ public class VariableEventImpl extends BPELEventImpl implements VariableEvent {
}
public String toXML() {
StringBuffer buffer = new StringBuffer ();
buffer.append("<msgns:VariableEvent>"+getEventType()+"</msgns:VariableEvent>");
buffer.append("<msgns:Xpath>"+mXpath+"</msgns:Xpath>");
buffer.append("<msgns:BPELName>"+mBPELName+"</msgns:BPELName>");
buffer.append("<msgns:ActivityId>"+mActivityId+"</msgns:ActivityId>");
for (Map.Entry<VariableType, List<Variable>> entry : mVariables.entrySet()) {
List<Variable> 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;

View File

@ -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("<msgns:variable>\n");
if (!isFault()) {
buffer.append("<msgns:name>" + mVarName + "</msgns:name>\n");
} else {
buffer.append("<msgns:name>" + mFaultName + "</msgns:name>\n");
}
buffer.append("<msgns:scopeid>" + mScopeId + "</msgns:scopeid>\n");
buffer.append("<msgns:datatype>" + mType + "</msgns:datatype>\n");
buffer.append("<msgns:value>" + forXML(mValue) + "</msgns:value>\n");
buffer.append("<msgns:varid>" + mVarId + "</msgns:varid>\n");
buffer.append("<msgns:varname>" + mVarName + "</msgns:varname>\n");
buffer.append("<msgns:varfault>" + mFaultName + "</msgns:varfault>\n");
buffer.append("</msgns:variable>\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("&lt;");
} else if (character == '>') {
result.append("&gt;");
} else if (character == '\"') {
result.append("&quot;");
} else if (character == '\'') {
result.append("&apos;");
} else if (character == '&') {
result.append("&amp;");
} 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;
}
}

View File

@ -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 <code>generateEventsForVariable(long uid)</code> 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 <code>postVariableEvent()</code> 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)));
}
/**