updating poll cron
This commit is contained in:
@@ -1,11 +1,9 @@
|
|||||||
package zw.qantra.tm.domain.workflows;
|
package zw.qantra.tm.domain.workflows;
|
||||||
|
|
||||||
import io.nflow.engine.service.WorkflowInstanceService;
|
import io.nflow.engine.service.WorkflowInstanceService;
|
||||||
|
import io.nflow.engine.workflow.curated.CronWorkflow;
|
||||||
import io.nflow.engine.workflow.curated.State;
|
import io.nflow.engine.workflow.curated.State;
|
||||||
import io.nflow.engine.workflow.definition.NextAction;
|
import io.nflow.engine.workflow.definition.*;
|
||||||
import io.nflow.engine.workflow.definition.StateExecution;
|
|
||||||
import io.nflow.engine.workflow.definition.WorkflowDefinition;
|
|
||||||
import io.nflow.engine.workflow.definition.WorkflowStateType;
|
|
||||||
import io.nflow.engine.workflow.instance.WorkflowInstance;
|
import io.nflow.engine.workflow.instance.WorkflowInstance;
|
||||||
import io.nflow.engine.workflow.instance.WorkflowInstanceAction;
|
import io.nflow.engine.workflow.instance.WorkflowInstanceAction;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
@@ -27,8 +25,12 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
import static io.nflow.engine.workflow.definition.NextAction.moveToStateAfter;
|
||||||
|
import static org.joda.time.DateTime.now;
|
||||||
|
import static org.joda.time.Period.hours;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class PollCronWorkflow extends WorkflowDefinition {
|
public class PollCronWorkflow extends CronWorkflow {
|
||||||
Logger log = org.slf4j.LoggerFactory.getLogger(PollCronWorkflow.class);
|
Logger log = org.slf4j.LoggerFactory.getLogger(PollCronWorkflow.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -38,17 +40,15 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WorkflowUtils workflowUtils;
|
private WorkflowUtils workflowUtils;
|
||||||
|
|
||||||
public static final String TYPE = "pollCronWorkflow";
|
public static final String TYPE = "transactionPollCronWorkflow";
|
||||||
|
|
||||||
public static final State PROCESS = new State("process", WorkflowStateType.start);
|
protected PollCronWorkflow() {
|
||||||
private static final State ERROR = new State("error", WorkflowStateType.manual, "Error state");
|
super(TYPE, new WorkflowSettings.Builder()
|
||||||
|
.setHistoryDeletableAfter(hours(1))
|
||||||
public PollCronWorkflow() {
|
.setDeleteHistoryCondition(() -> true).build());
|
||||||
super(TYPE, PROCESS, ERROR);
|
|
||||||
permit(PROCESS, PROCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public NextAction process(StateExecution execution) {
|
public NextAction doWork(StateExecution execution) {
|
||||||
List<Transaction> transactions = transactionService.getTransactionRepository()
|
List<Transaction> transactions = transactionService.getTransactionRepository()
|
||||||
.findAllByConfirmationStatusAndIntegrationStatus(Status.SUCCESS, Status.PENDING);
|
.findAllByConfirmationStatusAndIntegrationStatus(Status.SUCCESS, Status.PENDING);
|
||||||
if (!transactions.isEmpty())
|
if (!transactions.isEmpty())
|
||||||
@@ -63,14 +63,14 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
|||||||
WorkflowInstance update = new WorkflowInstance.Builder()
|
WorkflowInstance update = new WorkflowInstance.Builder()
|
||||||
.setId(transaction.getWorkflowId())
|
.setId(transaction.getWorkflowId())
|
||||||
.setState("pollStatus") // The state you want to transition to
|
.setState("pollStatus") // The state you want to transition to
|
||||||
.setNextActivation(DateTime.now()) // Schedule immediate execution
|
.setNextActivation(now()) // Schedule immediate execution
|
||||||
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(transaction)); }})
|
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(transaction)); }})
|
||||||
.setStateText("Resumed from manual state")
|
.setStateText("Resumed from manual state")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkflowInstanceAction action = new WorkflowInstanceAction.Builder(update)
|
WorkflowInstanceAction action = new WorkflowInstanceAction.Builder(update)
|
||||||
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
||||||
.setExecutionEnd(DateTime.now())
|
.setExecutionEnd(now())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Apply the update
|
// Apply the update
|
||||||
@@ -93,14 +93,14 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
|||||||
WorkflowInstance update1 = new WorkflowInstance.Builder()
|
WorkflowInstance update1 = new WorkflowInstance.Builder()
|
||||||
.setId(transaction.getWorkflowId())
|
.setId(transaction.getWorkflowId())
|
||||||
.setState("integration") // The state you want to transition to
|
.setState("integration") // The state you want to transition to
|
||||||
.setNextActivation(DateTime.now()) // Schedule immediate execution
|
.setNextActivation(now()) // Schedule immediate execution
|
||||||
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(tran)); }})
|
.setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(tran)); }})
|
||||||
.setStateText("Resumed from manual state")
|
.setStateText("Resumed from manual state")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
WorkflowInstanceAction action1 = new WorkflowInstanceAction.Builder(update1)
|
WorkflowInstanceAction action1 = new WorkflowInstanceAction.Builder(update1)
|
||||||
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
||||||
.setExecutionEnd(DateTime.now())
|
.setExecutionEnd(now())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Apply the update
|
// Apply the update
|
||||||
@@ -130,8 +130,17 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
|||||||
map.put("success", success.toString());
|
map.put("success", success.toString());
|
||||||
execution.setVariable(LocalDateTime.now().toString(), map);
|
execution.setVariable(LocalDateTime.now().toString(), map);
|
||||||
|
|
||||||
return NextAction.retryAfter(DateTime.now().plusMinutes(2),
|
return moveToStateAfter(WAIT_FOR_WORK_TO_FINISH, now().plusMinutes(2),
|
||||||
String.format("Cron complete on %s transactions", transactions.size()));
|
String.format("Cron complete on %s transactions", transactions.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean handleFailureImpl(StateExecution execution) {
|
||||||
|
return super.handleFailureImpl(execution);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected DateTime waitForWorkToFinishImpl(StateExecution execution) {
|
||||||
|
return super.waitForWorkToFinishImpl(execution);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user