工作流执行(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[].userids、jumpToPerson[].userids、circulatorInfo等)按业务约定为登录账号 / 内码字符串(不一定 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/errors。Resource.data的类型见各端点说明;多数工作流操作端点的data为流程服务返回的String(多为提示文案 / 节点跳转 JSON 序列化结果)。 _flowType参数:服务端在submitWorkflow(80)/backWorkflow(81)/retracementWorkflow(85)中将流程操作类型写入ParamsTable,供表单/校验脚本识别当前流程动作。- HTTP 状态码:所有端点类级标注
@ResponseStatus(HttpStatus.OK),成功默认 200。业务错误由响应体errcode体现:表单/子表单校验不通过errcode=4001、errors数组承载明细(每项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,再计算流程走向。
请求示例¶
POST /api/runtime/__APPID__/documents/__DOCID__/trail HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
{
"document": { "items": { "金额": "1200.00" } }
}
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:List<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...
响应¶
结构:统一 Resource。
data:JSONObject,流程状态结构(节点 / 审批人 / 状态等,由 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...
响应¶
结构:统一 Resource。
data:Collection<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...
响应¶
结构:统一 Resource。
data:JSONObject,流程图结构(节点 / 连线 / 当前位置高亮等,由 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...
响应¶
结构:统一 Resource。
data:JSONObject,流程图结构(由 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__"
}
响应¶
结构:统一 Resource。
data:String,流程发起结果(流程服务 initiate 返回的提示或序列化结果)。
成功示例:
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...
响应¶
结构:统一 Resource。
data:List<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。
请求示例¶
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" } } }
响应¶
结构:统一 Resource。
data:JSONObject,提交面板数据(下一节点 / 审批人 / 按钮等,由 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" } } }
响应¶
结构:统一 Resource。
data:JSONArray,发起面板列表(每个元素为一个可发起的流程模板与首节点信息,由 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": "同意"
}
响应¶
结构:统一 Resource。
data:String,流程提交结果(流程服务返回的提示或序列化结果)。
成功示例:
失败示例(未选择审批节点):
失败示例(表单/子表单校验不通过):
{
"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": {} } }
响应¶
结构:统一 Resource。
data:JSONObject,回退面板数据(可回退节点列表等,由 WorkflowRunTimeService.backPanels 返回)。
成功示例:
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...
响应¶
结构:统一 Resource。
data:List<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": {} } }
响应¶
结构:统一 Resource。
data:JSONObject,跳转面板数据(由 WorkflowRunTimeService.jumpPanels 返回)。
成功示例:
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": "退回修改"
}
响应¶
结构:统一 Resource。
data:String,回退结果字符串。
成功示例:
说明:若文档
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" } ]
}
响应¶
结构:统一 Resource。
data:String,跳转结果字符串(底层复用 WorkflowRunTimeService.backWorkflow)。
成功示例:
失败示例(子表单校验不通过):
{
"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...
响应¶
结构:统一 Resource。
data:String,撤回结果字符串。
成功示例:
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...
响应¶
结构:统一 Resource。
data:String,挂起结果字符串。
成功示例:
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...
响应¶
结构:统一 Resource。
data:String,恢复结果字符串。
成功示例:
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...
响应¶
结构:统一 Resource。
data:String,终止结果字符串。
成功示例:
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(签名)。
请求示例¶
PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/remind HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
{ "attitude": "请尽快处理", "nodertIds": ["__NODERTID1__"], "signatureJson": "" }
响应¶
结构:统一 Resource。
data:String,催办结果字符串。
成功示例:
失败示例(未选择催办节点):
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": "同意"
}
响应¶
结构:统一 Resource。
data:String,提交结果字符串。
成功示例:
失败示例(未选择审批人):
{ "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": "退回"
}
响应¶
结构:统一 Resource。
data:String,回退结果字符串。
成功示例:
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 后发起。
说明:请求体中
$.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" } }
}
响应¶
结构:统一 Resource。
data:String,发起结果字符串。
成功示例:
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": "办结" }
响应¶
结构:统一 Resource。
data:String,结束结果字符串。
成功示例:
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 后调用流程服务。
请求示例¶
PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/approvers HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
{ "auditorList": ["__USERIDA__", "__USERIDB__"] }
响应¶
结构:统一 Resource。
data:String,更新结果字符串。
成功示例:
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...
响应¶
结构:统一 Resource。
data:Collection<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...
响应¶
结构:统一 Resource。
data:分页 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...
响应¶
结构:统一 Resource。
data:分页 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...
响应¶
结构:统一 Resource。
data:分页 Map,键同 #27(datas/pageCount/linesPerPage/rowCount/pageNum)。
说明:据源码,
datas字段返回的是List<UserVO>(未转换为UserNode),与selectApprovers的List<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...
响应¶
结构:统一 Resource。
data:String,补签结果字符串。
成功示例:
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...
响应¶
结构:统一 Resource。
data:String,协办结果字符串。
成功示例:
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 数组字符串,见请求体) |
请求体¶
请求示例¶
PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/assist/addition HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
["__USERIDA__", "__USERIDB__"]
响应¶
结构:统一 Resource。
data:String,加签结果字符串(由 WorkflowRunTimeService.addCoAuditor 返回)。
成功示例:
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) |
请求体¶
请求示例¶
PUT /api/runtime/__APPID__/documents/__DOCID__/workflows/approver/addition HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
["__USERIDA__", "__USERIDB__"]
响应¶
结构:统一 Resource。
data:String,加签结果字符串(由 WorkflowRunTimeService.addAuditor 返回)。
成功示例:
说明:源码方法
@Operation(summary)文案误写为「流程协办加签」,实际方法名为addAuditor(主办加签),路由为/approver/addition,与 #32(addCoAuditor、/assist/addition)形成协办/主办两条加签通道,据源码如实记录。