Author: vanto
Date: Sat May 22 15:01:32 2010
New Revision: 947305
URL: http://svn.apache.org/viewvc?rev=947305&view=rev
Log:
fixing ODE-830, 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=947305&r1=947304&r2=947305&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
Sat May 22 15:01:32 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()));
}
}