---
title: "Flow definition"
description: "A Flow registers its Steps, its persistence schema, and its RPC handlers."
canonical_url: "https://docs.superdurable.io/zh-Hans/reference/java/1.37.x/flows-and-steps/flow-definition/"
source: "docs/reference-java_versioned_docs/version-1.37.x/flows-and-steps/flow-definition.mdx"
locale: "zh-Hans"
---

# Flow definition

A Flow registers its Steps, its persistence schema, and its RPC handlers.

- **getSteps** registers one start Step and every other Step type the Flow
  may reach through Step decision movements. The start Step input type is also
  the Flow start input type. An empty Step list, or a list with no start Step,
  is valid when the Flow is driven entirely by RPCs that later move into Steps.
- The persistence schema lists every Attribute and Channel used from Steps or
  RPCs. Dex rejects reads and writes to names that are not declared.
- Annotate RPC methods with **@RPC**. The durable RPC name is the Java
  method name unless the annotation supplies **name**.

Most SDKs derive the **FlowType** and the **StepType** from the native type
name unless you override it.
