Files
wehub-resource-sync a9cd7750f4
CI / detect-changes (push) Waiting to run
CI / build (push) Waiting to run
UI v2 CI / E2E (Mocked) (push) Blocked by required conditions
UI v2 Integration CI / E2E (Integration) (push) Waiting to run
CI / unit-test (push) Blocked by required conditions
CI / test-harness (push) Waiting to run
CI / generate-e2e-matrix (push) Waiting to run
CI / e2e (push) Blocked by required conditions
CI / build-ui (push) Waiting to run
Publish docs via GitHub Pages / Deploy docs (push) Waiting to run
Release Drafter / update_release_draft (push) Waiting to run
UI v2 CI / Lint, Format & Test (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:37:56 +08:00

596 lines
16 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://conductoross.org/schemas/WorkflowDef.json",
"title": "WorkflowDef",
"description": "Workflow definition schema",
"type": "object",
"required": ["name", "tasks"],
"properties": {
"name": {
"type": "string",
"description": "Unique name identifying the workflow",
"minLength": 1
},
"description": {
"type": "string",
"description": "Description of the workflow"
},
"version": {
"type": "integer",
"description": "Version of the workflow definition",
"default": 1
},
"tasks": {
"type": "array",
"description": "List of tasks that make up the workflow",
"minItems": 1,
"items": {
"$ref": "#/definitions/WorkflowTask"
}
},
"inputParameters": {
"type": "array",
"description": "List of input parameter names",
"items": {
"type": "string"
},
"default": []
},
"outputParameters": {
"type": "object",
"description": "Output parameters mapping",
"additionalProperties": true,
"default": {}
},
"failureWorkflow": {
"type": "string",
"description": "Name of workflow to execute on failure"
},
"schemaVersion": {
"type": "integer",
"description": "Schema version",
"minimum": 2,
"maximum": 2,
"default": 2
},
"restartable": {
"type": "boolean",
"description": "Whether the workflow can be restarted",
"default": true
},
"workflowStatusListenerEnabled": {
"type": "boolean",
"description": "Whether workflow status listener is enabled",
"default": false
},
"ownerEmail": {
"type": "string",
"description": "Email of the workflow owner",
"format": "email"
},
"timeoutPolicy": {
"type": "string",
"description": "Timeout policy for the workflow",
"enum": ["TIME_OUT_WF", "ALERT_ONLY"],
"default": "ALERT_ONLY"
},
"timeoutSeconds": {
"type": "integer",
"description": "Timeout in seconds after which workflow is deemed timed out",
"minimum": 0
},
"variables": {
"type": "object",
"description": "Global workflow variables",
"additionalProperties": true,
"default": {}
},
"inputTemplate": {
"type": "object",
"description": "Template for input parameters",
"additionalProperties": true,
"default": {}
},
"workflowStatusListenerSink": {
"type": "string",
"description": "Sink for workflow status events"
},
"rateLimitConfig": {
"$ref": "#/definitions/RateLimitConfig"
},
"inputSchema": {
"$ref": "#/definitions/SchemaDef"
},
"outputSchema": {
"$ref": "#/definitions/SchemaDef"
},
"enforceSchema": {
"type": "boolean",
"description": "Whether to enforce schema validation",
"default": true
},
"metadata": {
"type": "object",
"description": "Additional metadata",
"additionalProperties": true,
"default": {}
},
"cacheConfig": {
"$ref": "#/definitions/CacheConfig"
},
"maskedFields": {
"type": "array",
"description": "List of fields to mask in logs",
"items": {
"type": "string"
},
"default": []
},
"ownerApp": {
"type": "string",
"description": "Owner application"
},
"createTime": {
"type": "integer",
"description": "Creation timestamp in milliseconds",
"format": "int64"
},
"updateTime": {
"type": "integer",
"description": "Last update timestamp in milliseconds",
"format": "int64"
},
"createdBy": {
"type": "string",
"description": "User who created this workflow definition"
},
"updatedBy": {
"type": "string",
"description": "User who last updated this workflow definition"
}
},
"definitions": {
"WorkflowTask": {
"type": "object",
"required": ["name", "taskReferenceName"],
"properties": {
"name": {
"type": "string",
"description": "Task name",
"minLength": 1
},
"taskReferenceName": {
"type": "string",
"description": "Unique reference name for this task within the workflow",
"minLength": 1
},
"description": {
"type": "string",
"description": "Task description"
},
"inputParameters": {
"type": "object",
"description": "Input parameters for the task",
"additionalProperties": true,
"default": {}
},
"type": {
"type": "string",
"description": "Task type",
"default": "SIMPLE"
},
"dynamicTaskNameParam": {
"type": "string",
"description": "Parameter name for dynamic task name"
},
"caseValueParam": {
"type": "string",
"description": "Case value parameter (deprecated)",
"deprecated": true
},
"caseExpression": {
"type": "string",
"description": "Case expression (deprecated)",
"deprecated": true
},
"scriptExpression": {
"type": "string",
"description": "Script expression for script tasks"
},
"decisionCases": {
"type": "object",
"description": "Decision cases for SWITCH/DECISION tasks",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/definitions/WorkflowTask"
}
},
"default": {}
},
"dynamicForkTasksParam": {
"type": "string",
"description": "Parameter name for dynamic fork tasks"
},
"dynamicForkTasksInputParamName": {
"type": "string",
"description": "Input parameter name for dynamic fork tasks"
},
"defaultCase": {
"type": "array",
"description": "Default case tasks for SWITCH/DECISION",
"items": {
"$ref": "#/definitions/WorkflowTask"
},
"default": []
},
"forkTasks": {
"type": "array",
"description": "Fork tasks for FORK_JOIN",
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/WorkflowTask"
}
},
"default": []
},
"startDelay": {
"type": "integer",
"description": "Start delay in seconds",
"minimum": 0,
"default": 0
},
"subWorkflowParam": {
"$ref": "#/definitions/SubWorkflowParams"
},
"joinOn": {
"type": "array",
"description": "List of task reference names to join on",
"items": {
"type": "string"
},
"default": []
},
"sink": {
"type": "string",
"description": "Sink for EVENT tasks"
},
"optional": {
"type": "boolean",
"description": "Whether the task is optional",
"default": false
},
"taskDefinition": {
"$ref": "#/definitions/TaskDef"
},
"rateLimited": {
"type": "boolean",
"description": "Whether the task is rate limited"
},
"defaultExclusiveJoinTask": {
"type": "array",
"description": "Default tasks for exclusive join",
"items": {
"type": "string"
},
"default": []
},
"asyncComplete": {
"type": "boolean",
"description": "Whether to wait for async completion",
"default": false
},
"loopCondition": {
"type": "string",
"description": "Loop condition for DO_WHILE tasks"
},
"loopOver": {
"type": "array",
"description": "Tasks to loop over in DO_WHILE",
"items": {
"$ref": "#/definitions/WorkflowTask"
},
"default": []
},
"retryCount": {
"type": "integer",
"description": "Number of retries for this task",
"minimum": 0
},
"evaluatorType": {
"type": "string",
"description": "Evaluator type for expressions"
},
"expression": {
"type": "string",
"description": "Expression to evaluate"
},
"onStateChange": {
"type": "object",
"description": "Events to emit on state change",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/definitions/StateChangeEvent"
}
},
"default": {}
},
"joinStatus": {
"type": "string",
"description": "Join status criteria"
},
"cacheConfig": {
"$ref": "#/definitions/CacheConfig"
},
"permissive": {
"type": "boolean",
"description": "Whether the task is permissive",
"default": false
}
}
},
"TaskDef": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Unique task name",
"minLength": 1
},
"description": {
"type": "string",
"description": "Task description"
},
"retryCount": {
"type": "integer",
"description": "Number of retries",
"minimum": 0,
"default": 3
},
"timeoutSeconds": {
"type": "integer",
"description": "Task timeout in seconds",
"minimum": 0
},
"inputKeys": {
"type": "array",
"description": "Expected input keys",
"items": {
"type": "string"
},
"default": []
},
"outputKeys": {
"type": "array",
"description": "Expected output keys",
"items": {
"type": "string"
},
"default": []
},
"timeoutPolicy": {
"type": "string",
"description": "Timeout policy",
"enum": ["RETRY", "TIME_OUT_WF", "ALERT_ONLY"],
"default": "TIME_OUT_WF"
},
"retryLogic": {
"type": "string",
"description": "Retry logic",
"enum": ["FIXED", "EXPONENTIAL_BACKOFF", "LINEAR_BACKOFF"],
"default": "FIXED"
},
"retryDelaySeconds": {
"type": "integer",
"description": "Retry delay in seconds",
"default": 60
},
"responseTimeoutSeconds": {
"type": "integer",
"description": "Response timeout in seconds",
"minimum": 1,
"default": 3600
},
"concurrentExecLimit": {
"type": "integer",
"description": "Concurrent execution limit"
},
"inputTemplate": {
"type": "object",
"description": "Input template",
"additionalProperties": true,
"default": {}
},
"rateLimitPerFrequency": {
"type": "integer",
"description": "Rate limit per frequency"
},
"rateLimitFrequencyInSeconds": {
"type": "integer",
"description": "Rate limit frequency in seconds"
},
"isolationGroupId": {
"type": "string",
"description": "Isolation group ID"
},
"executionNameSpace": {
"type": "string",
"description": "Execution namespace"
},
"ownerEmail": {
"type": "string",
"description": "Owner email",
"format": "email"
},
"pollTimeoutSeconds": {
"type": "integer",
"description": "Poll timeout in seconds",
"minimum": 0
},
"backoffScaleFactor": {
"type": "integer",
"description": "Backoff scale factor for LINEAR_BACKOFF",
"minimum": 1,
"default": 1
},
"baseType": {
"type": "string",
"description": "Base task type"
},
"totalTimeoutSeconds": {
"type": "integer",
"description": "Total timeout in seconds",
"minimum": 0
},
"inputSchema": {
"$ref": "#/definitions/SchemaDef"
},
"outputSchema": {
"$ref": "#/definitions/SchemaDef"
},
"enforceSchema": {
"type": "boolean",
"description": "Whether to enforce schema validation",
"default": false
}
}
},
"SubWorkflowParams": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Sub-workflow name"
},
"version": {
"type": "integer",
"description": "Sub-workflow version"
},
"taskToDomain": {
"type": "object",
"description": "Task to domain mapping",
"additionalProperties": {
"type": "string"
}
},
"workflowDefinition": {
"description": "Inline workflow definition (can be WorkflowDef object, DSL string, or Map that gets converted)",
"oneOf": [
{
"type": "object",
"description": "WorkflowDef object or LinkedHashMap"
},
{
"type": "string",
"pattern": "^\\$\\{.*\\}$",
"description": "DSL expression string"
},
{
"type": "null"
}
]
},
"idempotencyKey": {
"type": "string",
"description": "Idempotency key for the sub-workflow"
},
"idempotencyStrategy": {
"type": "string",
"description": "Idempotency strategy",
"enum": ["RETURN_EXISTING", "FAIL"]
},
"priority": {
"description": "Priority of the sub-workflow (can be integer or string expression)",
"oneOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 99
},
{
"type": "string",
"description": "Expression that evaluates to priority"
},
{
"type": "null"
}
]
}
}
},
"SchemaDef": {
"type": "object",
"required": ["name", "type"],
"properties": {
"name": {
"type": "string",
"description": "Schema name"
},
"version": {
"type": "integer",
"description": "Schema version",
"default": 1
},
"type": {
"type": "string",
"description": "Schema type",
"enum": ["JSON", "AVRO", "PROTOBUF"]
},
"data": {
"type": "object",
"description": "Schema definition data",
"additionalProperties": true
},
"externalRef": {
"type": "string",
"description": "External schema reference"
}
}
},
"RateLimitConfig": {
"type": "object",
"properties": {
"rateLimitKey": {
"type": "string",
"description": "Rate limit key"
},
"concurrentExecLimit": {
"type": "integer",
"description": "Concurrent execution limit (required field, primitive int)"
}
}
},
"CacheConfig": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Cache key"
},
"ttlInSecond": {
"type": "integer",
"description": "TTL in seconds (required field, primitive int)"
}
}
},
"StateChangeEvent": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Type of the state change event"
},
"payload": {
"type": "object",
"description": "Event payload containing event-specific data",
"additionalProperties": true
}
}
}
}
}