跳转至

流程中心运行时(FlowCenterRunTimeController)

流程中心(FlowCenter)运行时接口:发起菜单(含常用/置顶维护)、待办/经办/抄送的导航与列表数据、待办全部已读。是前台「流程中心」页面渲染与交互的核心控制器。

  • 接口类型:REST 资源(@RestController 继承 AbstractRuntimeController,类级 produces = APPLICATION_JSON_VALUE
  • 基址${myapps.context-path.runtime:}/api/runtime
  • Tag:流程中心运行时模块

公共说明

  • 鉴权(据源码):类级基址 /api/runtime,所有端点位于 /api/runtime/**,在 RestSecurityHandlerInterceptor 覆盖范围内,且不在豁免名单(豁免仅覆盖 /api/runtime/login.*/api/runtime/dingding/authlogin/api/runtime/synchronization.* 等,详见 login.md「公共说明 · 鉴权」)。拦截器走 Security.getUserIdFromToken(request),未取到再尝试 Security.getDebugUserIdFromToken(request),两者皆无则拒绝。故需 accessToken(或 debugToken),可通过 Cookie / 请求头 / query 参数任一方式传递。控制器内 getUser() 必须能取到非空 WebUser,否则在 DesUtil.decryptTextByUserId(..., getUser().getId()) 时即抛 NPE。
  • 路径变量 {applicationId}:当端点路径含此变量时为必填,经 DES 加密(按当前执行用户密钥),服务端在方法入口处 DesUtil.decryptTextByUserId(applicationId, getUser().getId()) 解密。例外:#2 getPendingNavs、#3 getProcessedNavs、#4 getCarboncopyNavs、#6 allRead 不含 {applicationId} 路径变量;其中 #2/#3/#4 的 applicationId 通过 query 参数(required=false)传入,#6 由服务端按当前用户的企业域遍历所有应用。
  • 响应结构:统一 Resource(见 ../index.md「统一响应结构」),字段为 errcode/errmsg/data/errorsResource.data 的类型见各端点说明。
  • 列表数据加密回写:#5 getPendings、#7 getProcesseds、#8 getCarboncopy 在返回前会遍历 data.datas 列表,对每行 docId(支持 xxx--sub 父子格式)按当前用户密钥重新 DES 加密后回写。
  • HTTP 状态码:所有端点类级标注 @ResponseStatus(HttpStatus.OK),成功默认 200。AbstractRuntimeController 的全局异常处理覆盖 RuntimeException/Exception(500)、ResourceNotFoundException(404)、MethodArgumentTypeMismatchException(40035)、PathNotFoundException(406)、OBPMValidateException(500)。错误码表见 ../index.md

1. 获取发起菜单

获取当前用户在指定应用下的发起菜单(可按常用、移动端等条件过滤)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/flowcenters/startmenus(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/startmenus
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
isUsual query boolean 是否常用
isUsualList query boolean 是否常用的添加列表
isMobile query boolean 是否移动端

请求示例

GET /api/runtime/__APPID__/flowcenters/startmenus?isUsual=true&isMobile=false HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataList<StartMenuNode>,发起菜单节点列表(已按用户权限过滤)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "id": "__MENUID__", "name": "请假申请", "applicationId": "__APPID__" }
  ],
  "errors": null
}


2. 获取待办导航

获取当前用户的待办分类导航(按应用/流程等维度统计)。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/flowcenters/navs/pendings(完整:{runtime-context}/api/runtime/flowcenters/navs/pendings
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId query string 应用Id(DES 加密密文,按当前用户密钥解密)

请求示例

GET /api/runtime/flowcenters/navs/pendings?applicationId=__APPID__ HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataList<Map<String, Object>>,待办导航分组列表(每项含分组名、计数等,由服务层 FlowCenterRumTimeService.getPendingNavs 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "applicationId": "__APPID__", "applicationName": "OA", "count": 5 }
  ],
  "errors": null
}


3. 获取经办导航

获取当前用户的经办(已处理)分类导航。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/flowcenters/navs/processeds(完整:{runtime-context}/api/runtime/flowcenters/navs/processeds
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId query string 应用Id(DES 加密密文,按当前用户密钥解密)

请求示例

GET /api/runtime/flowcenters/navs/processeds?applicationId=__APPID__ HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataList<Map<String, Object>>,经办导航分组列表(由服务层 FlowCenterRumTimeService.getProcessedNavs 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "applicationId": "__APPID__", "applicationName": "OA", "count": 12 }
  ],
  "errors": null
}


4. 获取抄送导航

获取当前用户的抄送分类导航,可按已读状态过滤。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/flowcenters/navs/carboncopy(完整:{runtime-context}/api/runtime/flowcenters/navs/carboncopy
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId query string 应用Id(DES 加密密文,按当前用户密钥解密)
isread query boolean 是否已读

请求示例

GET /api/runtime/flowcenters/navs/carboncopy?applicationId=__APPID__&isread=false HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataList<Map<String, Object>>,抄送导航分组列表(由服务层 FlowCenterRumTimeService.getCarboncopyNavs 返回)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "applicationId": "__APPID__", "applicationName": "OA", "count": 3 }
  ],
  "errors": null
}


5. 获取待办数据

