You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2010/05/22 17:01:32 UTC

svn commit: r947305 - /ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java

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