---
title: "Step methods"
description: "For the Step concept, read Step."
canonical_url: "https://docs.superdurable.io/reference/java/step/"
source: "docs/reference/java/step.mdx"
locale: "en"
---

# Step methods

For the Step concept, read [Step](https://docs.superdurable.io/concepts/step.md).

<a id="commit-boundary"></a>

## 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](https://docs.superdurable.io/reference/java/step-options.md#heartbeat) and any number of best-effort
[Stream messages](https://docs.superdurable.io/concepts/primitives/stream.md). They are not part of the
method's commit. A Stream Store failure does not fail the Step.

<a id="step-execution-local"></a>

## 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](https://github.com/superdurable/dex/tree/main/examples/java/src/main/java/io/superdurable/dex/primitives/stepexecutionlocal/StepExecutionLocalFlow.java)
