Merge "updated camunda springboot version"
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / workflow / tasks / WorkflowActionBBTasks.java
index 917039b..2e91a52 100644 (file)
@@ -41,6 +41,7 @@ import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -54,6 +55,7 @@ public class WorkflowActionBBTasks {
        private static final String G_ALACARTE = "aLaCarte";
        private static final String G_ACTION = "requestAction";
        private static final String RETRY_COUNT = "retryCount";
+       protected String maxRetries = "mso.rainyDay.maxRetries";
        private static final Logger logger = LoggerFactory.getLogger(WorkflowActionBBTasks.class);
 
        @Autowired
@@ -62,6 +64,8 @@ public class WorkflowActionBBTasks {
        private WorkflowAction workflowAction;
        @Autowired
        private WorkflowActionBBFailure workflowActionBBFailure;
+       @Autowired
+       private Environment environment;
        
        public void selectBB(DelegateExecution execution) {
                List<ExecuteBuildingBlock> flowsToExecute = (List<ExecuteBuildingBlock>) execution
@@ -85,8 +89,8 @@ public class WorkflowActionBBTasks {
                        execution.setVariable("completed", true);
                } else {
                        execution.setVariable("completed", false);
-                       execution.setVariable(G_CURRENT_SEQUENCE, currentSequence);
                }
+               execution.setVariable(G_CURRENT_SEQUENCE, currentSequence);
        }
        
        public void updateFlowStatistics(DelegateExecution execution) {
@@ -199,6 +203,7 @@ public class WorkflowActionBBTasks {
                        execution.setVariable("finalStatusMessage", macroAction);
                        Timestamp endTime = new Timestamp(System.currentTimeMillis());
                        request.setEndTime(endTime);
+                       request.setFlowStatus("Successfully completed all Building Blocks");
                        request.setStatusMessage(macroAction);
                        request.setProgress(Long.valueOf(100));
                        request.setRequestStatus("COMPLETE");
@@ -214,17 +219,24 @@ public class WorkflowActionBBTasks {
                String requestId = (String) execution.getVariable(G_REQUEST_ID);
                String retryDuration = (String) execution.getVariable("RetryDuration");
                int retryCount = (int) execution.getVariable(RETRY_COUNT);
+               int envMaxRetries;
+               try{
+                       envMaxRetries = Integer.parseInt(this.environment.getProperty(maxRetries));     
+               } catch (Exception ex) {
+                       logger.error("Could not read maxRetries from config file. Setting max to 5 retries");
+                       envMaxRetries = 5;
+               }
                int nextCount = retryCount +1;
                if (handlingCode.equals("Retry")){
                        workflowActionBBFailure.updateRequestErrorStatusMessage(execution);
                        try{
                                InfraActiveRequests request = requestDbclient.getInfraActiveRequestbyRequestId(requestId);
-                               request.setRetryStatusMessage("Retry " + nextCount + "/5 will be started in " + retryDuration);
+                               request.setRetryStatusMessage("Retry " + nextCount + "/" + envMaxRetries + " will be started in " + retryDuration);
                                requestDbclient.updateInfraActiveRequests(request); 
                        } catch(Exception ex){
                                logger.warn("Failed to update Request Db Infra Active Requests with Retry Status",ex);
                        }
-                       if(retryCount<5){
+                       if(retryCount<envMaxRetries){
                                int currSequence = (int) execution.getVariable("gCurrentSequence");
                                execution.setVariable("gCurrentSequence", currSequence-1);
                                execution.setVariable(RETRY_COUNT, nextCount);
@@ -269,7 +281,7 @@ public class WorkflowActionBBTasks {
                        int flowSize = rollbackFlows.size();
                        String handlingCode = (String) execution.getVariable("handlingCode");
                        if(handlingCode.equals("RollbackToAssigned")){
-                               for(int i = 0; i<flowSize -1; i++){
+                               for(int i = 0; i<flowSize; i++){
                                        if(rollbackFlows.get(i).getBuildingBlock().getBpmnFlowName().contains("Unassign")){
                                                rollbackFlows.remove(i);
                                        }