从指定节点重新运行

从已执行作业的指定节点创建一个重新运行分支。创建成功不表示分支已完成;请查询重新运行详情确认状态。

POST https://moi.matrixorigin.cn/newmoi/workflow/v2/workflow-apps/{workflow_id}/executions/{execution_id}/nodes/{node_key}/reruns

调用前准备

查询节点重新运行计划,并保存其 rerun_contract_hash 和需要时的节点执行 ID。准备有目标工作区访问权限的个人访问令牌和目标工作区 ID。

下方示例使用:

  • $AI_STUDIO_API_KEY:实际个人访问令牌,通过 X-API-Key Header 传递。

  • $WORKSPACE_ID:目标工作区 ID,通过 X-Workspace-ID Header 传递。

  • $WORKFLOW_ID:作业所属的工作流 ID。

  • $EXECUTION_ID:源作业执行 ID。

  • $NODE_KEY:要作为重新运行起点的节点键。

  • $RERUN_CONTRACT_HASH:重新运行计划返回的契约哈希,用于避免使用过期计划。

路径参数

参数

类型

说明

workflow_id

string

工作流 ID。

execution_id

string

源作业 ID。

node_key

string

要作为重新运行起点的节点键。

请求体

字段

类型

是否必填

说明

mode

string

重新运行模式;必须取自计划的 available_modes

source_node_execution_id

string

选定的源节点执行 ID。

expected_rerun_contract_hash

string

计划返回的契约哈希,用于避免使用过期计划。

values

object

运行时输入覆盖值。

config_override

object

节点配置覆盖值。

reason

string

重新运行原因。

请求示例

curl -X POST "https://moi.matrixorigin.cn/newmoi/workflow/v2/workflow-apps/$WORKFLOW_ID/executions/$EXECUTION_ID/nodes/$NODE_KEY/reruns" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "mode": "continue_from_node",
    "expected_rerun_contract_hash": "'"$RERUN_CONTRACT_HASH"'"
  }'

成功响应

成功时返回 200data.rerun 返回新分支;保存 data.rerun.rerun_id,用于查询分支状态。

{
  "code": "OK",
  "msg": "OK",
  "data": {
    "rerun": {
      "rerun_id": "rerun-001",
      "branch_id": "branch-001",
      "case_id": "case-001",
      "source_execution_id": "exec-001",
      "node_key": "root.load",
      "source_node_execution_id": "node-exec-001",
      "mode": "continue_from_node",
      "status": "running"
    }
  }
}

响应字段如下。

字段

类型

说明

code

string

成功时为 OK

msg

string

成功时为 OK

data.rerun.rerun_id

string

重新运行 ID。

data.rerun.branch_id

string

新分支 ID。

data.rerun.case_id

string

新分支的案例 ID。

data.rerun.source_execution_id

string

源作业 ID。

data.rerun.node_key

string

重新运行起点的节点键。

data.rerun.source_node_execution_id

string

源节点执行 ID。

data.rerun.mode

string

实际使用的重新运行模式。

data.rerun.status

string

新分支状态。

data.start_error

string

启动时的错误信息;仅在有值时返回。

data.refresh_error

string

刷新时的错误信息;仅在有值时返回。

错误响应

{
  "code": "contract_drift_detected",
  "msg": "重新运行计划已变化",
  "data": null
}

常见 HTTP 错误

HTTP 状态码

错误代码

常见原因

建议操作

400

ErrParamInvalid

请求体无效、未提供模式,或模式不在计划允许范围内。

重新读取计划并按 available_modes 提供 mode

401

ErrUnauthorized

凭据缺失或无效。

检查 API Key。

403

ErrForbidden

当前身份没有运行权限。

使用有权限的凭据,或联系管理员授权。

404

ErrNotFound

工作流、作业或节点不存在。

检查路径参数。

409

contract_drift_detectedsource_node_execution_mismatch

计划已变化,或指定的源节点执行与当前作业不匹配。

重新获取计划并使用其候选项和契约哈希。

422

side_effect_policy_deniednode_config_override_unsupported

节点不允许重新运行,或配置覆盖不受支持。

按校验结果调整节点或移除不支持的覆盖。

500

ErrServer

服务端无法创建重新运行。

记录请求时间和错误信息后重试。

503

ErrServiceUnavailable

依赖服务不可用。

稍后重试。

后续操作

查询工作流重新运行详情确认分支状态。

最后更新于