跳到主要内容

Step methods

查看 Markdown

For the Step concept, read Step.

Commits​

Dex commits each WaitFor call and each Execute call separately. Dex Server holds the Attribute writes and Channel publications of the method. It commits them together with the returned Wait or StepDecision, and only after the method returns successfully. If the method fails, Dex commits none of them. Calls to external APIs are not part of this commit.

Before it returns, a method can send heartbeat checkpoints and any number of best-effort Stream messages. They are not part of the method's commit. A Stream Store failure does not fail the Step.

Step execution local​

setStepExecutionLocal stores a value on the current Step execution. Execute reads it with getStepExecutionLocal. Use it to pass a value from WaitFor to Execute when a Flow-level Attribute is more than you need. Both methods already receive the Step input, so do not copy the input into a local.

Java
public Wait waitFor(final Context context, final Integer input) {
context.setStepExecutionLocal("note", "approval:" + input, String.class);
return Wait.until(approval.forOne());
}

public StepDecision execute(final Context context, final Integer input) {
final String note = context.getStepExecutionLocal("note", String.class);
return StepDecision.gracefulComplete(note == null ? "" : note);
}

Example: examples/java/src/main/java/io/superdurable/dex/primitives/stepexecutionlocal/StepExecutionLocalFlow.java