跳转至

设计时大屏页面管理(BigScreenDesignTimeController)

大屏页面(BigScreen)设计时资源管理:页面的增删改查(含批量删除)、页面图表数据查询(Feign 转发到 runtime),以及大屏资源文件的上传与下载。

  • 接口类型:REST 资源
  • 基址${myapps.context-path.designer:}/api/designtime/applications(类级 @RequestMappingproduces = APPLICATION_JSON_VALUE
  • Tag:设计时-大屏模块

公共说明

  • 鉴权:是(需 designerToken)。控制器继承自 AbstractDesignTimeController(基类为 @RestController),通过 Security.getDesignerIdFromToken(request) 从 designerToken JWT 中解析设计器用户。鉴权机制详见 index.md「鉴权说明」。
  • 路径变量{applicationId}{pageId}{id}{componentId}{fileName} 均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。
  • 响应:除上传/下载外为统一 Resource(见 ../index.md「统一响应结构」)。成功 errcode=0;保存类接口捕获 OBPMValidateException(如「名称已经存在!」)时返回 errcode=40001,其他异常默认 errcode=500errmsg 为异常信息。
  • HTTP 方法:受 CommonSecurityFilter 限制,仅允许 GET/POST/HEAD/OPTIONS
  • HTTP 状态码:新建/更新页面接口返回 201 Created@ResponseStatus),列表/详情/删除/图表数据接口 200 OK;统一 Resource 仍以 errcode 表达业务结果。上传/下载端点直接返回 ResponseEntity,不走统一 Resource
  • 请求体约定:新建/更新页面接收原始 JSON 字符串(@RequestBody String content,反序列化为 BigScreen);批量删除接收 JSON 字符串数组(@RequestBody String content,由 JsonPath 解析为 List<String>)。

1. 获取页面列表

分页获取指定应用下的大屏页面列表,可按名称查询。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/bigscreen(完整:{designer-context}/api/designtime/applications/{applicationId}/bigscreen
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
name query string 按页面名称查询关键字
requestType query string 请求类型(形参声明,未实际参与过滤)
status query string 状态(形参声明,未实际参与过滤)
pageNo query int 当前页数(缺省 1
linesPerPage query int 每页行数(缺省 10

说明:requestType/status 形参在控制器中声明但未传入服务层;保留以便后续扩展。

请求示例

GET /api/designtime/applications/{applicationId}/bigscreen?name=&pageNo=1&linesPerPage=10 HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataDataPackage<BigScreen>(含分页字段与 datas)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "linesPerPage": 10,
    "pageNo": 1,
    "pageCount": 1,
    "rowCount": 2,
    "datas": [
      { "id": "...", "name": "页面名称", "applicationid": "...", "parentId": "...", "templateContext": "...", "...": "..." }
    ]
  },
  "errors": null
}
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


2. 获取页面详情

按页面Id获取完整大屏页面对象。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/bigscreen/{pageId}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
pageId path string 页面Id

响应

dataBigScreen 完整对象(含 templateContext 设计器 JSON、uri 缓存路径等)。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "applicationid": "...", "parentId": "...", "templateContext": "...", "...": "..." }, "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


3. 新建页面

在指定应用下新建大屏页面。请求体反序列化为 BigScreen,强制将 applicationid/parentId 设为当前应用Id,再做同名校验(OBPMValidateExceptionerrcode=40001)后保存。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/{applicationId}/bigscreen
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
content body string(JSON) 页面对象 JSON

请求体

对应 BigScreen 对象的 JSON(含 nametemplateContext 等;applicationid/parentId 由服务端覆盖)。

响应

dataJSONObject,仅含 id(新建页面Id)。HTTP 状态码 201 Created

{ "errcode": 0, "errmsg": "ok", "data": { "id": "<pageId>" }, "errors": null }
失败示例(重名等):
{ "errcode": 40001, "errmsg": "名称已经存在!", "data": null, "errors": null }
失败示例(其他异常):
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


