Files
antigravity-skills-reference/skills/dbos-golang/references/workflow-introspection.md
Max dml 7e5abd504f feat: add DBOS skills for TypeScript, Python, and Go (#94)
Add three DBOS SDK skills with reference documentation for building
reliable, fault-tolerant applications with durable workflows.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 23:26:51 +01:00

1.8 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
List and Inspect Workflows MEDIUM Enables monitoring and debugging of workflow executions workflow, list, inspect, status, monitoring

List and Inspect Workflows

Use dbos.ListWorkflows to query workflow executions by status, name, time range, and other criteria.

Incorrect (no monitoring of workflow state):

// Start workflow with no way to check on it later
dbos.RunWorkflow(ctx, processTask, "data")
// If something goes wrong, no way to find or debug it

Correct (listing and inspecting workflows):

// List workflows by status
erroredWorkflows, err := dbos.ListWorkflows(ctx,
	dbos.WithStatus([]dbos.WorkflowStatusType{dbos.WorkflowStatusError}),
)

for _, wf := range erroredWorkflows {
	fmt.Printf("Workflow %s: %s - %v\n", wf.ID, wf.Name, wf.Error)
}

List workflows with multiple filters:

workflows, err := dbos.ListWorkflows(ctx,
	dbos.WithName("processOrder"),
	dbos.WithStatus([]dbos.WorkflowStatusType{dbos.WorkflowStatusSuccess}),
	dbos.WithLimit(100),
	dbos.WithSortDesc(),
	dbos.WithLoadOutput(true),
)

List workflow steps:

steps, err := dbos.GetWorkflowSteps(ctx, workflowID)
for _, step := range steps {
	fmt.Printf("Step %d: %s\n", step.StepID, step.StepName)
	if step.Error != nil {
		fmt.Printf("  Error: %v\n", step.Error)
	}
	if step.ChildWorkflowID != "" {
		fmt.Printf("  Child: %s\n", step.ChildWorkflowID)
	}
}

Workflow status values: WorkflowStatusPending, WorkflowStatusEnqueued, WorkflowStatusSuccess, WorkflowStatusError, WorkflowStatusCancelled, WorkflowStatusMaxRecoveryAttemptsExceeded

To optimize performance, avoid loading inputs/outputs when you don't need them (they are not loaded by default).

Reference: Workflow Management