updating poll cron
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
package zw.qantra.tm.domain.workflows;
|
||||
|
||||
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.definition.NextAction;
|
||||
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.definition.*;
|
||||
import io.nflow.engine.workflow.instance.WorkflowInstance;
|
||||
import io.nflow.engine.workflow.instance.WorkflowInstanceAction;
|
||||
import org.joda.time.DateTime;
|
||||
@@ -27,8 +25,12 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
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
|
||||
public class PollCronWorkflow extends WorkflowDefinition {
|
||||
public class PollCronWorkflow extends CronWorkflow {
|
||||
Logger log = org.slf4j.LoggerFactory.getLogger(PollCronWorkflow.class);
|
||||
|
||||
@Autowired
|
||||
@@ -38,17 +40,15 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
@Autowired
|
||||
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);
|
||||
private static final State ERROR = new State("error", WorkflowStateType.manual, "Error state");
|
||||
|
||||
public PollCronWorkflow() {
|
||||
super(TYPE, PROCESS, ERROR);
|
||||
permit(PROCESS, PROCESS);
|
||||
protected PollCronWorkflow() {
|
||||
super(TYPE, new WorkflowSettings.Builder()
|
||||
.setHistoryDeletableAfter(hours(1))
|
||||
.setDeleteHistoryCondition(() -> true).build());
|
||||
}
|
||||
|
||||
public NextAction process(StateExecution execution) {
|
||||
public NextAction doWork(StateExecution execution) {
|
||||
List<Transaction> transactions = transactionService.getTransactionRepository()
|
||||
.findAllByConfirmationStatusAndIntegrationStatus(Status.SUCCESS, Status.PENDING);
|
||||
if (!transactions.isEmpty())
|
||||
@@ -63,14 +63,14 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
WorkflowInstance update = new WorkflowInstance.Builder()
|
||||
.setId(transaction.getWorkflowId())
|
||||
.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)); }})
|
||||
.setStateText("Resumed from manual state")
|
||||
.build();
|
||||
|
||||
WorkflowInstanceAction action = new WorkflowInstanceAction.Builder(update)
|
||||
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
||||
.setExecutionEnd(DateTime.now())
|
||||
.setExecutionEnd(now())
|
||||
.build();
|
||||
|
||||
// Apply the update
|
||||
@@ -93,14 +93,14 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
WorkflowInstance update1 = new WorkflowInstance.Builder()
|
||||
.setId(transaction.getWorkflowId())
|
||||
.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)); }})
|
||||
.setStateText("Resumed from manual state")
|
||||
.build();
|
||||
|
||||
WorkflowInstanceAction action1 = new WorkflowInstanceAction.Builder(update1)
|
||||
.setType(WorkflowInstanceAction.WorkflowActionType.externalChange)
|
||||
.setExecutionEnd(DateTime.now())
|
||||
.setExecutionEnd(now())
|
||||
.build();
|
||||
|
||||
// Apply the update
|
||||
@@ -130,8 +130,17 @@ public class PollCronWorkflow extends WorkflowDefinition {
|
||||
map.put("success", success.toString());
|
||||
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()));
|
||||
}
|
||||
|
||||
@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