App Status
A label + color pair that workflows set to report their current phase. Displayed in the dashboard and stored in the database.
Setting Status from a Workflow
go
func OrderWorkflow(ctx turbine.Context, orderID string) (string, error) {
ctx.SetAppStatus("validating", "yellow")
// ... validation steps ...
ctx.SetAppStatus("processing", "blue")
// ... processing steps ...
ctx.SetAppStatus("fulfilled", "green")
return "done", nil
}Setting Status from a Step
Use the standalone function with context.Context:
go
result, err := turbine.Do(ctx, func(stepCtx context.Context) (string, error) {
turbine.SetAppStatus(stepCtx, "uploading", "blue")
// ...
return "done", nil
}, turbine.WithStepName("upload"))Valid Colors
| Color | Typical Use |
|---|---|
| green | Success, completed |
| red | Error, failed |
| yellow | Warning, waiting |
| blue | In progress |
| gray | Idle, inactive |
| lime | Positive, minor success |
| orange | Caution |
| purple | Processing |
| pink | Custom |
| cyan | Custom |
Using an invalid color returns an error.
Reading Status
The current app status is included in the Status struct returned by handle.GetStatus():
go
status, err := handle.GetStatus()
fmt.Println(status.AppStatus, status.AppStatusColor)Behavior During Recovery
INFO
Status updates are skipped during recovery replay to avoid unnecessary database writes. The status is restored to the last persisted value.