@Override public CompletionStage<Void> triggerWorkflowInstance(String componentId, String workflowId, String parameter) { return triggerWorkflowInstance(componentId, workflowId, parameter, TriggerParameters.zero()); }
static TriggerParameters zero() { return builder().build(); } }
@Override public void printBackfill(Backfill backfill, boolean ignored) { System.out.println(String.format("%s %s %s %s %s %s %s %s %s %s %s %s", backfill.id(), backfill.workflowId().componentId(), backfill.workflowId().id(), backfill.halted(), backfill.allTriggered(), backfill.concurrency(), backfill.start(), backfill.end(), backfill.reverse(), backfill.nextTrigger(), backfill.description().orElse(""), backfill.triggerParameters().map(triggerParameters -> formatMap( triggerParameters.env())).orElse(""))); }
private void printBackfill(Backfill backfill, int cidLength, int widLength, int descriptionLength, boolean noTruncate) { final Schedule schedule = backfill.schedule(); final WorkflowId workflowId = backfill.workflowId(); final String format = BACKFILL_FORMAT .replaceAll("<cid-length>", String.valueOf(cidLength)) .replaceAll("<wid-length>", String.valueOf(widLength)) .replaceAll("<description-length>", String.valueOf(descriptionLength)); System.out.println(String.format(format, backfill.id(), backfill.halted(), backfill.allTriggered(), backfill.concurrency(), toParameter(schedule, backfill.start()), toParameter(schedule, backfill.end()), backfill.reverse(), toParameter(schedule, backfill.nextTrigger()), workflowId.componentId(), workflowId.id(), formatLongField(backfill.description(), noTruncate), formatLongField(backfill.triggerParameters() .map(triggerParameters -> formatMap(triggerParameters.env())), noTruncate))); }
@JsonCreator public static Trigger create( @JsonProperty("trigger_id") String triggerId, @JsonProperty("timestamp") Instant timestamp, @JsonProperty("parameters") @Nullable TriggerParameters parameters, @JsonProperty("complete") boolean complete, @JsonProperty("executions") List<Execution> executions) { return new AutoValue_Trigger( triggerId, timestamp, Optional.ofNullable(parameters).orElse(TriggerParameters.zero()), complete, executions); } }
private void triggerWorkflowInstance() throws ExecutionException, InterruptedException { final String component = namespace.getString(COMPONENT_DEST); final String workflow = namespace.getString(WORKFLOW_DEST); final String parameter = namespace.getString(PARAMETER_DEST); final TriggerParameters parameters = TriggerParameters.builder() .env(parser.getEnvVars(namespace, parser.triggerEnv)) .build(); final boolean allowFuture = namespace.getBoolean(parser.triggerAllowFuture.getDest()); styxClient.triggerWorkflowInstance(component, workflow, parameter, parameters, allowFuture) .toCompletableFuture().get(); cliOutput.printMessage("Triggered! Use `styx ls -c " + component + "` to check active workflow instances."); }
data.triggerParameters().ifPresent(p -> env.putAll(p.env()));
private void closeTrigger() { if (!executionStatusList.isEmpty()) { closeExecution(); } final Trigger trigger = Trigger.create(currTriggerId, triggerTs, currTriggerParameters, completed, executionList); currTriggerId = "UNKNOWN"; currTriggerParameters = TriggerParameters.zero(); triggerList.add(trigger); executionList = new ArrayList<>(); }
private void backfillCreate() throws ExecutionException, InterruptedException { final String component = namespace.getString(parser.backfillCreateComponent.getDest()); final String workflow = namespace.getString(parser.backfillCreateWorkflow.getDest()); final String start = namespace.getString(parser.backfillCreateStart.getDest()); final String end = namespace.getString(parser.backfillCreateEnd.getDest()); final boolean reverse = namespace.getBoolean(parser.backfillCreateReverse.getDest()); final int concurrency = namespace.getInt(parser.backfillCreateConcurrency.getDest()); final String description = namespace.getString(parser.backfillCreateDescription.getDest()); final TriggerParameters triggerParameters = TriggerParameters.builder() .env(parser.getEnvVars(namespace, parser.backfillCreateEnv)) .build(); final BackfillInput configuration = BackfillInput.newBuilder() .component(component) .workflow(workflow) .start(Instant.parse(start)) .end(Instant.parse(end)) .reverse(reverse) .concurrency(concurrency) .description(description) .triggerParameters(triggerParameters) .build(); final boolean allowFuture = namespace.getBoolean(parser.backfillCreateAllowFuture.getDest()); final Backfill backfill = styxClient.backfillCreate(configuration, allowFuture) .toCompletableFuture().get(); cliOutput.printBackfill(backfill, true); }
@Override public Event toEvent() { return Event.triggerExecution(WorkflowInstance.parseKey(workflowInstance), trigger(), parameters.orElse(TriggerParameters.zero())); }
private Response<TriggerRequest> triggerAndWait(TriggerRequest triggerRequest, Workflow workflow, Instant instant) { final TriggerParameters parameters = triggerRequest.triggerParameters().orElse(TriggerParameters.zero()); final String triggerId = randomGenerator.generateUniqueId(AD_HOC_CLI_TRIGGER_PREFIX); final CompletionStage<Void> triggered = triggerListener.event( workflow, Trigger.adhoc(triggerId), instant, parameters); // TODO: return future instead of blocking try { triggered.toCompletableFuture().get(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); } catch (ExecutionException e) { return handleException(e); } // todo: change payload to a struct returning the triggerId as well so the user can refer to it return Response.forPayload(triggerRequest); }
final TriggerParameters parameters = backfill.triggerParameters().orElse(TriggerParameters.zero()); final CompletableFuture<Void> processed = triggerListener .event(workflow, Trigger.backfill(backfill.id()), nextTrigger, parameters)
Trigger.natural(), instantSpec.instant(), TriggerParameters.zero());