跳转至

流程查询(WorkflowQuery)

用于查询流程相关的文档详情、流程状态、各类操作面板(提交/回退/催办)、节点信息与候选审批人,以及流程模板信息等。本控制器所有端点均为只读查询,不改变流程实例的流转状态。

  • 接口类型:REST 资源
  • 基址:/api/rest/bpm/query(produces=APPLICATION_JSON_VALUE)
  • Tag:流程查询模块

公共说明

  • 鉴权:所有端点均需在 query 中携带 accessToken(访问令牌)和 userCode(执行用户账号)。鉴权机制详见 ../index.md。
  • 应用 ID 加密:applicationId 参数需经 **DES 加密**后以密文形式传入,服务端按当前执行用户解密(DesUtil.decryptTextByUserId);请勿传明文 applicationId。
  • Document 请求体:POST /submission 的 @RequestBody 为 Document 包体(由 AbstractRESTController.parseDocument() 解析),结构如下:
    {
      "id": "<文档Id,必填,不能为空>",
      "summary": "<摘要,可选>",
      "items": {
        "<字段名>": "<字段值>",
        "...": "..."
      }
    }
    
    id 缺失时返回 errcode=406「请求包体id属性不能为空」。
  • 响应:统一返回 Resource 结构(见 ../index.md「统一响应结构」)。除 /document(data 为 PureDocument)、/states、/remindpanel(data 为 JSON 数组)外,其余端点 data 为 com.alibaba.fastjson.JSONObject。
  • 状态码:所有端点成功返回 HTTP 200;业务错误通过 errcode 体现(错误码表见 ../index.md)。

1. 获取文档详情

根据文档 Id 获取流程文档详情,并绑定当前用户可审批的流程实例(含多流程判定)。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/document(完整:/api/rest/bpm/query/document)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
id query string 是 文档Id(报文Id)
userCode query string 是 用户编码(用户账号)

请求示例

GET /api/rest/bpm/query/document?accessToken=xxx&applicationId=xxx&id=__8Z4wBAAAAAC3Z6QAA&userCode=admin HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:PureDocument,文档对象(含 state 当前流程实例与 mulitFlowState 是否存在多个可执行实例的标记)。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "id": "__8Z4wBAAAAAC3Z6QAA",
    "summary": "差旅报销申请",
    "state": { "id": "instance-001", "flowName": "差旅报销流程" },
    "mulitFlowState": false
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "文档不存在",
  "data": null,
  "errors": null
}


2. 流程状态

查询指定流程实例的当前流程状态信息。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/states(完整:/api/rest/bpm/query/states)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
instanceId query string 是 流程实例Id

请求示例

GET /api/rest/bpm/query/states?accessToken=xxx&applicationId=xxx&instanceId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONArray,流程状态信息集合(由 service.queryWorkflow() 返回的 JSONObject 经 net.sf.json.JSONArray.fromObject(...) 转换得到)。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": [
    { "nodeid": "node-start", "state": "completed", "label": "开始" },
    { "nodeid": "node-a", "state": "running", "label": "部门审批" }
  ],
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程实例不存在",
  "data": null,
  "errors": null
}


3. 获取流程提交面板

根据当前文档与流程实例,计算并返回流程提交(审批下一步)面板的可选节点与审批人。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/submission(完整:/api/rest/bpm/query/submission)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id
flowId query string 是 流程定义模型Id
postBody body string(Document) 是 请求包体内容(Document JSON 字符串)

请求示例

POST /api/rest/bpm/query/submission?accessToken=xxx&applicationId=xxx&userCode=admin&instanceId=xxx&flowId=xxx HTTP/1.1
Content-Type: application/json

{
  "id": "__8Z4wBAAAAAC3Z6QAA",
  "summary": "差旅报销申请",
  "items": {
    "金额": "1200.00",
    "事由": "客户拜访"
  }
}

请求体

Document 结构,详见本页「公共说明 · Document 请求体」。

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,提交面板信息(含可提交的下一节点及候选审批人列表,并追加 instanceId 字段)。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "instanceId": "xxx",
    "nextNodes": [
      { "nodeid": "node-a", "name": "部门审批", "actors": [{ "id": "u001", "name": "李伟" }] }
    ]
  },
  "errors": null
}

失败示例:

{
  "errcode": 406,
  "errmsg": "请求包体id属性不能为空",
  "data": null,
  "errors": null
}


4. 获取流程回退面板

根据当前流程实例,计算并返回流程回退(驳回上一步)面板的可选节点。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/back(完整:/api/rest/bpm/query/back)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id

说明:本端点虽为 POST,但**无请求体**(@RequestBody 缺省)。

请求示例

