---
title: "Flows and Steps"
description: "These pages cover Flow and Step behavior in the Go SDK: start options,"
canonical_url: "https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/"
source: "docs/reference-go_versioned_docs/version-1.37.x/flows-and-steps/index.mdx"
locale: "zh-Hans"
---

# Flows and Steps

These pages cover Flow and Step behavior in the Go SDK: start options,
Flow configuration, waits, Step decisions, Step options, and what happens when
an attempt fails or is interrupted. For the concepts, read
[Flow](https://docs.superdurable.io/zh-Hans/concepts/flow.md) and [Step](https://docs.superdurable.io/zh-Hans/concepts/step.md) first. For the exact
signature of one API, read the [Go SDK API reference](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x.md#api-reference).

- [Flow definition](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/flow-definition.md)<a id="flow-definition"></a>
- [StartFlowOptions](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/start-flow-options.md)<a id="timeout-and-timeout-policy"></a><a id="flow-id-request-id-and-already-started"></a><a id="start-request-server-behavior"></a><a id="start-flow-best-practices"></a><a id="wait-for-required-milestone"></a><a id="start-error-reconciliation"></a><a id="durable-dependent-starts"></a><a id="retry-policy"></a><a id="start-delay"></a><a id="attributes"></a><a id="how-these-options-work-together"></a><a id="这些选项如何一起工作"></a><a id="what-dex-server-does"></a><a id="dex-server-的逻辑"></a><a id="start-flow-options"></a>
- [FlowConfig](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/flow-config.md)<a id="update-flow-config-with-a-client"></a><a id="flow-config"></a>
- [Step methods and commits](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/step-methods.md)<a id="commit-boundary"></a>
- [Waits](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/waits.md)<a id="condition-results"></a><a id="channel-results"></a><a id="subflow-results"></a><a id="anycombinationof"></a><a id="step-execution-local"></a><a id="skip-immediately"></a><a id="channel-结果"></a><a id="subflow-结果"></a><a id="waits"></a>
- [Step decisions](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/step-decisions.md)<a id="gotomulti"></a><a id="close-decisions"></a><a id="cancellation-on-stepdecision"></a><a id="forcecompleteifchannelsempty"></a><a id="step-decisions"></a>
- [StepOptions](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/step-options.md)<a id="stepoptions-override-per-stepexecution"></a><a id="retry-and-failure-policies"></a><a id="waitfor-failure-policy"></a><a id="execute-failure-policy"></a><a id="last-failure-info"></a><a id="retry-after"></a><a id="durability"></a><a id="timeouts-and-total-duration"></a><a id="heartbeat"></a><a id="cancellation"></a><a id="selective-state-loading"></a><a id="attribute-locks"></a><a id="step-options"></a>
- [Failure and redelivery](https://docs.superdurable.io/zh-Hans/reference/go/1.37.x/flows-and-steps/failure-and-redelivery.md)<a id="heartbeats-not-acknowledged"></a><a id="same-attempt-redelivery"></a><a id="unknown-outcome"></a><a id="design-for-redelivery"></a><a id="failure-and-redelivery"></a>

<a id="version-notes"></a>

## Version notes

Changed in 0.1.17 (Server protocol 4, required by SDK 1.35):

- A Step attempt deadline is the hand-out time plus the method timeout. It is
  no longer shortened to the remaining retry budget. Queue and lock waits are
  excluded.
- An interrupted attempt that was handed out consumes a retry.
- **TotalDuration** never ends a running attempt. The server no longer
  produces the RETRY_DEADLINE failure kind. The SDK helper
  **IsRetryTotalDurationExceeded**, and its equivalent in other SDKs, can be
  true only for records written before the upgrade.
