创建工作流¶
在当前工作区创建工作流定义。创建成功后不会自动启动作业。
POST https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments
调用前准备¶
权限要求取决于部署方式和引用资源。除工作流创建权限外,还可能需要计算资源和引用资源的使用权限。传入已有工作流 ID 也不能只依靠管理权限完成这个 POST。
准备具有创建工作流权限的个人访问令牌、目标工作区 ID。手写方式准备工作流 DSL。自然语言方式准备已接受的工作流候选。
请求体¶
示例使用 jq 构造 JSON 请求体。先安装 jq 并设置所需环境变量,不要再次对变量值进行 JSON 编码。
将 $AI_STUDIO_API_KEY、$WORKSPACE_ID 和示例中的工作流名称、DSL 替换为实际值。
单次运行
curl -X POST "https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"name": "daily-import",
"dsl_yaml": "workflow:\n name: daily-import\n root: main\nroot:\n chain: []\n",
"execution_mode": "one_shot"
}'
动态服务
curl -X POST "https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"name": "order-query-service",
"dsl_yaml": "workflow:\n name: order-query-service\n root: main\nroot:\n chain: []\n",
"execution_mode": "dynamic_service",
"dynamic_service": {
"service_name": "order-query-service",
"input_schema": "{\"type\":\"object\"}",
"output_schema": "{\"type\":\"object\"}"
}
}'
定时触发
curl -X POST "https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"name": "daily-import",
"dsl_yaml": "workflow:\n name: daily-import\n root: main\nroot:\n chain: []\n",
"execution_mode": "cron",
"cron_expression": "0 2 * * *"
}'
卷触发
curl -X POST "https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"name": "volume-import",
"dsl_yaml": "workflow:\n name: volume-import\n root: main\nroot:\n chain: []\n",
"execution_mode": "volume_trigger",
"volume_trigger": {
"volume_id": 1001,
"enabled": true
}
}'
自然语言候选部署
curl -X POST "https://api.moi.matrixorigin.cn/v5/workflow/v2/workflow-deployments" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
--data-binary "$(jq -n --arg TASK_ID "$TASK_ID" --arg ARTIFACT_ID "$ARTIFACT_ID" '
{
"name": "ticket-analysis",
"source_type": "nl2dsl",
"candidate_ref": {
"task_id": $TASK_ID,
"artifact_id": $ARTIFACT_ID
},
"execution_mode": "one_shot",
"default_values": {
"text": "需要处理的文本"
}
}
')"
手写 DSL 必须包含可部署的根节点和至少一个有效节点,空的 chain: [] 不能部署。
自然语言生成的工作流使用已接受的候选引用部署。
manual_dsl 使用 DSL,manual_mowl 使用工作流对象,自然语言生成使用相应候选定义。填写已有 workflow_id 会进入重新部署处理,而非单纯新建。通知配置的请求头要使用完整原值并保护凭据。
动态服务的输入、输出 Schema 必须以 JSON 文本提供。运行规格文本可省略,结果方式默认 oneshot。JSON 语法通过不等于已经完成完整 Schema 语义校验。
创建工作流时必须提供 name。source_type 省略时按手写 DSL(manual_dsl)处理,此时必须提供 dsl_yaml。使用自然语言候选时,填写 source_type=nl2dsl 和已接受的 candidate_ref,不提交 dsl_yaml。省略 workflow_id 时创建新工作流。提供时进入已有工作流的重新部署分支,仍需创建权限及目标资源权限。不要传 runtime_context。
单次运行
字段 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
|
string |
是 |
工作流名称。 |
|
string 或 null |
否 |
工作流说明。 |
|
string 或 null |
否 |
填写 |
|
string 或 null |
否 |
Cron 表达式。 |
|
string 或 null |
否 |
手写 DSL 时必填。自然语言候选部署时不传。 |
|
string 或 null |
否 |
关联的计算资源 ID。 |
|
object 或 null |
否 |
运行时输入表单配置。 |
|
string 或 null |
否 |
标题文本。 |
|
string 或 null |
否 |
当前对象的说明。 |
|
object(对象数组) 或 null |
否 |
字段定义。 |
|
string 或 null |
否 |
表单字段 ID,用于运行输入和布局关联。 |
|
string 或 null |
否 |
显示标签。 |
|
string 或 null |
否 |
当前对象的说明。 |
|
string 或 null |
否 |
输入控件类型。 |
|
string 或 null |
否 |
JSON 类型。 |
|
string 或 null |
否 |
模型类型标签。 |
|
boolean 或 null |
否 |
是否必填。 |
|
JSON 值 或 null |
否 |
默认值。 |
|
boolean 或 null |
否 |
是否有默认值。 |
|
string 或 null |
否 |
输入提示。 |
|
string 或 null |
否 |
字符串匹配模式。 |
|
string 或 null |
否 |
运行配置中的字段路径。 |
|
string 或 null |
否 |
所属区块。 |
|
string 或 null |
否 |
所属分组。 |
|
string 或 null |
否 |
启用时的值。 |
|
string 或 null |
否 |
关闭时的值。 |
|
boolean 或 null |
否 |
是否隐藏。 |
|
boolean 或 null |
否 |
是否只读。 |
|
boolean 或 null |
否 |
是否含敏感值。 |
|
object(对象数组) 或 null |
否 |
可选项。 |
|
string 或 null |
否 |
显示标签。 |
|
JSON 值 或 null |
否 |
值。 |
|
string 或 null |
否 |
当前对象的说明。 |
|
number 或 null |
否 |
最小值。 |
|
number 或 null |
否 |
最大值。 |
|
string(字符串数组) 或 null |
否 |
允许的文件类型。 |
|
string 或 null |
否 |
资源类型。 |
|
object 或 null |
否 |
显示条件。 |
|
string 或 null |
否 |
表单字段 ID,用于运行输入和布局关联。 |
|
JSON 值 或 null |
否 |
值。 |
|
string 或 object 或 null |
否 |
值绑定位置。 |
|
string 或 null |
否 |
该字段所属节点名称。 |
|
string 或 null |
否 |
该字段所属节点的定位名。 |
|
object 或 null |
否 |
运行时输入表单的布局配置。 |
|
string 或 null |
否 |
当前资源版本。 |
|
object(对象数组) 或 null |
否 |
字段分组。 |
|
string 或 null |
否 |
布局分组 ID。 |
|
string 或 null |
否 |
标题文本。 |
|
string 或 null |
否 |
显示信息。 |
|
string 或 null |
否 |
节点 ID。 |
|
string(字符串数组) 或 null |
否 |
分组内字段 ID。 |
|
object 或 null |
否 |
表单使用指南。 |
|
string 或 null |
否 |
引导说明。 |
|
object(对象数组) 或 null |
否 |
路径列表。 |
|
string 或 null |
否 |
当前对象的 ID。 |
|
string 或 null |
否 |
显示标签。 |
|
string 或 null |
否 |
当前对象的说明。 |
|
string(字符串数组) 或 null |
否 |
分组内字段 ID。 |
|
object(对象数组) 或 null |
否 |
字段分组。 |
|
string 或 null |
否 |
当前对象的 ID。 |
|
string 或 null |
否 |
显示标签。 |
|
string(字符串数组) 或 null |
否 |
路径 ID 列表。 |
|
string(字符串数组) 或 null |
否 |
分组内字段 ID。 |
|
object(对象数组) 或 null |
否 |
字段定义。 |
|
string 或 null |
否 |
表单字段 ID,用于运行输入和布局关联。 |
|
string 或 null |
否 |
关联角色。 |
|
string 或 null |
否 |
补充说明。 |
|
string 或 null |
否 |
布局分组 ID。 |
|
object(对象数组) 或 null |
否 |
是否固定。 |
|
string 或 null |
否 |
显示标签。 |
|
string 或 null |
否 |
值。 |
|
object 或 null |
否 |
运行时输入表单的默认值。对象允许扩展键。 |
|
object 或 null |
否 |
工作流设计图配置。对象允许扩展键。 |
|
object 或 null |
否 |
卷触发配置。运行时输入表单未提供卷 ID 时,必须填写其中的 |
|
integer 或 null |
否 |
卷 ID。运行时输入表单未提供卷 ID 时必填。 |
|
boolean 或 null |
否 |
是否启用卷触发。 |
|
boolean 或 null |
否 |
是否自动派发卷触发的运行。 |
|
string 或 null |
否 |
卷触发时使用的变量 JSON 文本。 |
|
integer 或 null |
否 |
卷触发运行的最大并发数。 |
|
object 或 null |
否 |
动态服务配置。 |
|
string 或 null |
否 |
动态服务名称。 |
|
string 或 null |
条件必填 |
显式提交 dynamic_service 时必填的 JSON Schema 文本。只做当前服务支持的格式校验。 |
|
string 或 null |
条件必填 |
显式提交 dynamic_service 时必填的 JSON Schema 文本。只做当前服务支持的格式校验。 |
|
string 或 null |
否 |
动态服务的结果模式。 |
|
string 或 null |
否 |
动态服务运行时配置的 JSON 文本。 |
|
object 或 null |
否 |
终态通知配置。 |
|
string |
是 |
类型。 |
|
string |
是 |
通知地址。 |
|
string 或 null |
否 |
HTTP 方法。 |
|
object 或 null |
否 |
通知请求头。对象允许扩展键。 |
|
integer 或 null |
否 |
超时秒数。 |
|
JSON 值 |
否 |
Worker ID。取值为 空字符串、 |
|
JSON 值 |
否 |
通知消息。取值为 空字符串、 |
|
string(字符串数组) 或 null |
否 |
节点通知状态。 |
|
string(字符串数组) 或 null |
否 |
通知节点 ID。 |
|
array |
是 |
工作流通知状态。 |
|
string 或 null |
否 |
工作流 ID。 |
|
string 或 null |
否 |
本页介绍 |
|
object 或 null |
否 |
MOWL 工作流定义。 |
|
string 或 null |
否 |
当前对象的名称。 |
|
string 或 null |
否 |
根网络名称。 |
|
string 或 null |
否 |
用户身份标识。 |
|
object 或 null |
否 |
网络定义,键为网络名称。对象允许扩展键。 |
|
boolean 或 null |
否 |
是否为临时对象。 |
|
object 或 null |
否 |
节点列表。对象允许扩展键。 |
|
string 或 null |
否 |
当前对象的 ID。 |
|
string 或 null |
否 |
当前资源版本。 |
|
object 或 null |
否 |
输入连接配置。 |
|
string 或 null |
否 |
类型。 |
|
string(字符串数组) 或 null |
否 |
节点列表。 |
|
string(字符串数组) 或 null |
否 |
查询语句列表。 |
|
object 或 null |
否 |
输出连接配置。 |
|
string 或 null |
否 |
类型。 |
|
string(字符串数组) 或 null |
否 |
节点列表。 |
|
string(字符串数组) 或 null |
否 |
查询语句列表。 |
|
object 或 null |
否 |
变量映射。对象允许扩展键。 |
|
object 或 null |
否 |
定义来源信息,保存时由服务处理。 |
|
string 或 null |
否 |
关联标识。 |
|
string 或 null |
否 |
关联标识。 |
|
string 或 null |
否 |
关联标识。 |
|
string 或 null |
否 |
目录修订号。 |
|
string 或 null |
否 |
目录快照摘要。 |
|
string 或 null |
否 |
源定义摘要。 |
|
string 或 null |
否 |
产物摘要。 |
|
string 或 null |
否 |
信封摘要。 |
|
string 或 null |
否 |
语法版本。 |
|
string 或 null |
否 |
编译器版本。 |
|
string 或 null |
否 |
来源代码。 |
|
object 或 null |
否 |
|
|
string 或 null |
否 |
生成候选的 A2A 任务 ID。 |
|
string 或 null |
否 |
同一任务返回的候选产物 ID。 |
|
string |
条件必填 |
手写 DSL 时必填。自然语言候选部署时不传。 |
|
string |
是 |
填写 |
|
object |
是 |
动态服务配置。 |
|
string |
否 |
动态服务名称。 |
|
string |
条件必填 |
显式提交 dynamic_service 时必填的 JSON Schema 文本。只做当前服务支持的格式校验。 |
|
string |
条件必填 |
显式提交 dynamic_service 时必填的 JSON Schema 文本。只做当前服务支持的格式校验。 |
|
string |
否 |
动态服务的结果模式。 |
|
string |
否 |
动态服务运行时配置的 JSON 文本。 |
|
string |
是 |
Cron 表达式。 |
|
object |
否 |
卷触发配置。运行时输入表单未提供卷 ID 时,必须填写其中的 |
|
integer |
条件必填 |
卷 ID。运行时输入表单未提供卷 ID 时必填。 |
|
boolean |
否 |
是否启用卷触发。 |
|
boolean |
否 |
是否自动派发卷触发的运行。 |
|
string |
否 |
卷触发时使用的变量 JSON 文本。 |
|
integer |
否 |
卷触发运行的最大并发数。 |
其他可选字段可参见“单次运行”页签。
其他可选字段可参见“单次运行”页签。
其他可选字段可参见“单次运行”页签。
本例要求已经取得并接受有效的工作流候选。将接受响应中的 data.candidate_ref.task_id 和 data.candidate_ref.artifact_id 分别保存为 $TASK_ID、$ARTIFACT_ID。
服务端读取该候选的定义。此方式不接受调用方提交 dsl_yaml、runtime_fields、runtime_layout 或 design_graph。需要调整节点或表单时,应重新生成并接受候选。default_values 提供候选运行表单的默认值,字段名称和类型须与候选表单一致。one_shot 候选部署时,必填运行字段必须已经有值。缺失时部署失败,不能等到启动作业时才补充。
候选部署示例假定候选包含必填字符串 text。按实际 runtime_fields.fields 替换。动态服务的调用输入在每次调用时提供,不参与这项部署完整性检查。
候选必须属于当前工作区和调用用户,源任务已完成,并具有匹配的服务端接受记录。未接受候选就部署时,返回 HTTP 409,错误代码为 ErrConflict。不能用任意 YAML、候选对象或自行构造的 ID 代替候选引用。
成功响应¶
{
"code": "OK",
"msg": "OK",
"data": {
"workflow": {
"id": "wf-001",
"name": "daily-import",
"source_type": "manual_dsl",
"execution_mode": "one_shot",
"draft_id": "draft-001",
"status": "ready"
},
"deployment": {
"workflow_app_id": "wf-001",
"workflow_def_id": "def-001",
"workflow_version_id": "ver-001",
"workflow_name": "daily-import",
"version": 1,
"execution_mode": "one_shot"
}
}
}
字段 |
类型 |
说明 |
|---|---|---|
|
string |
成功代码。 |
|
string |
响应信息。 |
|
object |
本次操作返回的数据。 |
|
object |
MOWL 工作流定义。 |
|
string |
当前对象的 ID。 |
|
string |
当前对象的名称。 |
|
string |
来源类型。取值为 |
|
string |
运行方式。取值为 |
|
string |
Cron 表达式。 |
|
string |
关联标识。 |
|
string |
关联标识。 |
|
string |
状态。取值为 |
|
object |
部署结果。 |
|
string |
工作流应用 ID。 |
|
string |
工作流定义 ID。 |
|
string |
工作流版本 ID。 |
|
string |
工作流名称。 |
|
integer |
工作流版本号。 |
|
string |
已发布的运行方式。取值为 |
|
string |
上一工作流版本 ID。更新已有工作流版本时返回。 |
|
string(字符串数组) |
已停用的定时任务 ID。替换定时任务时返回。 |
|
object |
卷触发配置。卷触发时返回。 |
|
integer |
当前对象的 ID。 |
|
integer |
关联标识。 |
|
string |
关联标识。 |
|
boolean |
是否启用。 |
|
string |
创建者身份标识。 |
|
string |
最近更新者身份标识。 |
|
integer |
创建时间。 |
|
integer |
最近更新时间。 |
|
string |
运行变量。 |
|
integer |
最大并发数。 |
|
boolean |
是否自动分发。 |
|
string |
关联标识。 |
|
object |
定时任务信息。定时触发时返回。 |
|
string |
当前对象的 ID。 |
|
string |
所属工作区 ID。 |
|
string |
当前对象的名称。 |
|
string |
Cron 表达式。 |
|
string |
数据内容。 |
|
string |
运行变量。 |
|
integer |
状态。 |
|
string |
创建时间。 |
|
string |
最近更新时间。 |
|
string |
关联标识。 |
|
string |
关联标识。 |
|
object |
动态服务信息。动态服务时返回。 |
|
string |
显示信息。 |
|
object |
调用配置。 |
|
string |
HTTP 方法。 |
|
string |
字段路径。 |
|
string |
结果返回方式。 |
|
object |
请求体示例对象允许扩展键。 |
|
object |
当前资源版本。 |
|
string |
当前对象的 ID。 |
|
string |
所属工作区 ID。 |
|
string |
工作流 ID。 |
|
integer |
当前资源版本。 |
|
JSON 值 |
MOWL 工作流定义。 |
|
string |
状态。取值为 |
|
string |
创建者身份标识。 |
|
string |
创建时间。 |
|
string |
时间信息。 |
|
integer |
类型。取值为 |
|
string |
输入定义的 JSON 文本。 |
|
string |
输出定义的 JSON 文本。 |
|
integer |
结果返回方式。取值为 |
|
string |
当前对象的说明。 |
|
string |
运行规格的 JSON 文本。 |
|
string(字符串数组) |
提示信息。 |
错误响应¶
部署时会分阶段保存记录并创建关联算子。尚未完成的记录可能处于待处理状态,不出现在列表中。部署失败后,部分记录可能仍保留。请保存请求和追踪标识,供后续排查。
保存响应中的请求和追踪标识。重复提交候选或请求标识仍会检查内容摘要与调用身份。错误后不要更换标识自动重试。
{
"code": "ErrParamInvalid",
"msg": "请求参数无效"
}
字段 |
类型 |
说明 |
|---|---|---|
|
string |
错误代码。 |
|
string |
错误说明。 |
常见 HTTP 错误¶
HTTP 状态码 |
错误代码 |
常见原因 |
建议操作 |
|---|---|---|---|
400 |
|
请求字段、工作区或操作前置条件无效。 |
修正参数后再提交。 |
401 |
|
认证凭据缺失或无效。 |
检查凭据类型、有效期及认证头。 |
403 |
|
当前身份或有效角色无执行该操作的权限。 |
使用有权限的身份,或联系管理员授权。 |
404 |
|
目标对象或所需引用未找到。 |
核对对象标识、所属工作区和当前状态。 |
409 |
|
资源状态、请求内容或并发条件冲突。 |
重新读取当前状态和版本,按实际结果处理。 |
500 |
|
内部处理失败;写操作可能已有部分效果。 |
保留请求和追踪信息,先核对当前结果。 |
503 |
|
业务、运行时或授权依赖暂不可用。 |
恢复依赖后先核对已有结果,不自动重复写入。 |