You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/05/23 20:48:37 UTC
svn commit: r947465 -
/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
Author: rr
Date: Sun May 23 18:48:37 2010
New Revision: 947465
URL: http://svn.apache.org/viewvc?rev=947465&view=rev
Log:
ODE-830: pmapi, fillScopeInfo should return failed activity information even if event logging is disabled (thanks to Anurag Aggarwal)
Modified:
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?rev=947465&r1=947464&r2=947465&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Sun May 23 18:48:37 2010
@@ -1074,21 +1074,46 @@ public class ProcessAndInstanceManagemen
TScopeInfo.Activities activities = scopeInfo.addNewActivities();
List<BpelEvent> events = scope.listEvents();
- ActivityStateDocumentBuilder b = new ActivityStateDocumentBuilder();
- for (BpelEvent e : events)
- b.onEvent(e);
- for (ActivityInfoDocument ai : b.getActivities()) {
- for (ActivityRecoveryDAO recovery : recoveries) {
- if (String.valueOf(recovery.getActivityId()).equals(ai.getActivityInfo().getAiid())) {
- TFailureInfo failure = ai.getActivityInfo().addNewFailure();
- failure.setReason(recovery.getReason());
- failure.setDtFailure(toCalendar(recovery.getDateTime()));
- failure.setActions(recovery.getActions());
- failure.setRetries(recovery.getRetries());
- ai.getActivityInfo().setStatus(TActivityStatus.FAILURE);
- }
- }
- activities.addNewActivityInfo().set(ai.getActivityInfo());
+
+ // if event generation was enabled
+ if(events!=null && events.size() >0) {
+ ActivityStateDocumentBuilder b = new ActivityStateDocumentBuilder();
+ for (BpelEvent e : events)
+ b.onEvent(e);
+ for (ActivityInfoDocument ai : b.getActivities()) {
+ for (ActivityRecoveryDAO recovery : recoveries) {
+ if (String.valueOf(recovery.getActivityId()).equals(ai.getActivityInfo().getAiid())) {
+ TFailureInfo failure = ai.getActivityInfo().addNewFailure();
+ failure.setReason(recovery.getReason());
+ failure.setDtFailure(toCalendar(recovery.getDateTime()));
+ failure.setActions(recovery.getActions());
+ failure.setRetries(recovery.getRetries());
+ ai.getActivityInfo().setStatus(TActivityStatus.FAILURE);
+ }
+ }
+ activities.addNewActivityInfo().set(ai.getActivityInfo());
+ }
+ }
+
+ // otherwise at least try to get the information about failed activities
+ // TODO: we are losing information about which scope does failed activities belong to
+ // as failure table does not have scope id, we would attach every failed activity to process scope
+ else {
+ if(scope.getParentScope() == null) {
+ for (ActivityRecoveryDAO recovery : recoveries) {
+ ActivityInfoDocument ai = ActivityInfoDocument.Factory.newInstance();
+ ai.addNewActivityInfo().setAiid(String.valueOf(recovery.getActivityId()));
+ ai.getActivityInfo().setType("OActivity");
+ ai.getActivityInfo().setScope(TScopeRef.Factory.newInstance());
+ TFailureInfo failure = ai.getActivityInfo().addNewFailure();
+ failure.setReason(recovery.getReason());
+ failure.setDtFailure(toCalendar(recovery.getDateTime()));
+ failure.setActions(recovery.getActions());
+ failure.setRetries(recovery.getRetries());
+ ai.getActivityInfo().setStatus(TActivityStatus.FAILURE);
+ activities.addNewActivityInfo().set(ai.getActivityInfo());
+ }
+ }
}
}
@@ -1210,7 +1235,8 @@ public class ProcessAndInstanceManagemen
info.setVariableName(((VariableEvent) event).getVarName());
}
if(event instanceof VariableModificationEvent) {
- info.setNewValue(DOMUtils.domToString(((VariableModificationEvent) event).getNewValue()));
+ if(((VariableModificationEvent) event).getNewValue()!=null)
+ info.setNewValue(DOMUtils.domToString(((VariableModificationEvent) event).getNewValue()));
}
}