Commit af64389
feat: Complete workflow and dependency management system v1.9.0
Major Features Added:
- π Complete workflow orchestration with job dependency management
- ποΈ New hammerwork_workflows table and extended job schema
- π Full workflow API: enqueue, status, dependency resolution, cancellation
- β‘ Advanced dependency features with failure propagation and cycle detection
- π Completed MySQL encryption deserialization implementation
Database Enhancements:
- PostgreSQL: Native UUID arrays, JSONB dependencies, optimized indexes
- MySQL: JSON columns, proper constraints, feature parity with PostgreSQL
- Workflow validation with topological sorting for cycle detection
- Transactional workflow operations ensuring data consistency
API Extensions:
- JobGroup workflow builder with fluent API (.then(), .add_parallel_jobs())
- enqueue_workflow() - Atomic workflow insertion with validation
- get_workflow_status() - Retrieve workflow state and job progress
- resolve_job_dependencies() - Automatic dependency satisfaction
- get_ready_jobs() - Efficient ready-to-execute job queries
- fail_job_dependencies() - Intelligent failure cascade with policies
- cancel_workflow() - Clean workflow cancellation
Implementation Completeness:
- Replaced all todo\!() placeholders with full implementations
- Added comprehensive error handling and UUID conversion
- Helper methods for transactional job insertion
- Complete MySQL encryption deserialization matching PostgreSQL
Failure Policies:
- FailFast: Stop workflow on any job failure
- ContinueOnFailure: Continue independent jobs after failures
- Manual: Require intervention for failure handling
Testing:
- All 264 tests pass including 11 workflow-specific tests
- Full feature parity between PostgreSQL and MySQL
- Comprehensive dependency resolution and validation coverage
π€ Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>1 parent ec682c8 commit af64389
4 files changed
+978
-48
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
8 | 59 | | |
9 | 60 | | |
10 | 61 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
0 commit comments