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()));
         }
     }
 


Reply via email to