Apply the foundational taxonomy of workflow control patterns to evaluate, design, and debug complex coordination systems. Based on the seminal "Workflow Patterns" research establishing pattern-based expressiveness evaluation.
Installs into .claude/skills of the current project.
Are you the author of Van Der Aalst 2003 Workflow Patterns?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/curiositech-van-der-aalst-2003-workflow-patterns-port-daddy)
---
license: Apache-2.0
name: van-der-aalst-2003-workflow-patterns
description: Apply the foundational taxonomy of workflow control patterns to evaluate, design, and debug complex coordination systems. Based on the seminal "Workflow Patterns" research establishing pattern-based expressiveness evaluation.
category: Research & Academic
tags:
- workflow
- patterns
- process-modeling
- orchestration
- bpm
---
# SKILL: Workflow Patterns - Systematic Coordination Design
## When to Use This Skill
Activate when encountering coordination complexity beyond simple sequential task execution: multi-agent orchestration, parallel processing with synchronization, conditional routing, iterative refinement, or system evaluation for workflow capability.
## Decision Points
### Pattern Selection Tree
See `diagrams/01_flowchart_control_flow_pattern_taxonomy_.md` for a visual rendering of this decision tree. The full pattern semantics are documented in `references/control-flow-pattern-taxonomy.md`.
**IF** designing coordination structure:
1. **Sequential dependency only?**
- Yes → Pattern 1: Sequence
- No → Continue to branching analysis
2. **Multiple parallel branches needed?**
- All branches required → Pattern 2: AND-split/join
- Conditional subset → Pattern 6: OR-split (need runtime branch determination)
- Exactly one branch → Pattern 4: XOR-split/join
3. **Synchronization requirements?**
- Wait for all branches → AND-join or OR-join
- First completion wins → Pattern 9: Discriminator
- N out of M completions → Pattern 8: N-out-of-M-join
4. **Decision timing?**
- Process determines → XOR-split (internal condition)
- External event determines → Pattern 16: Deferred choice
- Runtime data determines → OR-split
5. **Iteration needed?**
- Fixed structure loop → Use sequence + XOR back-edge
- Dynamic/arbitrary cycles → Pattern 10: Arbitrary cycles
- Multiple concurrent instances → Pattern 12: Multiple instances
### System Evaluation Decision Tree
**IF** evaluating orchestration systems (see `references/pattern-based-expressiveness-evaluation.md` for the evaluation framework; `diagrams/03_quadrantChart_system_expressiveness_vs._patt.md` for an expressiveness-vs-cost comparison chart):
1. **Map required patterns** → List all coordination structures your domain needs
2. **Test basic patterns** → Sequence, AND-split/join, XOR-split/join (if these fail, stop)
3. **Test advanced branching** → OR-split, discriminator, N-out-of-M (most systems fail here)
4. **Test structural patterns** → Cycles, multiple instances, implicit termination
5. **Test interactions** → Combine patterns your workflow uses together
6. **Measure complexity** → >10x workaround complexity = unsupported
**Decision criteria:**
- Natural implementation = supported
- Workaround required = capability gap (see `references/implementation-gaps-as-design-information.md`)
- External code needed = wrong architecture
- Race conditions appear = semantic mismatch
## Failure Modes
See `diagrams/02_sequenceDiagram_pattern_interaction_failure_sc.md` for sequence diagrams of these failure scenarios.
### 1. OR-Split Confusion (Symptom: Wrong branches activate)
**Detection**: OR-split activates all branches instead of runtime-determined subset, or requires manual branch selection
**Root cause**: System conflates OR-split with AND-split or lacks runtime evaluation capability
**Fix**: Implement true OR-split with condition evaluation at runtime, or redesign using multiple XOR-splits
### 2. Discriminator Race Conditions (Symptom: Multiple completions processed)
**Detection**: "First wins" logic processes multiple completions, late arrivals not ignored, state corruption on near-simultaneous finish
**Root cause**: Missing atomic completion detection or lack of proper discriminator semantics
**Fix**: Implement atomic first-completion detection with explicit late-arrival ignoring, use proper discriminator pattern not AND-join
### 3. Deferred Choice Polling (Symptom: Active waiting for external events)
**Detection**: System polls for external conditions instead of event-driven activation, high CPU usage during wait states
**Root cause**: No event-driven external choice mechanism, treating deferred choice as sequence + condition check
**Fix**: Implement event-based deferred choice with proper external stimulus handling, avoid polling-based workarounds
### 4. Cycle Termination Deadlocks (Symptom: Infinite loops or stuck processes)
**Detection**: Workflows with cycles never terminate naturally, require manual intervention, or deadlock on exit conditions
**Root cause**: No implicit termination support or cycle exit condition evaluation
**Fix**: Implement proper cycle semantics with exit conditions, use state-based termination detection
### 5. Pattern Interaction Failures (Symptom: Unexpected behavior when patterns combine)
**Detection**: Individual patterns work but combinations crash, undefined behavior at interaction boundaries
**Root cause**: Ad-hoc pattern implementations without unified execution model
**Fix**: Use systems with formal execution semantics (Petri nets, process algebras) or explicitly test all pattern combinations. See `references/pattern-combinations-and-emergent-complexity.md` for analysis of non-composability.
## Worked Examples
### Example 1: Multi-Agent Code Review Orchestration
**Scenario**: Code review requiring parallel analysis (security, performance, style) with first-completion wins logic and iterative refinement.
**Pattern identification**:
- AND-split: Parallel agent execution
- Discriminator: First satisfactory review wins
- Arbitrary cycles: Revision loops
- Cancellation: Abort remaining agents when one succeeds
**Decision walkthrough**:
1. **Need parallel branches?** Yes → multiple review agents
2. **All branches required?** No → discriminator pattern (first success wins)
3. **Iteration needed?** Yes → arbitrary cycles for revisions
4. **External events?** Yes → human reviewer can trigger revision
**Expert insight**: DAG-based orchestrators fail here because they cannot express discriminator + cycles combination. Need state machine or Petri net model.
**Novice mistake**: Using AND-join instead of discriminator, causing system to wait for all agents even after first success.
### Example 2: Dynamic Pipeline with Conditional Stages
**Scenario**: Data processing pipeline where downstream stages depend on upstream results and data characteristics determine stage activation.
**Pattern identification**:
- OR-split: Runtime determination of active stages
- OR-join: Synchronize variable number of active branches
- Deferred choice: External quality check determines retry vs. proceed
**Decision walkthrough**:
1. **Branching logic?** Runtime data determines → OR-split
2. **Synchronization?** Must wait for activated branches only → OR-join
3. **Decision timing?** External quality service → deferred choice
**Expert insight**: OR-split/OR-join combination requires the join to know which branches were activated by the split. Many systems lack this state tracking.
**Novice mistake**: Using XOR-split with manual branch tracking instead of true OR-split, losing semantic clarity and introducing bugs.
### Example 3: Competitive Agent Auction with Fallback
**Scenario**: Multiple agents bid on task, first acceptable bid wins, with timeout fallback to direct assignment.
**Pattern identification**:
- AND-split: Parallel agent activation
- Discriminator: First acceptable bid
- Deferred choice: Timeout vs. bid acceptance
- Cancellation region: Abort auction on timeout
**Decision walkthrough**:
1. **Parallel execution?** Yes → AND-split for simultaneous bidding
2. **Completion semantics?** First acceptable → discriminator
3. **External event handling?** Timeout can interrupt → deferred choice
4. **Cleanup needed?** Cancel pending bids → cancellation region
**Expert insight**: This requires discriminator inside deferred choice inside cancellation region. Pattern interaction complexity eliminates most orchestrators.
**Novice mistake**: Manual timeout handling instead of proper deferred choice, creating race conditions between bid acceptance and timeout.
## Quality Gates
- [ ] All required coordination patterns identified and mapped to specific taxonomy entries
- [ ] System evaluation tests actual pattern implementation, not just feature claims
- [ ] Pattern combinations tested for workflows using multiple patterns together
- [ ] Workaround complexity measured (>10x baseline = unsupported)
- [ ] Decision points explicitly modeled (who/what decides routing at each choice point)
- [ ] Synchronization semantics verified (what triggers join completion)
- [ ] Cancellation boundaries defined with cleanup semantics
- [ ] External event handling mechanisms identified for deferred choice patterns
- [ ] Cycle termination conditions specified for iterative patterns
- [ ] Implementation gaps documented as architecture information (not just limitations)
## NOT-FOR Boundaries
**This skill is NOT for**:
- Data flow design → Use data pipeline patterns instead
- User interface workflows → Use UI state management patterns
- Sequential scripting → Use basic programming constructs
- Database transaction design → Use ACID transaction patterns
- Error handling → Use exception handling patterns
- Performance optimization → Use performance analysis skills
- Domain modeling → Use domain-driven design patterns
**Delegate to other skills**:
- Task logic design → Use domain-specific problem solving skills
- Agent capability design → Use agent architecture skills
- Data transformation → Use data processing pipeline skills
- System monitoring → Use observability and monitoring skills
- Security coordination → Use security architecture patterns
**Boundary indicator**: If you're designing WHAT agents do (task logic), use domain skills. If you're designing HOW agents coordinate (control flow), use this skill. See `references/coordination-as-first-class-problem.md` for a full treatment of why coordination deserves first-class engineering attention.
## Bundled Assets
### Diagrams
Visual aids for pattern selection, failure diagnosis, and system expressiveness comparison.
→ [`diagrams/INDEX.md`](diagrams/INDEX.md)
### References
Deep-dives on the pattern taxonomy, evaluation methodology, imperative vs. declarative tension, and systems evaluation beyond feature checklists.
→ [`references/INDEX.md`](references/INDEX.md)