diff --git a/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/internal/executor/WorkflowExecutor.java b/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/internal/executor/WorkflowExecutor.java index d5ac9de2a..2db263b2f 100644 --- a/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/internal/executor/WorkflowExecutor.java +++ b/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/internal/executor/WorkflowExecutor.java @@ -129,9 +129,8 @@ private WorkflowInstance saveWorkflowInstanceState(StateExecutionImpl execution, builder.setState(execution.getNextState()).setStateText(execution.getNextStateReason()).setRetries(0); } actionBuilder.setExecutionEnd(now()).setStateText(execution.getNextStateReason()); - WorkflowInstance newInstance = builder.build(); - workflowInstances.updateWorkflowInstance(newInstance, actionBuilder.build()); - return newInstance; + workflowInstances.updateWorkflowInstance(builder.build(), actionBuilder.build()); + return builder.setOriginalStateVariables(instance.stateVariables).build(); } private boolean isNextActivationImmediately(StateExecutionImpl execution) { diff --git a/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/workflow/instance/WorkflowInstance.java b/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/workflow/instance/WorkflowInstance.java index 083826d1f..26bebb205 100644 --- a/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/workflow/instance/WorkflowInstance.java +++ b/nflow-engine/src/main/java/com/nitorcreations/nflow/engine/workflow/instance/WorkflowInstance.java @@ -128,6 +128,12 @@ public Builder setProcessing(boolean processing) { return this; } + public Builder setOriginalStateVariables(Map originalStateVariables) { + this.originalStateVariables.clear(); + this.originalStateVariables.putAll(originalStateVariables); + return this; + } + public Builder setStateVariables(Map stateVariables) { this.stateVariables.clear(); this.stateVariables.putAll(stateVariables);