Start Workflow API
API Parameters
When starting a Workflow execution with a registered definition, {{ api_prefix }}/workflow
accepts following parameters in the POST
payload:
Field | Description | Notes |
---|---|---|
name | Name of the Workflow. MUST be registered with Conductor before starting workflow | |
version | Workflow version | defaults to latest available version |
input | JSON object with key value params, that can be used by downstream tasks | See Wiring Inputs and Outputs for details |
correlationId | Unique Id that correlates multiple Workflow executions | optional |
taskToDomain | See Task Domains for more information. | optional |
workflowDef | An adhoc Workflow Definition to run, without registering. See Dynamic Workflows. | optional |
externalInputPayloadStoragePath | This is taken care of by Java client. See External Payload Storage for more info. | optional |
priority | Priority level for the tasks within this workflow execution. Possible values are between 0 - 99. | optional |
Output
On success, this API returns the ID of the workflow.
Basic Example
POST {{ server_host }}{{ api_prefix }}/workflow
with payload body:
{
"name": "myWorkflow", // Name of the workflow
"version": 1, // Version
"correlationId": "corr1", // Correlation Id
"priority": 1, // Priority
"input": { // Input Value Map
"param1": "value1",
"param2": "value2"
},
"taskToDomain": {
// Task to domain map
}
}
Dynamic Workflows
If the need arises to run a one-time workflow, and it doesn't make sense to register Task and Workflow definitions in Conductor Server, as it could change dynamically for each execution, dynamic workflow executions can be used.
This enables you to provide a workflow definition embedded with the required task definitions to the Start Workflow Request in the workflowDef
parameter, avoiding the need to register the blueprints before execution.
Example:
Send a POST
request to {{ api_prefix }}/workflow
with payload like:
{
"name": "my_adhoc_unregistered_workflow",
"workflowDef": {
"ownerApp": "my_owner_app",
"ownerEmail": "my_owner_email@test.com",
"createdBy": "my_username",
"name": "my_adhoc_unregistered_workflow",
"description": "Test Workflow setup",
"version": 1,
"tasks": [
{
"name": "fetch_data",
"type": "HTTP",
"taskReferenceName": "fetch_data",
"inputParameters": {
"http_request": {
"connectionTimeOut": "3600",
"readTimeOut": "3600",
"uri": "${workflow.input.uri}",
"method": "GET",
"accept": "application/json",
"content-Type": "application/json",
"headers": {
}
}
},
"taskDefinition": {
"name": "fetch_data",
"retryCount": 0,
"timeoutSeconds": 3600,
"timeoutPolicy": "TIME_OUT_WF",
"retryLogic": "FIXED",
"retryDelaySeconds": 0,
"responseTimeoutSeconds": 3000
}
}
],
"outputParameters": {
}
},
"input": {
"uri": "http://www.google.com"
}
}
Note
If the taskDefinition
is defined with Metadata API, it doesn't have to be added in above dynamic workflow definition.