按应用 Id 分页查询当前用户的待办列表,支持按主题、流程、发起人过滤。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/flowcenters/pendings(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/pendings
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
title query string 主题内容(服务端将 % 转义为 &#37;
initiatorId query string 发起人Id
flowId query string 流程Id
flowname query string 流程名称
pageNo query int 当前页,默认 1
linesPerPage query int 每页显示条数,默认 10
isMobile query boolean 是否移动端

请求示例

GET /api/runtime/__APPID__/flowcenters/pendings?title=请假&pageNo=1&linesPerPage=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataMap<String, Object>,分页结果,含 datas(行列表,每行 docId 已按当前用户密钥重新 DES 加密,支持 xxx--sub 父子格式)等服务层返回的分页字段。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [
      { "docId": "__SEALED_DOCID__", "title": "请假申请", "initiatorName": "张三" }
    ]
  },
  "errors": null
}


6. 标记所有待办为已读

将当前用户在企业域下所有应用(排除系统类型应用)的待办全部标记为已读。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/flowcenters/pendings/allRead(完整:{runtime-context}/api/runtime/flowcenters/pendings/allRead
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

说明:虽为 GET 请求,但服务端有副作用(批量更新已读状态),据源码如实记录。

请求参数

无。

请求示例

GET /api/runtime/flowcenters/pendings/allRead HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,成功为 "success";若服务端抛异常返回 errcode=500 + 异常信息。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "success", "errors": null }

失败示例

{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


7. 获取经办数据

按应用 Id 分页查询当前用户的经办(已处理)列表,支持按主题、流程、发起人、是否我处理、完成状态过滤。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/flowcenters/processeds(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/processeds
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
title query string 主题内容(服务端将 % 转义为 &#37;
flowId query string 流程Id
initiatorId query string 发起人Id
flowname query string 流程名称
isMyWorkFlow query boolean 是否我处理
status query string 完成状态
pageNo query int 当前页,默认 1
linesPerPage query int 每页显示条数,默认 10

请求示例

GET /api/runtime/__APPID__/flowcenters/processeds?isMyWorkFlow=true&status=completed&pageNo=1&linesPerPage=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataMap<String, Object>,分页结果,含 datas(行列表,每行 docId 已按当前用户密钥重新 DES 加密,支持 xxx--sub 父子格式)等服务层返回的分页字段。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [
      { "docId": "__SEALED_DOCID__", "title": "请假申请", "status": "completed" }
    ]
  },
  "errors": null
}


8. 获取抄送数据

按应用 Id 分页查询当前用户的抄送列表,支持按主题、流程、发起人、是否已读过滤。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/flowcenters/carboncopy(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/carboncopy
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
title query string 主题内容(服务端将 % 转义为 &#37;
flowId query string 流程Id
initiatorId query string 发起人Id
flowname query string 流程名称
isMyWorkFlow query boolean 是否我处理(注意:源码调用服务层时硬编码传 false,据源码)
isRead query boolean 是否已读
pageNo query int 当前页,默认 1
linesPerPage query int 每页显示条数,默认 10

请求示例

GET /api/runtime/__APPID__/flowcenters/carboncopy?isRead=false&pageNo=1&linesPerPage=10 HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataMap<String, Object>,分页结果,含 datas(行列表,每行 docId 已按当前用户密钥重新 DES 加密,支持 xxx--sub 父子格式)等服务层返回的分页字段。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "datas": [
      { "docId": "__SEALED_DOCID__", "title": "请假申请", "isRead": false }
    ]
  },
  "errors": null
}


9. 新建常用发起菜单

将指定发起菜单添加到当前用户的常用列表(应用维度的 UserDefined 配置)。若已有 UserDefined 则追加,否则新建一条 UserDefined

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/{applicationId}/flowcenters/startMenus/{id}/usual(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/startMenus/{id}/usual
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
id path string 发起菜单Id

请求示例

POST /api/runtime/__APPID__/flowcenters/startMenus/__MENUID__/usual HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,固定为 "成功"

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "成功", "errors": null }


10. 更新常用发起菜单(点击次数)

将指定发起菜单的点击次数 count 自增 1;若用户尚无 UserDefined 或常用列表为空,则按全部发起菜单初始化常用列表,命中 id 的初始计数为 1,其余为 0。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/{applicationId}/flowcenters/startMenus/{id}/usual(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/startMenus/{id}/usual
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
id path string 发起菜单Id

请求示例

PUT /api/runtime/__APPID__/flowcenters/startMenus/__MENUID__/usual HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,固定为 "成功"

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "成功", "errors": null }


11. 删除常用发起菜单

将指定发起菜单从当前用户的常用列表中移除。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/{applicationId}/flowcenters/startMenus/{id}/usual(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/startMenus/{id}/usual
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
id path string 发起菜单Id

请求示例

DELETE /api/runtime/__APPID__/flowcenters/startMenus/__MENUID__/usual HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 ResourcedataString,固定为 "成功"(即使 UserDefined 不存在或常用列表为空,亦返回 "成功",据源码)。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "成功", "errors": null }


12. 置顶 / 取消置顶发起菜单

切换指定发起菜单的置顶状态(写入当前用户应用维度的 UserDefined.usualStartMenus 中对应项的 isTop 字段)。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/{applicationId}/flowcenters/startMenus/{id}/top(完整:{runtime-context}/api/runtime/{applicationId}/flowcenters/startMenus/{id}/top
  • 鉴权:是(需 accessToken,据源码)
  • Tag:流程中心运行时模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id(DES 加密密文)
id path string 发起菜单Id
isTop query boolean 是否置顶

请求示例

PUT /api/runtime/__APPID__/flowcenters/startMenus/__MENUID__/top?isTop=true HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

响应

结构:统一 Resourcedatanull

成功示例

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