5. Task types
Groups
Every task has a type. Types fall into three groups by who performs them:
- Interpreter types control the flow. The engine handles them without calling anything.
- Activity types call something: an API, a model, a tool, a topic. The engine runs them itself.
- The worker type hands the step to your own program.
Interpreter types
Type is the value of the task's type field. Fields lists the properties the task must carry in addition to type and taskReferenceName.
| Type | Behaviour | Fields |
|---|---|---|
SWITCH | Picks one branch from a value | on, cases, defaultCase |
FORK_JOIN | Runs several branches at once and waits for all | forkTasks |
FORK_JOIN_DYNAMIC | Same, with the branch list taken from a previous output | dynamicForkTasksParam |
DO_WHILE | Repeats its tasks while a condition holds, up to a bound | loopCondition, loopOver, maxIterations |
WAIT | Pauses for a duration or until a time | duration or until |
HUMAN | Pauses until a decision is posted. Page 10. | |
SUB_WORKFLOW | Runs another definition and waits for it | subWorkflowParam.name, .version |
SET_VARIABLE | Updates run variables | inputParameters = the new values |
TERMINATE | Ends the run with a given status | terminationStatus, workflowOutput |
NOOP | Does nothing |
Activity types
Input lists the keys of inputParameters; Output lists the keys of the task's output that later tasks can reference.
| Type | Behaviour | Input | Output |
|---|---|---|---|
HTTP | Calls a URL through the gateway | uri, method, headers, body | status, headers, body |
JSON_TRANSFORM | Extracts and reshapes JSON with JSONPath | source, expressions | The constructed object |
LLM_CHAT | Sends messages to a model | model, messages or instructions + context, tools, maxTokens, temperature, responseSchema | text, toolCalls, usage |
LIST_TOOLS | Lists the tools the workflow may use | tools | |
CALL_TOOL | Calls one tool | tool, arguments | The tool's result |
CALL_AGENT | Sends a goal to an agent hosted outside the engine and waits for its result. Page 14. | agent, prompt, context, executionId (resume), timeoutSeconds | executionId, state, text, output |
PUBLISH_EVENT | Publishes a message to a topic | topic, payload | messageId |
START_WORKFLOW | Starts another run without waiting | name, version, input, correlationId | workflowId |
PULL_MESSAGES | Reads messages sent to this run | maxCount | messages |
HTTP is also how the engine reaches Logic Apps connectors (for SaaS systems) and Azure AI Document Intelligence (for documents). No special task type is needed.
The worker type
| Type | Behaviour |
|---|---|
WORKER | Puts the step on the queue for its task type and waits for a worker to post the result. Page 9. |
The field name gives the task type name, for example parse_pdf. The queue, the settings, and the worker all use that name.
Excluded types
| Not offered | Use instead | Reason |
|---|---|---|
| Inline scripts in the definition | A worker, the action service, or a Logic Apps connector | Keeps logic in tested, versioned code. No script engine in the engine. |
| Direct database tasks | A tool on the action service | All data changes go through one audited path. |
| Remote agent protocol tasks | Deferred | Added when the first external agent must be called. |