6.5 KiB
Work Summary: Workflow Database Migration
Date: 2026-01-27 Session Focus: Phase 1.1 - Database migration for workflow orchestration Status: Complete ✅
Objective
Implement the database schema changes required for workflow orchestration support in Attune, including 3 new tables and modifications to the existing action table.
Accomplishments
1. Migration File Created ✅
File: migrations/20250127000002_workflow_orchestration.sql (268 lines)
Created comprehensive migration including:
- 3 new tables with full schema definitions
- 2 new columns on existing action table
- 12 indexes for query optimization
- 3 triggers for timestamp management
- 3 helper views for querying
- Extensive comments and documentation
2. Database Schema Additions ✅
New Tables
1. attune.workflow_definition
- Stores parsed workflow YAML as JSON
- Links to pack table
- Contains parameter and output schemas
- Tracks version and metadata
- Columns: 14 (id, ref, pack, pack_ref, label, description, version, param_schema, out_schema, definition, tags, enabled, created, updated)
2. attune.workflow_execution
- Tracks runtime state of workflow executions
- Stores variable context (JSONB)
- Maintains task completion tracking (text arrays)
- Links to parent execution
- Supports pause/resume functionality
- Columns: 13 (id, execution, workflow_def, current_tasks, completed_tasks, failed_tasks, skipped_tasks, variables, task_graph, status, error_message, paused, pause_reason, created, updated)
3. attune.workflow_task_execution
- Individual task execution records
- Supports iteration (task_index, task_batch)
- Tracks retry attempts and timeouts
- Stores results and errors
- Columns: 16 (id, workflow_execution, execution, task_name, task_index, task_batch, status, started_at, completed_at, duration_ms, result, error, retry_count, max_retries, next_retry_at, timeout_seconds, timed_out, created, updated)
Modified Tables
attune.action - Added 2 columns:
is_workflow BOOLEAN- Flags workflow actionsworkflow_def BIGINT- Foreign key to workflow_definition
3. Indexes Created ✅
Total: 12 indexes for performance optimization
- 4 indexes on workflow_definition (pack, enabled, ref, tags)
- 4 indexes on workflow_execution (execution, workflow_def, status, paused)
- 6 indexes on workflow_task_execution (workflow, execution, status, task_name, retry, timeout)
- 2 indexes on action (is_workflow, workflow_def)
4. Helper Views Created ✅
1. workflow_execution_summary
- Aggregates workflow execution state with task counts
- Joins workflow_definition for metadata
- Useful for monitoring dashboards
2. workflow_task_detail
- Detailed view of individual task executions
- Includes workflow context
- Useful for debugging and tracing
3. workflow_action_link
- Links workflow definitions to action records
- Shows synthetic action created for each workflow
- Useful for pack management
5. Migration Applied Successfully ✅
$ sqlx migrate run
Applied 20250127000002/migrate workflow orchestration (20.900297ms)
6. Schema Verified ✅
Verified all tables, columns, indexes, triggers, and views created correctly:
- ✅ 3 tables created in attune schema
- ✅ 14 columns in workflow_definition
- ✅ 13 columns in workflow_execution
- ✅ 16 columns in workflow_task_execution
- ✅ 2 columns added to action table
- ✅ 12 indexes created
- ✅ 3 triggers created
- ✅ 3 views created
Technical Details
Foreign Key Relationships
workflow_definition
↑ (FK: pack)
└─ pack
workflow_execution
↑ (FK: execution)
└─ execution
↑ (FK: workflow_def)
└─ workflow_definition
workflow_task_execution
↑ (FK: workflow_execution)
└─ workflow_execution
↑ (FK: execution)
└─ execution
action
↑ (FK: workflow_def) [optional]
└─ workflow_definition
Cascade Behavior
- ON DELETE CASCADE: Deleting a pack removes all its workflow definitions
- ON DELETE CASCADE: Deleting a workflow_definition removes its executions and action link
- ON DELETE CASCADE: Deleting a workflow_execution removes all task executions
JSONB Columns
Three tables use JSONB for flexible data storage:
workflow_definition.definition- Full workflow spec (tasks, vars, transitions)workflow_execution.variables- Workflow-scoped variable contextworkflow_execution.task_graph- Adjacency list graph representation
Array Columns
workflow_execution uses text arrays for tracking:
current_tasks- Currently executing task namescompleted_tasks- Successfully completed task namesfailed_tasks- Failed task namesskipped_tasks- Skipped due to conditions
Migration Statistics
- Lines of SQL: 268
- Tables Added: 3
- Columns Added: 43 (14 + 13 + 16)
- Columns Modified: 2 (action table)
- Indexes Created: 12
- Triggers Created: 3
- Views Created: 3
- Comments Added: 15+
- Migration Time: ~21ms
Next Steps
Phase 1 continues with:
-
Add workflow models to
common/src/models.rs- WorkflowDefinition struct
- WorkflowExecution struct
- WorkflowTaskExecution struct
- Derive FromRow for SQLx
-
Create repositories in
common/src/repositories/- workflow_definition.rs (CRUD operations)
- workflow_execution.rs (state management)
- workflow_task_execution.rs (task tracking)
-
Implement YAML parser in
executor/src/workflow/parser.rs- Parse workflow YAML to struct
- Validate workflow structure
- Support all task types
-
Integrate template engine (Tera)
- Add dependency to executor Cargo.toml
- Create template context
- Implement variable scoping
-
Create variable context manager in
executor/src/workflow/context.rs- 6-scope variable system
- Template rendering
- Variable publishing
References
- Migration File:
migrations/20250127000002_workflow_orchestration.sql - Design Doc:
docs/workflow-orchestration.md - Implementation Plan:
docs/workflow-implementation-plan.md - Quick Start:
docs/workflow-quickstart.md - TODO Tasks:
work-summary/TODO.mdPhase 8.1
Notes
- Migration completed without issues
- All schema changes aligned with design specification
- Database ready for model and repository implementation
- No breaking changes to existing tables (only additions)
- Performance indexes included from the start
Status: ✅ Phase 1.1 Complete - Database migration successful Next: Phase 1.2 - Add workflow models to common crate