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>
This commit is contained in:
64
skills/dbos-golang/references/workflow-introspection.md
Normal file
64
skills/dbos-golang/references/workflow-introspection.md
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: List and Inspect Workflows
|
||||
impact: MEDIUM
|
||||
impactDescription: Enables monitoring and debugging of workflow executions
|
||||
tags: 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):**
|
||||
|
||||
```go
|
||||
// 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):**
|
||||
|
||||
```go
|
||||
// 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:
|
||||
|
||||
```go
|
||||
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:
|
||||
|
||||
```go
|
||||
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](https://docs.dbos.dev/golang/tutorials/workflow-management#listing-workflows)
|
||||
Reference in New Issue
Block a user