Choose the right primitive

NeedUse
One readable unit of work<step> + <script>
Several independent single steps at once<parallel>
Several independent multi-step lanes<fork> + <branch>
Strict boolean routing<choose>
Exact string routing<switch>
Human decision<approval>
Temporarily reusable valueservices.cache
Small permanent workflow memoryservices.state
Application records and queriesservices.db()
Files or larger durable objectsservices.storage
Familiar/streaming HTTPfetch()
Supervised bounded HTTPservices.http.request()
Notify every subscriber of a factservices.events.emit()
Wait for one child workflow's answerservices.workflows.call()
Start a child and continueservices.workflows.start()
Reusable data transformation/API wrapperLocal JS/TS module
Reusable durable project stepReusable WOML step
Project-specific approval transportReusable notification provider