# Tutorial 3: Decisions Branch workflow logic based on conditions — state values, payload answers, or complex expressions. ## Concepts Introduced - `.WhenExpression()` — branch on any boolean expression - `.WhenStateFlag()` — shorthand for checking a boolean state value - `.WhenPayloadEquals()` — shorthand for checking a task completion payload value - Nested decisions — decisions inside decisions for complex routing ## Decision Types | Method | Use When | |--------|----------| | `WhenExpression` | Complex conditions (comparisons, boolean logic, function calls) | | `WhenStateFlag` | Checking a boolean state key against true/false | | `WhenPayloadEquals` | Checking a task completion answer (inside OnComplete) | ## Variants - [C# Fluent DSL](csharp/) - [Canonical JSON](json/) ## Next [Tutorial 4: Human Tasks](../04-human-tasks/) — approve/reject patterns with OnComplete flows.