Workflow Development and Orchestration
Orchestration building blocks
A workflow is a directed graph of activities connected by transitions, each carrying a target (a temporary population) and a targeting dimension. Targeting activities - Query, Intersection, Union, Split, Enrichment - shape that population; flow-control activities - Scheduler, Wait, Signal, AND-join - control timing; delivery and export activities consume it. Understand temporary work tables, the difference between a one-off and a recurring workflow, instance.vars versus local task variables, and how a Jump or sub-workflow changes scope.
Traps
- A Query with no filter returns the whole schema; the preview may look small because it is limited.
- Execute runs once; Enable and execute schedules. Restarting a failed workflow from the middle can reuse stale temporary data.
- Transition names matter when several transitions enter one activity.
- A Wait activity is not a human approval; use a Signal for external triggering.
- Split conditions are evaluated in order, and the complement branch catches everything unmatched.
Rule of thumb
Design workflows so each branch has one clear targeting dimension, and put a Scheduler or external signal at the top for reproducibility. Test with a small query filter before enabling the schedule.
Worked example: Nightly abandoned-cart email. Scheduler (daily 02:00) → Query on Cart where status = open and lastUpdate between SubDays(GetDate(),1) and GetDate() → Enrichment with Recipient → Deduplication on recipient id → Delivery. The Scheduler already bounds the window, so no extra Wait is needed. Keep the query incremental so the work table stays small.