POST /api/rest/bpm/query/back?accessToken=xxx&applicationId=xxx&userCode=admin&instanceId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,回退面板信息(含可回退的目标节点列表,并追加 instanceId 字段)。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "instanceId": "xxx",
    "backNodes": [
      { "nodeid": "node-start", "name": "开始" }
    ]
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程实例不存在",
  "data": null,
  "errors": null
}


5. 获取流程催办面板

获取指定流程实例的催办面板,返回当前待办(运行中)节点列表,用于选择催办目标节点。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/remindpanel(完整:/api/rest/bpm/query/remindpanel)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id

请求示例

GET /api/rest/bpm/query/remindpanel?accessToken=xxx&applicationId=xxx&userCode=admin&instanceId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONArray,每个元素为 { id, name },分别对应当前运行中节点的节点Id与节点名称。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": [
    { "id": "node-a", "name": "部门审批" },
    { "id": "node-b", "name": "财务复核" }
  ],
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程实例不存在",
  "data": null,
  "errors": null
}


6. 获取指定节点信息

获取当前请求发起人在指定流程实例中节点(任务)的信息。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/taskInfo(完整:/api/rest/bpm/query/taskInfo)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id

请求示例

GET /api/rest/bpm/query/taskInfo?accessToken=xxx&userCode=admin&instanceId=xxx&applicationId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,当前用户在该实例下的节点(任务)信息。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "instanceId": "xxx",
    "task": { "nodeid": "node-a", "name": "部门审批", "state": "running" }
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程实例不存在",
  "data": null,
  "errors": null
}


7. 获取指定节点数量

获取当前请求发起人在指定流程实例中节点(任务)的数量。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/taskNum(完整:/api/rest/bpm/query/taskNum)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id

请求示例

GET /api/rest/bpm/query/taskNum?accessToken=xxx&userCode=admin&instanceId=xxx&applicationId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,当前用户在该实例下的节点(任务)数量信息。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "instanceId": "xxx",
    "total": 2
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程实例不存在",
  "data": null,
  "errors": null
}


8. 获取指定实例节点审批人

根据流程实例与节点实例Id,获取该运行时节点的当前审批人。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/nowActor(完整:/api/rest/bpm/query/nowActor)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
instanceId query string 是 流程实例Id
nodeRTId query string 是 节点实例Id(NodeRT 主键)

请求示例

GET /api/rest/bpm/query/nowActor?accessToken=xxx&instanceId=xxx&nodeRTId=xxx&applicationId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,指定节点实例的当前审批人信息。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "nodeRTId": "xxx",
    "actors": [
      { "id": "u001", "name": "李伟", "department": "财务部" }
    ]
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "节点实例不存在",
  "data": null,
  "errors": null
}


9. 获取指定节点候选审批人

根据流程模板节点定义与流程实例,获取该节点的候选审批人列表(用于提交流程时选择审批人)。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/allActor(完整:/api/rest/bpm/query/allActor)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
userCode query string 是 用户编码(用户账号)
instanceId query string 是 流程实例Id
nodeId query string 是 节点定义Id
flowId query string 是 流程模板Id

请求示例

GET /api/rest/bpm/query/allActor?accessToken=xxx&applicationId=xxx&nodeId=xxx&flowId=xxx&instanceId=xxx&userCode=admin HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,指定节点的候选审批人列表。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "nodeId": "xxx",
    "actors": [
      { "id": "u001", "name": "李伟" },
      { "id": "u002", "name": "张敏" }
    ]
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "节点定义不存在",
  "data": null,
  "errors": null
}


10. 获取流程信息

根据流程模板Id获取流程定义模型信息(节点、连线、表单绑定等)。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/flowData(完整:/api/rest/bpm/query/flowData)
  • 鉴权:是(需 accessToken)
  • Tag:流程查询模块

请求参数

参数名 位置 类型 必填 说明
accessToken query string 是 访问令牌
applicationId query string 是 应用Id(DES 加密密文)
flowId query string 是 流程模板Id

请求示例

GET /api/rest/bpm/query/flowData?accessToken=xxx&applicationId=xxx&flowId=xxx HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:JSONObject,流程模板(定义模型)信息。

成功示例:

{
  "errcode": 0,
  "errmsg": "success",
  "data": {
    "id": "xxx",
    "name": "差旅报销流程",
    "subject": "差旅报销申请",
    "nodes": [
      { "id": "node-start", "name": "开始", "type": "start" },
      { "id": "node-a", "name": "部门审批", "type": "task" }
    ]
  },
  "errors": null
}

失败示例:

{
  "errcode": 404,
  "errmsg": "流程模板不存在",
  "data": null,
  "errors": null
}