Overview: Workflows
A workflow coordinates tasks to execute business logic. In Conductor, you can build workflows for process automation, event-driven processing, agentic orchestration, microservice orchestration, real-time API orchestration, and human approval flows.
A workflow defines how tasks run, in what order, and under which conditions. Conductor manages task execution, retries, state, and failure handling so you can focus on business logic instead of orchestration code.
Ways to create workflows
In Conductor, all workflows are stored and executed as JSON workflow definitions. You can create a workflow using any of the following methods:
- Code: Using Conductor SDKs, define the workflow in any programming language (Python, Java, JavaScript, C#, Go, Clojure) and register it with the Conductor server. Once registered, Conductor generates and saves the JSON workflow definition. Learn more in Write Workflows as Code.
- API: Write the workflow in JSON and register it to the Conductor server using the
/api/metadata/workflowendpoint. - Conductor UI: Using the Conductor UI, you can design workflows in two ways:
- Visual workflow builder: Define your workflow visually, which is formatted as JSON under the hood.
- Assistant: Use a prompt-based interface to create workflows by describing them in natural language. The assistant generates the workflow definition for you.
- BPMN importer: Convert existing BPMN (Business Process Model and Notation) files into Conductor workflows using the built-in importer. This provides an easy migration path from BPMN-based systems.
Static vs dynamic workflows
You can create workflows statically (ahead of time) or dynamically (at runtime). Dynamic workflows are created using the workflow-as-code approach, allowing you to write your workflow and task workers in your preferred language and execute them immediately. This is useful when you can't define workflows ahead of time because the number of tasks and flow control depend on real-time factors. Learn more in Write Workflows as Code.
AI-powered and agentic workflows
Agentic workflows use AI-driven decision-making to determine which tasks to execute and when. Task execution can adapt dynamically with minimal human intervention while still allowing oversight when required.
Conductor’s AI orchestration capabilities let you build agentic workflows that are auditable, scalable, and safe to operate in production environments. Learn more in AI Orchestration and Agentic Workflows.
Human in the loop
Human-in-the-loop workflows include tasks that require manual input, review, or approval. These workflows combine automated steps with human decision points, making them suitable for approval flows, exception handling, and review-based processes. Learn more in Human Task Orchestration.
Event-driven workflows
Event-driven workflows start or progress based on external events. Conductor supports event-driven patterns through features such as webhooks, event handlers, and message broker integrations. Learn more in Eventing.
Gateway
You can expose and trigger Conductor workflows through the Gateway, enabling workflows to act as real-time APIs or Model Context Protocol (MCP) tools. Learn more in Gateway.
Remote Services
Remote services provide a centralized way to define and manage HTTP and gRPC endpoints that can be reused across workflows. Learn more in Remote Services.
Workflow definition
A workflow definition contains configuration parameters that define the workflow behavior, including the flow of tasks, workflow inputs and outputs, schema, failure handling settings, and rate-limiting features. The most important parameter is the tasks array, which specifies the order and execution of the defined tasks and operators.
Here are the workflow configuration parameters:
| Parameter | Description | Required/ Optional |
|---|---|---|
| name | Workflow name.
| Required. |
| description | Workflow description. | Required. |
| version | The version number of the workflow. Increment the version when making breaking changes to the workflow definition. Learn more in Versioning Workflows. | Optional. |
| schemaVersion | The current Conductor Schema version. Must be 2. | Required. |
| tasks | Array of task configuration objects. This defines the flow of tasks in the workflow. | Required. |
| inputParameters | Array of workflow input keys. | Optional. |
| outputParameters | JSON template used to generate the workflow output. If unspecified, the workflow output will be the output of the last executed task. | Optional. |
| enforceSchema | Whether to enforce input schema validation. Set to true to enable validation. Learn more about using schemas in Schema Validation. | Optional. |
| inputSchema | Name and type of the input schema to be associated with the workflow. | Required if enforceSchema is set to true. |
| outputSchema | Name and type of the output schema to be associated with the workflow. | Required if enforceSchema is set to true. |
| restartable | Whether the workflow can be restarted after completion. The default value is true. Set to false if restarting a completed workflow causes side effects. | Optional. |
| workflowStatusListenerEnabled | Whether to enable status callback for workflow state changes. The default value is false. Learn more in Enabling CDC. | Optional. |
| workflowStatusListenerSink | The message broker sink where workflow state changes are sent. | Required if workflowStatusListenerEnabled is set to true. |
| ownerEmail | The email address of the workflow creator. | Required. |
| timeoutPolicy | The workflow timeout policy. Learn more about workflow timeouts in Handling Failures. | Required. |
| timeoutSeconds | The timeout duration in seconds. Learn more about workflow timeouts in Handling Failures. | Required. |
| failureWorkflow | The compensation workflow to trigger upon failure of the current workflow execution. Useful for cleanup, notifications, or post actions. Learn more about compensation workflows in Handling Failures. | Optional. |
| rateLimitConfig | A map of the workflow rate limit configuration. Learn more about workflow rate limits in Workflow rate limits. | Optional. |
| rateLimitConfig. rateLimitKey | A unique identifier to group workflow executions for rate limiting. | Optional. |
| rateLimitConfig. concurrentExecLimit | The number of workflow executions that can run concurrently for a given key. | Optional. |
| maskedFields | An array of fields to be masked in the workflow execution. Learn more about masking fields in Masking Parameters. | Optional. |
Example
Here is an example workflow definition JSON:
{
"name": "exampleWorkflow",
"description": "Example workflow definition.",
"version": 1,
"tasks": [],
"inputParameters": [
"someKey",
"anotherKey"
],
"outputParameters": {
"someOutput": "${task_reference_name.output.id}",
"anotherOutput": "${workflow.version}"
},
"schemaVersion": 2,
"restartable": true,
"workflowStatusListenerEnabled": false,
"ownerEmail": "user@example.com",
"timeoutPolicy": "ALERT_ONLY",
"timeoutSeconds": 0,
"failureWorkflow": "",
"maskedFields": []
}
Get started by choosing how you want to build workflows, using code, API, the Conductor UI, or by converting existing BPMN definitions.
📄️ Write Workflows Using Code
Use the Conductor SDKs to write workflows as code.
📄️ Build Workflows Using UI
Learn how to build workflows using Conductor UI.
📄 ️ Convert BPMN to Workflows
Easily convert BPMN files to workflows using Orkes Conductor. Import BPMN or XML files and automate process model migration in just a few clicks.