@Override public void execute(Workflow workflow) throws IOException { if (!workflow.isComplete()) throw new IllegalArgumentException("Workflow is not complete"); workflow.execute(workflowExecutor); progressStore.delete(workflow.getProgress()); } }
@Override public Workflow cancelInput(Workflow workflow) throws IOException { workflow.cancelInput(); save(workflow.getProgress()); return workflow; }
public static WorkflowStateDto asDto(@Nonnull Workflow from) { WorkflowStateDto dto = new WorkflowStateDto(); dto.setName(from.getProgress().getWorkflowName().getDescription()); dto.setWorkflowId(from.getProgress().getId()); dto.setLog(from.getLog()); dto.setComplete(from.isComplete()); dto.setLastModified(formatDateTime(from.getProgress().getLastModified())); if (from.isComplete()) { dto.setMessage(from.getConfirmMessage()); } else { dto.setStepNumber(from.getNextStepNumber()); WorkflowStepPrompt prompt = from.getStep(dto.getStepNumber()); dto.setMessage(prompt.getMessage()); dto.setInputTypes(prompt.getInputTypes()); } return dto; }
@Override public Workflow processInput(Workflow workflow, int stepNumber, String input) throws IOException { List<String> errors = workflow.processInput(stepNumber, makeProgressStep(input, workflow.getStep(stepNumber).getInputTypes())); if (!errors.isEmpty()) { throw new ValidationException(errors.stream().map(err -> new ValidationError(err)).collect(Collectors.toList())); } save(workflow.getProgress()); return workflow; }
protected abstract Workflow createWorkflow();
public static WorkflowStateDto asDto(@Nonnull Workflow from, int stepNumber) { WorkflowStateDto dto = new WorkflowStateDto(); dto.setName(from.getProgress().getWorkflowName().getDescription()); dto.setWorkflowId(from.getProgress().getId()); dto.setLog(from.getLog()); dto.setComplete(from.isComplete()); dto.setLastModified(formatDateTime(from.getProgress().getLastModified())); if (stepNumber >= from.getLog().size()) { if (from.isComplete()) { dto.setMessage(from.getConfirmMessage()); } else { dto.setStepNumber(from.getNextStepNumber()); } } else { dto.setStepNumber(stepNumber); } if (dto.getStepNumber() != null) { WorkflowStepPrompt prompt = from.getStep(stepNumber); dto.setMessage(prompt.getMessage()); dto.setInputTypes(prompt.getInputTypes()); } return dto; }