Workflows
A workflow runs named steps in order. Each step receives the previous step’s result. Use a workflow when you know the sequence; use an agent when a model needs to choose what to do next.
Run two steps
Keep the notes service running. Create cmd/workflow/main.go:
package main
import (
"context"
"fmt"
"log"
"go-micro.dev/v6/flow"
)
func main() {
f := flow.New("read-notes", flow.Steps(
flow.Step{Name: "list", Run: flow.Call("notes", "Notes.List")},
flow.Step{Name: "print", Run: func(ctx context.Context, state flow.State) (flow.State, error) {
fmt.Println(state.String())
return state, nil
}},
))
if err := f.Execute(context.Background(), "{}"); err != nil {
log.Fatal(err)
}
}
Run it from your project:
go run ./cmd/workflow
The first step calls the service. The second prints its JSON response. A step can call a service, dispatch work to an agent, or run your own Go function.
Retries and saved progress
Flows save progress between steps. The default checkpoint uses a file store; retain that data if you need to resume after a restart. Completed steps are skipped on resume, but an interrupted step can run again. Make operations safe to repeat before enabling retries.
For configuration and recovery methods, see the flow API.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.