跳转至

工作流执行(WorkflowController)

提供工作流(流程)运行时操作的全套接口:流程信息查询(走向/状态/历史/流程图/催办历史/流程定义列表)、流程处理(发起/提交/回退/撤回/挂起/恢复/终止/催办/更新审批人)、流程面板(提交/发起/回退/跳转面板、回退历史用户)、审批人/抄送人选择框、自由流程(发起/提交/回退/结束)、以及补签意见、流程协办、协办/主办加签。是 runtime 模块流程域的核心控制器,也是单控制器端点最多的一个。

  • 接口类型:REST 资源(@Component 继承 AbstractRuntimeController@RestController),类级 produces = APPLICATION_JSON_VALUE
  • 基址${myapps.context-path.runtime:}/api/runtime/{applicationId}同位 /api/authtime/{applicationId}(同一路由可经两个前缀访问,详见「公共说明 · 鉴权」)
  • Tag:工作流执行模块

公共说明

  • 鉴权(据源码):本控制器有**两个等价基址**——${myapps.context-path.runtime:}/api/runtime/{applicationId}/api/authtime/{applicationId}
  • /api/runtime/{applicationId}/... 访问:路径位于 RestSecurityHandlerInterceptor 覆盖范围(/api/runtime/**),且不在豁免名单(豁免仅覆盖 /api/runtime/login.*/api/runtime/dingding/authlogin/api/runtime/synchronization.* 等,详见 login.md「公共说明 · 鉴权」)。拦截器走 Security.getUserIdFromToken(request),未取到再尝试 Security.getDebugUserIdFromToken(request),两者皆无则拒绝。故需 accessToken(或 debugToken),可通过 Cookie / 请求头 / query 参数任一方式传递。
  • /api/authtime/{applicationId}/... 访问:路径**不在** RestSecurityHandlerInterceptor 覆盖范围(拦截器仅注册到 /api/runtime/**/api/rest/bpm/**,据 RuntimeMvcConfig),登录态校验依赖前置 Servlet 过滤器链与控制器内 AbstractRuntimeController.getUser() 读取的 WebUser;调用方需为已登录的前台用户(与 jamon.md 同机制)。
  • 不论经哪个前缀访问,控制器内 getUser() 必须能取到非空 WebUser,否则各端点在调用 DesUtil.decryptTextByUserId(..., getUser().getId()) 时即抛 NPE。
  • 路径变量 {applicationId}:必填,经 DES 加密(按当前执行用户密钥),服务端在方法入口处 DesUtil.decryptTextByUserId(applicationId, getUser().getId()) 解密。
  • 其它加密 id{docId}{instanceId}{flowId} 等路径变量同样按当前用户密钥做 DES 加密后传输,服务端逐个解密。请求体中的 id 类字段(如 submitTo[].useridsjumpToPerson[].useridscirculatorInfo 等)按业务约定为登录账号 / 内码字符串(不一定 DES 加密)。
  • 请求体约定:发起/提交/回退/跳转/自由流程/面板类端点统一使用 @RequestBody String content,请求体为 JSON 字符串,服务端用 JsonPath(com.jayway.jsonpath,开启 DEFAULT_PATH_LEAF_TO_NULL)抽取所需字段;文档「请求体」小节列出 JsonPath 与字段含义。文档主体($.document)的解析复用 AbstractRuntimeController.prepareDocument(),结构同 document.md「公共说明 · Document 请求体」。
  • 响应结构:统一 Resource(见 ../index.md「统一响应结构」),字段为 errcode/errmsg/data/errorsResource.data 的类型见各端点说明;多数工作流操作端点的 data 为流程服务返回的 String(多为提示文案 / 节点跳转 JSON 序列化结果)。
  • _flowType 参数:服务端在 submitWorkflow(80)/ backWorkflow(81)/ retracementWorkflow(85)中将流程操作类型写入 ParamsTable,供表单/校验脚本识别当前流程动作。
  • HTTP 状态码:所有端点类级标注 @ResponseStatus(HttpStatus.OK),成功默认 200。业务错误由响应体 errcode 体现:表单/子表单校验不通过 errcode=4001errors 数组承载明细(每项 errcode=40001);服务端异常被包装为「流程校验不通过」errcode=4001 + errors[0].errmsg=<异常信息>。错误码表见 ../index.md

1. 获取流程走向

按当前文档与表单字段值,计算指定文档下一可流转的节点集合(用于审批面板渲染流向选项)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/trail(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/trail,同位 /api/authtime/{applicationId}/documents/{docId}/trail
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取 $.document.items(字段名→字段值映射),将每个键值对作为参数合并入 ParamsTable,再计算流程走向。

{
  "document": {
    "items": { "<字段名>": "<字段值>" }
  }
}

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/trail HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "items": { "金额": "1200.00" } }
}

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataList<FlowNode>,下一可流转节点集合。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "nodeid": "__NODEID1__", "name": "部门经理审批", "type": "..." }
  ],
  "errors": null
}


2. 获取流程状态

按流程实例 Id 查询当前流程状态(节点、审批人、状态等)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/workflows/{instanceId}/states(完整:{runtime-context}/api/runtime/{applicationId}/workflows/{instanceId}/states,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
instanceId path string 流程实例Id

请求示例

GET /api/runtime/__APPID__/workflows/__INSTANCEID__/states HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataJSONObject,流程状态结构(节点 / 审批人 / 状态等,由 WorkflowRunTimeService.queryWorkflow 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "instanceId": "__INSTANCEID__", "state": "...", "nodes": [] },
  "errors": null
}


3. 获取文档的流程历史

按文档 Id 查询流程审批历史;支持按搜索关键字过滤(在起始节点名 / 目标节点名 / 审批人名 / 代理审批人名 / 审批意见中模糊匹配,不区分大小写)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/flowhistorys(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/flowhistorys,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content query string 搜索关键字(在节点名/审批人名/代理审批人名/审批意见中模糊匹配,不区分大小写)

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/flowhistorys?content=张三 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataCollection<FlowHistoryVO>,流程历史对象集合;每条记录含 startNodeName/targetNodeName/auditorName/agentAuditorName/attitude 等字段。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    {
      "startNodeName": "发起",
      "targetNodeName": "部门经理审批",
      "auditorName": "张三",
      "agentAuditorName": null,
      "attitude": "同意"
    }
  ],
  "errors": null
}


4. 获取文档的流程图

按文档 Id 与流程实例 Id 获取流程图(旧版接口)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/{instanceId}/flowchart(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/{instanceId}/flowchart,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
instanceId path string 流程实例Id

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/__INSTANCEID__/flowchart HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataJSONObject,流程图结构(节点 / 连线 / 当前位置高亮等,由 WorkflowRunTimeService.getWorkflowChart 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "nodes": [], "edges": [], "currentNodeId": "__NODEID__" },
  "errors": null
}


5. 获取文档的流程图(新)

按文档 Id 与流程实例 Id 获取流程图(新版接口)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/{instanceId}/newflowchart(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/{instanceId}/newflowchart,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
instanceId path string 流程实例Id

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/__INSTANCEID__/newflowchart HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataJSONObject,流程图结构(由 WorkflowRunTimeService.getNewWorkflowChart 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "nodes": [], "edges": [], "currentNodeId": "__NODEID__" },
  "errors": null
}


6. 发起流程

按文档与流程定义模板发起流程,提交到第一个审批节点。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/workflows/initiate(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/initiate,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document(Document 主体,结构同 document.md「公共说明 · Document 请求体」)、$.flowId(流程定义模板Id)、$.nextId(下一节点定义对象Id)、$.actId(操作按钮Id)。

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "flowId": "__FLOWID__",
  "nextId": "__NEXTNODEID__",
  "actId": "__ACTID__"
}

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/workflows/initiate HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "flowId": "__FLOWID__",
  "nextId": "__NEXTNODEID__",
  "actId": "__ACTID__"
}

响应

结构:统一 ResourcedataString,流程发起结果(流程服务 initiate 返回的提示或序列化结果)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<发起结果字符串>", "errors": null }


7. 获取文档的流程催办历史

按文档 Id 查询流程催办历史记录。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/remind-historys(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/remind-historys,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/remind-historys HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataList<FlowReminderHistory>,催办历史记录集合。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [ { "docId": "__DOCID__", "remindTime": "2026-08-01 10:00:00", "sender": "张三" } ],
  "errors": null
}


8. 获取文档的流程提交面板

提交前获取下一可提交节点列表、可选审批人、操作按钮等面板数据(用于提交弹窗渲染)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/panels/submission(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/panels/submission,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端读取 $.document 作为 Document 主体(结构同 document.md「公共说明 · Document 请求体」),其余 query/form 参数经 getParams() 合并入 ParamsTable

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } } }

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/panels/submission HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } } }

响应

结构:统一 ResourcedataJSONObject,提交面板数据(下一节点 / 审批人 / 按钮等,由 WorkflowRunTimeService.submissionPanels 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "nextNodes": [], "actors": [], "attitudes": [] },
  "errors": null
}


9. 获取文档的流程发起面板

流程发起前获取面板数据(流程定义可选模板、首节点审批人等)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/panels/initiate(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/panels/initiate,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构同上)

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/panels/initiate HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } } }

响应

结构:统一 ResourcedataJSONArray,发起面板列表(每个元素为一个可发起的流程模板与首节点信息,由 WorkflowRunTimeService.initiatePanels 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [ { "flowId": "__FLOWID__", "flowName": "请假流程", "firstNode": { "..." : "..." } } ],
  "errors": null
}


10. 提交流程

提交当前审批节点到下一节点:校验主表/子表、保存子表删除/编辑、重计算主表、推进流程。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/submit(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/submit,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取以下字段:

JsonPath 类型 必填 说明
$.document object Document 主体(结构同 document.md「公共说明 · Document 请求体」)
$.flowId string 流程定义模板对象Id(写入 params._flowid
$.currentNodeId string 当前节点定义对象Id;服务端校验当前用户在该节点上
$.nextNodeIds array<string> 下一个节点对象Id集合;为空返回 errcode=4001「请选择审批节点!」
$.isMoreCurrentNode string 是否多个当前节点审批人为同一人("true"/"false")
$.signatureJson string 手写签名 JSON(写入 params._signature
$.attitude string 审批意见(写入 params.attitude
$.submitTo array<object> 指定下一节点审批人列表;每项 {nodeid, userids}userids; 分隔
$.circulatorInfo string 抄送人Id,以 ; 分隔
$.subFlowApprover string 子流程指定审批人(写入 params._subFlowApproverInfo
{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__NEXTNODEID1__"],
  "attitude": "同意",
  "signatureJson": "",
  "submitTo": [ { "nodeid": "__NEXTNODEID1__", "userids": "userA;userB" } ],
  "circulatorInfo": "userC;userD"
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/submit HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__NEXTNODEID1__"],
  "attitude": "同意"
}

响应

结构:统一 ResourcedataString,流程提交结果(流程服务返回的提示或序列化结果)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<提交结果字符串>", "errors": null }

失败示例(未选择审批节点)

{ "errcode": 4001, "errmsg": "请选择审批节点!", "data": null, "errors": null }

失败示例(表单/子表单校验不通过)

{
  "errcode": 4001,
  "errmsg": "表单校验不通过",
  "data": null,
  "errors": [{ "errcode": 40001, "errmsg": "金额必须大于 0", "field": "金额" }]
}

失败示例(流程已被处理 / 服务端异常)

{
  "errcode": 4001,
  "errmsg": "流程校验不通过",
  "data": null,
  "errors": [{ "errcode": 40001, "errmsg": "流程已被处理,请刷新后操作!", "field": "" }]
}

说明:所有 Exception(含 OBPMValidateException、字段超长 Data too long for column、流程已被处理等)都被捕获并统一以 errcode=4001「流程校验不通过」 返回,errors[0].errmsg 承载实际异常描述。


11. 获取文档的流程回退面板

回退前获取可回退节点列表等面板数据。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/panels/back(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/panels/back,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构同上,$.document 为 Document 主体)

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/panels/back HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} } }

响应

结构:统一 ResourcedataJSONObject,回退面板数据(可回退节点列表等,由 WorkflowRunTimeService.backPanels 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "backNodes": [] },
  "errors": null
}


12. 获取回退节点历史用户

按节点 Id 获取该节点历史审批人列表,支持按部门/角色/关键字过滤与分页。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/back/users(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/back/users,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
nodeId query string 节点Id
type query string 过滤类型:3=按关键字(在 loginNo/name 中匹配);2=按部门;1=按角色
selectId query string 当 type=2 时为部门Id,type=1 时为角色Id,type=3 时为关键字
pageSize query string 每页条数,默认 10
pageNum query string 当前页,默认 1

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/back/users?nodeId=__NODEID__&type=3&selectId=zhang&pageNum=1&pageSize=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataList<UserNode>,过滤后的历史用户节点列表(注意:服务端构造了 datas/pageCount/linesPerPage/rowCount/pageNum 分页 Map 但实际未作为响应 data 返回,源码 return success("ok", result) 返回的是过滤后的全量 result 而非分页后的 datas,据源码)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "id": "__USERID__", "name": "张三", "loginNo": "zhangsan", "deptId": "...", "roleids": [] }
  ],
  "errors": null
}


13. 获取文档的流程跳转面板

跳转(指定回退)前获取可跳转节点列表等面板数据。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/panels/jump(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/panels/jump,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构同上,$.document 为 Document 主体)

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/panels/jump HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} } }

响应

结构:统一 ResourcedataJSONObject,跳转面板数据(由 WorkflowRunTimeService.jumpPanels 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "jumpNodes": [] },
  "errors": null
}


14. 回退流程

将当前节点回退到指定下一节点(常规回退,由 nextNodeIds 指定)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/back(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/back,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document(Document 主体)、$.currentNodeId(当前节点Id,服务端校验当前用户在该节点上)、$.flowId(写入 params._flowid)、$.attitude(审批意见)、$.nextNodeIds(回退目标节点Id集合)、$.signatureJson(签名)、$.backTo(可选,回退目标历史节点Id列表)。

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__BACKNODEID__"],
  "attitude": "退回修改",
  "backTo": ["__BACKNODEID__"]
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/back HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__BACKNODEID__"],
  "attitude": "退回修改"
}

响应

结构:统一 ResourcedataString,回退结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<回退结果字符串>", "errors": null }

说明:若文档 state 为 null 或当前用户已不在 currentNodeId,抛出 OBPMValidateException("流程已被处理,请刷新后操作!"),由全局异常处理返回。


15. 跳转流程(回退到历史节点指定历史用户)

回退到历史节点,并可指定该历史节点的处理人(jumpToPerson)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/jump(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/jump,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document$.currentNodeId$.flowId$.attitude$.nextNodeIds$.signatureJson,以及 $.jumpToPerson(指定回退人列表,每项 {nodeid, userids}userids; 分隔)。

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__BACKNODEID__"],
  "attitude": "跳转",
  "jumpToPerson": [ { "nodeid": "__BACKNODEID__", "userids": "userA;userB" } ]
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/jump HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "flowId": "__FLOWID__",
  "currentNodeId": "__CURRNODEID__",
  "nextNodeIds": ["__BACKNODEID__"],
  "jumpToPerson": [ { "nodeid": "__BACKNODEID__", "userids": "userA;userB" } ]
}

响应

结构:统一 ResourcedataString,跳转结果字符串(底层复用 WorkflowRunTimeService.backWorkflow)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<跳转结果字符串>", "errors": null }

失败示例(子表单校验不通过)

{
  "errcode": 4001,
  "errmsg": "子表单校验不通过",
  "data": null,
  "errors": [{ "errcode": 40001, "errmsg": "<校验错误>", "field": "<字段名>" }]
}


16. 撤回流程

撤回当前用户已提交、且下一节点尚未处理的流程实例。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/retracement(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/retracement,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/retracement HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,撤回结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<撤回结果字符串>", "errors": null }


17. 挂起流程

挂起指定文档的流程实例(暂停流转)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/suspend(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/suspend,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/suspend HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,挂起结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<挂起结果字符串>", "errors": null }


18. 恢复流程

恢复(解除挂起)指定文档的流程实例。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/recovery(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/recovery,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/recovery HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,恢复结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<恢复结果字符串>", "errors": null }


19. 终止流程

终止指定文档的流程实例,可附带审批意见与签名。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/termination(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/termination,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
attitude query string 终止意见
signature query string 手写签名

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/termination?attitude=作废 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,终止结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<终止结果字符串>", "errors": null }


20. 流程催办

向指定的待办节点处理人发送催办通知。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/remind(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/remind,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.attitude(催办内容)、$.nodertIds(待催办节点运行时Id数组,为空返回 errcode=4001「请选择催办节点!」)、$.signatureJson(签名)。

{ "attitude": "请尽快处理", "nodertIds": ["__NODERTID1__", "__NODERTID2__"], "signatureJson": "" }

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/remind HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "attitude": "请尽快处理", "nodertIds": ["__NODERTID1__"], "signatureJson": "" }

响应

结构:统一 ResourcedataString,催办结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<催办结果字符串>", "errors": null }

失败示例(未选择催办节点)

{ "errcode": 4001, "errmsg": "请选择催办节点!", "data": null, "errors": null }


21. 自由流程提交

自由流程(无固定流程定义)场景:指定下一审批人 nextUserId,提交到下一节点。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/freeflows/submit(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/freeflows/submit,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document(Document 主体)、$.nextUserId下一审批人Id,为空返回 errcode=4001)、$.attitude(意见)、$.signatureJson(签名)。

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "nextUserId": "__NEXTUSERID__",
  "attitude": "同意",
  "signatureJson": ""
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/freeflows/submit HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": { "金额": "1200.00" } },
  "nextUserId": "__NEXTUSERID__",
  "attitude": "同意"
}

响应

结构:统一 ResourcedataString,提交结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<提交结果字符串>", "errors": null }

失败示例(未选择审批人)

{ "errcode": 4001, "errmsg": "{*[cn.myapps.runtime.workflow.choose_specify_auditor]*}", "data": null, "errors": [] }

说明:错误信息保留源码中的 i18n 占位符原文(未在控制器内做国际化解析)。

失败示例(表单校验不通过)

{
  "errcode": 4001,
  "errmsg": "表单校验不通过",
  "data": null,
  "errors": [{ "errcode": 40001, "errmsg": "<校验错误>", "field": "<字段名>" }]
}


22. 自由流程回退

自由流程场景:回退到上一处理人 nextUserId

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/freeflows/back(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/freeflows/back,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document(Document 主体)、$.nextUserId(回退目标用户Id)、$.attitude$.signatureJson

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "nextUserId": "__BACKUSERID__",
  "attitude": "退回",
  "signatureJson": ""
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/freeflows/back HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "nextUserId": "__BACKUSERID__",
  "attitude": "退回"
}

响应

结构:统一 ResourcedataString,回退结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<回退结果字符串>", "errors": null }


23. 自由流程发起

自由流程场景:发起一个新流程,指定首节点审批人 nextUserId,可同时更新文档字段值。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/documents/{docId}/freeflows/initiate(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/freeflows/initiate,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.nextUserId(首节点审批人Id)、$.attitude(意见)、$.document.items(要更新的字段值映射)。服务端从私有缓存或数据库加载文档,逐项 setValue 后发起。

{
  "nextUserId": "__NEXTUSERID__",
  "attitude": "发起",
  "document": { "items": { "金额": "1500.00" } }
}

说明:请求体中 $.document.items 的字段名必须在文档中已存在,否则抛 "<字段名> 值不存在"

请求示例

POST /api/runtime/__APPID__/documents/__DOCID__/freeflows/initiate HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "nextUserId": "__NEXTUSERID__",
  "attitude": "发起",
  "document": { "items": { "金额": "1500.00" } }
}

响应

结构:统一 ResourcedataString,发起结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<发起结果字符串>", "errors": null }


24. 自由流程结束

自由流程场景:结束当前用户的处理(流程实例是否终止由服务端按是否还有未处理节点决定)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/freeflows/complete(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/freeflows/complete,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取:$.document(Document 主体)、$.attitude(意见)、$.signatureJson(签名)。

{
  "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} },
  "attitude": "办结",
  "signatureJson": ""
}

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/freeflows/complete HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "document": { "id": "__DOCID__", "formId": "__FORMID__", "items": {} }, "attitude": "办结" }

响应

结构:统一 ResourcedataString,结束结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<结束结果字符串>", "errors": null }


25. 更新流程节点审批人

更新指定文档当前节点的审批人列表(在节点流转前修改后续审批人)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/approvers(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/approvers,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
content body string(JSON) 请求包体(结构见下)

请求体

服务端用 JsonPath 读取 $.auditorList(审批人Id列表),写入 params.auditorList 后调用流程服务。

{ "auditorList": ["__USERIDA__", "__USERIDB__"] }

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/approvers HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{ "auditorList": ["__USERIDA__", "__USERIDB__"] }

响应

结构:统一 ResourcedataString,更新结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<更新结果字符串>", "errors": null }


26. 自由流程模式回退获取历史处理人

按流程实例 Id 获取自由流程模式下的可回退历史处理人(去重,且不包含当前用户自己)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/workflows/{instanceId}/hisActorsFreeFlow(完整:{runtime-context}/api/runtime/{applicationId}/workflows/{instanceId}/hisActorsFreeFlow,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
instanceId path string 流程实例Id

请求示例

GET /api/runtime/__APPID__/workflows/__INSTANCEID__/hisActorsFreeFlow HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataCollection<UserNode>,去重后的历史处理人节点集合(不含当前用户)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [ { "id": "__USERID__", "name": "李四", "loginNo": "lisi" } ],
  "errors": null
}


27. 获取流程指定审批人用户选择框列表

按文档 Id、流程 Id、节点 Id 查询该节点的候选审批人,支持按部门/角色/关键字过滤与分页。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/{flowId}/selectApprovers(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/{flowId}/selectApprovers,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
flowId path string 流程定义Id
nodeId query string 节点Id;若含 : 仅取冒号前部分
type query string 过滤类型:3=关键字;2=角色;1=部门(传给 StateMachineHelper.getPrincipalList
selectId query string 关键字 / 角色 Id / 部门 Id
pageSize query string 每页条数,默认 10
pageNum query string 当前页,默认 1

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/__FLOWID__/selectApprovers?nodeId=__NODEID__&type=3&selectId=zhang&pageNum=1&pageSize=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resourcedata:分页 Map,含以下键:

字段 类型 说明
datas array<UserNode> 当前页审批人节点列表(仅含 status==1 的启用用户,已按 orderByNo 升序排序)
pageCount int 总页数
linesPerPage int 每页条数
rowCount int 总记录数
pageNum int 当前页

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [ { "id": "__USERID__", "name": "张三", "loginNo": "zhangsan" } ],
    "pageCount": 3,
    "linesPerPage": 10,
    "rowCount": 25,
    "pageNum": 1
  },
  "errors": null
}


28. 获取流程定义列表

按应用 Id 分页查询流程定义模板列表(仅返回精简字段 id/name/subject)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/workflows/defi(完整:{runtime-context}/api/runtime/{applicationId}/workflows/defi,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
type query string 类型(源码方法签名 @RequestParam String type 强制必填;类级 @Parameters 未列出,据源码方法签名)
pageSize query string 每页条数,默认 10
pageNum query string 当前页,默认 1

请求示例

GET /api/runtime/__APPID__/workflows/defi?type=all&pageNum=1&pageSize=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resourcedata:分页 Map,含以下键:

字段 类型 说明
datas array<JSONObject> 流程定义精简对象列表,每项 {id, name, subject}
pageCount int 总页数
linesPerPage int 每页条数
rowCount int 总记录数
pageNum int 当前页

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [
      { "id": "__FLOWID__", "name": "请假流程", "subject": "请假申请单" }
    ],
    "pageCount": 1,
    "linesPerPage": 10,
    "rowCount": 1,
    "pageNum": 1
  },
  "errors": null
}


29. 获取流程指定抄送人用户选择框列表

按文档 Id、流程 Id、节点 Id 查询该节点的候选抄送人,支持按部门/角色/关键字过滤与分页。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/documents/{docId}/workflows/{flowId}/selectCirculators(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/{flowId}/selectCirculators,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
flowId path string 流程定义Id
nodeId query string 节点Id
type query string 过滤类型:3=关键字;2=角色;1=部门
selectId query string 关键字 / 角色 Id / 部门 Id
pageSize query string 每页条数,默认 10
pageNum query string 当前页,默认 1

请求示例

GET /api/runtime/__APPID__/documents/__DOCID__/workflows/__FLOWID__/selectCirculators?nodeId=__NODEID__&type=3&selectId=zhang HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resourcedata:分页 Map,键同 #27(datas/pageCount/linesPerPage/rowCount/pageNum)。

说明:据源码,datas 字段返回的是 List<UserVO>(未转换为 UserNode),与 selectApproversList<UserNode> 不同(源码 map.put("datas", datas) 中的 datas 是分页前的 List<UserVO> 变量名,并非分页后的 data),据源码如实记录。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [ { "id": "__USERID__", "name": "王五", "loginno": "wangwu", "status": 1 } ],
    "pageCount": 1,
    "linesPerPage": 10,
    "rowCount": 1,
    "pageNum": 1
  },
  "errors": null
}


30. 添加/补签意见

对指定流程实例追加补签意见(在已审批节点上补充签字/意见)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/workflows/{instanceId}/supplement(完整:{runtime-context}/api/runtime/{applicationId}/workflows/{instanceId}/supplement,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
instanceId path string 流程实例Id
comments query string 补签意见

请求示例

PUT /api/runtime/__APPID__/workflows/__INSTANCEID__/supplement?comments=补充意见 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,补签结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<补签结果字符串>", "errors": null }


31. 流程协办

将当前节点的处理协办给指定实例的相关协办人(共享处理权)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/workflows/{instanceId}/assist(完整:{runtime-context}/api/runtime/{applicationId}/workflows/{instanceId}/assist,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
instanceId path string 流程实例Id
attitude query string 协办意见

请求示例

PUT /api/runtime/__APPID__/workflows/__INSTANCEID__/assist?attitude=请协助处理 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,协办结果字符串。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<协办结果字符串>", "errors": null }


32. 流程协办加签

为指定文档当前节点追加协办审批人(加签)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/assist/addition(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/assist/addition,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
userIds body string(JSON) 加签用户Id集合(JSON 数组字符串,见请求体)

请求体

["__USERIDA__", "__USERIDB__"]

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/assist/addition HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

["__USERIDA__", "__USERIDB__"]

响应

结构:统一 ResourcedataString,加签结果字符串(由 WorkflowRunTimeService.addCoAuditor 返回)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<加签结果字符串>", "errors": null }


33. 流程主办加签

为指定文档当前节点追加主办审批人(加签)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/documents/{docId}/workflows/approver/addition(完整:{runtime-context}/api/runtime/{applicationId}/documents/{docId}/workflows/approver/addition,同位 /api/authtime/...
  • 鉴权:是(需 accessToken,据源码)
  • Tag:工作流执行模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
docId path string 文档Id(DES 加密密文)
userIds body string(JSON) 加签用户Id集合(JSON 数组字符串,结构同 #32)

请求体

["__USERIDA__", "__USERIDB__"]

请求示例

PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/approver/addition HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

["__USERIDA__", "__USERIDB__"]

响应

结构:统一 ResourcedataString,加签结果字符串(由 WorkflowRunTimeService.addAuditor 返回)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "<加签结果字符串>", "errors": null }

说明:源码方法 @Operation(summary) 文案误写为「流程协办加签」,实际方法名为 addAuditor(主办加签),路由为 /approver/addition,与 #32(addCoAuditor/assist/addition)形成协办/主办两条加签通道,据源码如实记录。