4. 更新页面

按页面Id更新大屏页面。服务端先读取旧页面并克隆,再覆盖 nametemplateContext(清空 uri 缓存),同名校验通过后调用 updateid 以路径变量为准。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/{applicationId}/bigscreen/{pageId}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
pageId path string 页面Id
content body string(JSON) 页面对象 JSON(至少含 nametemplateContext

响应

datanull(成功)。HTTP 状态码 201 Created(源码沿用 @ResponseStatus(CREATED),虽然语义为更新)。

{ "errcode": 0, "errmsg": "ok", "data": null, "errors": null }
失败示例(重名等):
{ "errcode": 40001, "errmsg": "名称已经存在!", "data": null, "errors": null }
失败示例(其他异常):
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


5. 删除页面(可批量)

按页面Id数组批量删除大屏页面(含路径信息收集)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/{applicationId}/bigscreen
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
content body string(JSON) 页面Id数组(JSON 数组字符串,由 JsonPath 解析为 List<String>

请求体

["<pageId1>", "<pageId2>"]

响应

dataString,固定为 "删除成功"

{ "errcode": 0, "errmsg": "ok", "data": "删除成功", "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


6. 获取页面图表数据

按页面Id、组件Id、域Id获取大屏组件的图表数据。该接口通过 RuntimeFeignService 转发到 runtime 服务查询实际业务数据,返回结构以 runtime 端为准。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/bigscreen/{id}/components/{componentId}/data
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
id path string 页面Id
componentId path string 大屏组件Id
domainId query string 域Id(标注 @RequestParam,默认必填)

请求示例

GET /api/designtime/applications/{applicationId}/bigscreen/{id}/components/{componentId}/data?domainId=<domainId> HTTP/1.1

响应

data:透传 runtime 返回的 Resource.data(图表组件数据,结构以 runtime 实际返回为准)。

{ "errcode": 0, "errmsg": "ok", "data": "<图表数据>", "errors": null }

7. 上传大屏资源文件

上传一个大屏资源文件(图片等)到指定应用的工作区资源目录,返回访问该文件的下载URI。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/{applicationId}/bigscreen/upload(完整:{designer-context}/api/designtime/applications/{applicationId}/bigscreen/upload
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
file body(form-data) file 待上传的文件(@RequestParam("file") MultipartFile

请求示例

POST /api/designtime/applications/{applicationId}/bigscreen/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

响应

结构:直接返回 ResponseEntity<FileResponse>(HTTP 200),不走统一 Resource 封装bodyFileResponse,结构 {fileName, fileDownloadUri, fileType, size}。其中 fileDownloadUri 固定为 /designer/api/designtime/applications/{applicationId}/bigscreen/download/{fileName}

{
  "fileName": "<存储后的文件名>",
  "fileDownloadUri": "/designer/api/designtime/applications/{applicationId}/bigscreen/download/<fileName>",
  "fileType": "image/png",
  "size": 12345
}

8. 下载大屏资源文件

按文件名下载此前上传的大屏资源文件,以 attachment 形式返回二进制流。

  • 接口类型:REST 资源(二进制)
  • 请求方式GET
  • 请求路径/{applicationId}/bigscreen/download/{fileName:.+}(完整:{designer-context}/api/designtime/applications/{applicationId}/bigscreen/download/{fileName:.+}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-大屏模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
fileName path string 文件名(:.+ 正则占位允许含 .

说明:fileName 路径变量使用 :.+ 正则,避免 Spring MVC 将扩展名误当作内容协商后缀而截断。

请求示例

GET /api/designtime/applications/{applicationId}/bigscreen/download/<fileName> HTTP/1.1

响应

结构ResponseEntity<Resource>(HTTP 200),不走统一 Resource 封装。 - Content-Type:根据 Files.probeContentType 探测,探测失败时回落 application/octet-stream。 - Content-Dispositionattachment; filename="<fileName>"。 - body:文件二进制流(org.springframework.core.io.Resource)。