资源发布配置
智能表单本身不维护页面资源和资源的访问权限,而是依托于 sino-matrix 平台或者其他平台来实现的资源发布。
提示
本文重点介绍与 sino-matrix 集成使用时的资源发布配置。
1. 功能介绍
在发布表单的过程中,有一个非常关键的步骤,即资源发布,包括产生表单页面、系统角色和页面资源授权。
2. 与 sinomatrix 平台集成
2.1. 定义 uias 服务的配置
智能表单服务默认与 sino-matrix 平台中的 sino-matrix-uias
服务提供的接口进行交互,实现资源发布的。需要通过 sinoform.uias-server-uri
配置项指定 sino-matrix-uias
服务的地址,如下所示:
sinoform:
uias-server-uri: 127.0.0.1:18001
2.2. configs.systemId 配置项
此配置项用来配置表单资源挂载的根资源的 id,即 sino-matrix 平台系统管理中的子系统的 id。默认的配置如下:
configs:
systemId: 67250
在新搭建的 sino-matrix 中,默认会包含一个 平台产品集成示例
子系统,如下图所示:
如果您希望将表单挂载到您的业务子系统之下,可以通过 configs.systemId
来配置,如下所示:
configs:
systemId: 12345
2.3. 发布的资源可以在 sino-matrix 系统管理中查看
表单发布后的资源可以在 sino-matrix 的用户与授权中查看。
点击下面高亮的区块进入用户与授权:
查看资源的(系统角色的)授权:
上图中有三个固定的系统角色,即:
系统角色 | 可访问的表单页面 | 授权来源 |
---|---|---|
起草角色 | 表单的所有页面 | 表单流程中的起草节点上设置的负责人范围 |
办理角色 | 表单的待办、已办、查询列表页面 | 表单流程中所有节点上设置的负责人范围合集 |
查看角色 | 表单查询页面 | 表单流程中所有节点上设置的负责人范围和表单发布中设置的各种管理员的合集 |
提示
以上授权规则是智能表单内置实现的,不需要手动地在 sinomatrix 系统管理中设置。
提示
如果您发现表单资源的权限不正确,可以从上面的页面中查看一下授权是否正确。
3. 与第三方平台的资源服务集成
智能表单默认与 sinomatrix 统一授权服务集成,完成资源与授权管理。如果要接入第三方资源管理服务,请逐个实现以下接口。
3.1. 新增资源
3.1.1. 第三方接口说明
智能表单在新增应用以及在应用中新增分组时,均需要调用新增资源的接口添加对应的资源。
3.1.2. 智能表单配置
url:
# 第三方新增资源接口 - 示例配置
get-save-resource-url: http://192.168.90.110:19001/custom-resource-api/add-resource
3.1.3. 第三方接口约定
POST http://192.168.90.110:19001/custom-resource-api/add-resource?para=json数据
3.1.4. 请求参数说明
请求参数示例:
{
"author": "1",
"name": "未命名应用",
"subId": "67250",
"order": "after",
"superId": "0",
"resourceId": "4028d00e7d6f8e31017e67ea681a064b"
}
请求参数说明:
属性名 | 说明 |
---|---|
author | 创建资源的用户 id |
name | 新增资源名称 |
subId | 业务系统 id |
order | 新增资源所处的位置。 |
superId | 父级资源的 id。 |
resourceId | 新增资源位置的锚点资源 id |
其中 order
有三个值,分别是:after
、before
和 child
,详情如下:
order
为after
时,表示新增资源的位置是在锚点资源(由resourceId
指定)之后。order
为before
时,表示新增资源的位置是在锚点资源(由resourceId
指定)之前。order
为child
时,表示新增资源的位置是在父级资源(由superId
指定)之下。
3.1.5. 响应说明
{
"msg": "接口响应成功", // 响应信息
"resourceId": "4028daff826c19dd0182a0d891c30377", // 资源的id,若资源添加成功,需要返回此资源id
"status": "1" // 1-成功 0-失败
}
3.2. 查询所有资源接口
3.2.1. 第三方接口说明
智能表单需要通过此接口获取到资源树,在表单发布时,用户可以通过以下界面将表单对应的资源定位到合适的导航位置:
3.2.2. 智能表单配置
第三方资源服务接口配置项:
url:
get-send-resource-url: http://192.168.90.110:19001/custom-resource-api/all-resources
3.2.3. 第三方接口约定
- 请求类型:GET
- 请求参数:无
- 响应:json数据 - 详情见响应说明
- 请求示例:
GET http://192.168.90.110:19001/custom-resource-api/all-resources
3.2.3. 响应说明
资源对象属性如下:
属性名称 | 说明 |
---|---|
resourceId | 资源 id |
resourcePid | 父资源 id |
resourceName | 资源名称 |
3.3. 更新资源接口
3.3.1. 第三方接口说明
此接口用来更新资源名称的。应用名称变更时,需要调用此接口,以更新对应的资源名称。
3.3.2. 智能表单配置
url:
update-resource-url: http://192.168.90.110:19001/custom-resource-api/rename-resource
3.3.3. 第三方接口约定
POST http://192.168.90.110:19001/custom-resource-api/rename-resource?para=json数据
3.3.4. 请求参数说明
请求参数示例:
{
"resourceId": "4028daff826c19dd0182a976ff4d038c",
"name": "未命名应用-new",
"subId": "67250"
}
请求参数说明:
属性名 | 说明 |
---|---|
resourceId | 资源id |
name | 资源名称 |
subId | 系统id |
3.3.5. 响应说明
{
"status": "1",
"msg": "接口响应成功"
}
{
"status": "0",
"msg": "接口响应失败"
}
3.4. 删除资源接口
3.4.1. 第三方接口说明
该接口实现删除资源以及资源相关的权限数据的功能。
3.4.2. 智能表单配置
url:
remove-resource-url: http://192.168.90.110:19001/custom-resource-api/delete-resource
3.4.3. 第三方接口约定
- 请求类型:DELETE
- 请求参数:{resourceId} - 资源id
- 响应:json数据 - 详情见响应说明
- 请求示例:
DELETE http://192.168.90.110:19001/custom-resource-api/delete-resource/4028d00e7d6f8e31017e67ea681a064b
3.4.4. 响应说明
{
"status": "1",
"msg": "接口响应成功"
}
{
"status": "0",
"msg": "接口响应失败"
}
3.5. 获取子资源接口
3.5.1. 第三方接口说明
根据资源id 获取该资源id下的所有子资源id,子资源id按菜单显示顺序排序。
3.5.2. 智能表单配置
url:
get-resource-id-by-pid: http://192.168.90.110:19001/custom-resource-api/sub-resource-ids
3.5.3. 第三方接口约定
- 请求类型:GET
- 请求参数:pid - 父资源id
- 响应:json数据 - 详情见响应说明
- 请求示例:
GET http://192.168.90.110:19001/custom-resource-api/sub-resource-ids?pid=4028daff826c19dd0182a976ff4d038c
3.5.4. 响应说明
[
"id1",
"id2"
]
3.6. 移动资源接口
3.6.1. 第三方接口说明
移动资源位置。
3.6.2. 智能表单配置
url:
move-resource-url: http://192.168.90.110:19001/custom-resource-api/move-resource
3.6.3. 第三方接口约定
POST http://192.168.90.110:19001/custom-resource-api/move-resource?para=json数据
3.6.4. 请求参数说明
请求参数示例:
{
"author": "1",
"id": "4028daff826c19dd01827c79920600b9",
"order": "after",
"resourceId": "4028daff803cd55e01804b5860a8017a",
"subId": "67250",
"superId": "4028daff803cd55e01804695391a00bb"
}
请求参数说明:
属性名 | 说明 |
---|---|
author | 操作用户id |
id | 资源id |
order | 相对位置 |
resourceId | 相对资源id |
subId | 系统id |
superId | 父资源id |
3.6.5. 响应说明
{
"status": "1",
"msg": "接口响应成功"
}
{
"status": "0",
"msg": "接口响应失败"
}
3.7. 资源排序接口
3.7.1. 第三方接口说明
根据资源位置排序,功能与移动资源接口相同。
3.7.2. 智能表单配置
url配置为移动资源接口地址即可:
url:
sort-resource-url: http://192.168.90.110:19001/custom-resource-api/move-resource
3.8. 获取资源信息接口
3.8.1. 第三方接口说明
根据资源id,获取指定的资源信息。
3.8.2. 智能表单配置
url:
get-resource-info-url: http://192.168.90.110:19001/custom-resource-api/get-resource
3.8.3. 第三方接口约定
- 请求类型:GET
- 请求参数:rid - 资源id
- 响应:json数据 - 详情见响应说明
- 请求示例:
GET http://192.168.90.110:19001/custom-resource-api/get-resource?rid=4028daff826c19dd01827c79920600b9
3.8.4. 响应说明
响应示例:
{
"msg": "接口响应成功",
"sysResourceInfo": {
"resourceOrder": 32,
"resourceId": "4028daff82aaf66b0182e76cadb9003f",
"resourceContent": "",
"resourcePid": "4028daff803cd55e01804695391a00bb",
"resourceName": "未命名表单",
"resourcetypeId": "67252",
"isNavigation": "1",
"rtypeId": "1",
"treeId": "01550012",
"resourceCode": "c31b8abb19e145cdb3598c50842e32ea",
"isTab": "0",
"status": "1"
},
"status": "1"
}
响应说明:
属性名 | 说明 |
---|---|
msg | 响应信息 |
status | 状态 成功-1 失败-0 |
sysResourceInfo | 资源信息 |
3.9. 资源发布接口
3.9.1. 第三方接口说明
智能表单在发布资源时,需要通过该接口添加/更新/删除菜单资源、系统角色、资源与系统角色关系、系统角色与人/部门/业务角色/部门+业务角色的授权关系。
3.9.2. 智能表单配置
url:
# 第三方表单资源发布接口 - 示例配置
send-resource-url: http://192.168.90.110:19001/custom-resource-api/release-form
3.9.3. 第三方接口约定
POST http://192.168.90.110:19001/custom-resource-api/release-form?para=json数据
3.9.4. 请求参数说明 - 流程表单
流程表单请求参数说明:
属性名 | 说明 |
---|---|
applyDeptId | 发布人部门id |
applyDeptName | 发布人部门名称 |
applyUserId | 发布人用户id |
applyUserName | 发布人用户名 |
flowId | uuid - 每次请求的唯一uuid每次请求都会重新生成 |
flowType | 固定字符串参数9 |
id | uuid - 报文id |
position | 表单资源信息 |
position.code | uuid - 表单资源码 |
position.name | 表单名称 |
position.order | 相对位置(after/before/child) |
position.resourceId | 依赖资源的资源id |
position.resources | 表单资源的子资源列表 |
position.resources.[code] | uuid - 列表资源码 |
position.resources.[name] | 列表资源名称 草稿列表/待办列表/已办列表/查询列表 |
position.resources.[type] | 列表资源类型 起草-draft/待办-todo/已办-done/查询-query |
position.resources.[url] | 列表资源url 起草url - /intellisense-form/draftList/表单id 待办url - /intellisense-form/todoList/表单id 已办url - /intellisense-form/doneList/表单id 查询url - /intellisense-form/searchList/表单id |
position.url | 无流程表单资源url(流程表单此处为空) |
rlsyConfig | 系统角色与权限信息以及关联关系 |
rlsyConfig.[authorized] | 权限信息 |
rlsyConfig.[authorized.deptId] | 当前系统角色授权的部门id |
rlsyConfig.[authorized.deptRole] | 当前系统角色授权的部门+业务角色 |
rlsyConfig.[authorized.roleId] | 当前系统角色授权的业务角色id |
rlsyConfig.[authorized.user] | 当前系统角色授权的用户信息 |
rlsyConfig.[resourceCode] | 列表资源码(对应position.resources.[code]的值) |
rlsyConfig.[rlsyCode] | uuid - 系统角色码 |
rlsyConfig.[rlsyName] | 系统角色的名称 |
rlsyConfig.[type] | 系统角色类型 起草角色-create/办理角色-processor/查询角色-view |
subId | 系统id |
time | 时间(yyyy-MM-dd HH:mm:ss) |
title | 表单名称 |
url | 表单url - 废弃 |
workId | 表单id |
workName | 表单名称(同title) |
3.9.5. 请求参数说明 - 非流程表单(无流程表单/角色授权表单/仪表盘)
非流程表单请求参数说明:
属性名 | 说明 |
---|---|
applyDeptId | 发布人部门id |
applyDeptName | 发布人部门名称 |
applyUserId | 发布人用户id |
applyUserName | 发布人用户名 |
ext | 类型 无流程表单-noFlow/仪表盘-dashboard/角色授权-roleManage |
flowId | uuid - 每次请求的唯一uuid每次请求都会重新生成 |
flowType | 固定字符串参数9 |
position | 表单资源信息 |
position.code | uuid - 表单资源码 |
position.name | 表单名称 |
position.order | 相对位置(after/before/child) |
position.resourceId | 依赖资源的资源id |
position.resources | 流程表单资源的子资源列表 (无流程表单此处为空) |
position.url | 无流程表单资源url(流程表单此处为空) |
rlsyConfig | 系统角色与权限信息以及关联关系 |
rlsyConfig.[authorized] | 权限信息 |
rlsyConfig.[authorized.deptId] | 当前系统角色授权的部门id |
rlsyConfig.[authorized.deptRole] | 当前系统角色授权的部门+业务角色 |
rlsyConfig.[authorized.roleId] | 当前系统角色授权的业务角色id |
rlsyConfig.[authorized.user] | 当前系统角色授权的用户信息 |
rlsyConfig.[resourceCode] | 列表资源码(对应position.resources.[code]的值) |
rlsyConfig.[rlsyCode] | uuid - 系统角色码 |
rlsyConfig.[rlsyName] | 系统角色的名称 |
rlsyConfig.[type] | 系统角色类型 起草角色-create/办理角色-processor/查询角色-view |
subId | 系统id |
time | 时间(yyyy-MM-dd HH:mm:ss) |
title | 表单名称 |
url | 表单url - 废弃 |
workId | 表单id |
workName | 表单名称(同title) |
3.9.6. 响应说明
响应示例:
{
"msg": "接口响应成功",
"resourceId": "4028daff826c19dd0182a0d891c30377",
"status": "1"
}
响应说明:
属性名 | 说明 |
---|---|
msg | 响应信息 |
resourceId | 表单资源的id,若资源添加成功,需要返回此id |
status | 状态 1-成功 非1-失败 |
4. 监听资源发布
如果已经与 sino-matrix 或者第三方的资源管理服务做完集成后,还需要往另一个系统(例如门户系统)中推送已经发布的资源,则需要用到监听资源发布的接口。典型场景:将发布的表单应用推送到第三方平台的门户上作为一个快捷链接显示。
4.1. 第三方接口配置
使用 url.resource-publish-url
配置项来定义业务系统的扩展接口,如下所示:
url:
resource-publish-url: http://192.168.90.110:19001/extend-resource-publish
特别注意
需要特别注意,url.resource-publish-url
不能在 sinoform
的下面。
错误的写法:
sinoform:
uias-server-uri: 127.0.0.1:18001
url:
resource-publish-url: http://192.168.90.110:19001/extend-resource-publish
正确的写法:
sinoform:
uias-server-uri: 127.0.0.1:18001
url:
resource-publish-url: http://192.168.90.110:19001/extend-resource-publish
4.2. 资源发布扩展接口约定
此扩展接口需要符合如下接口约定:
POST [扩展资源的链接,您可以自行设计链接路径,如http://192.168.90.110:19001/extend-resource-publish]
请求体是 application/json
格式的,示例数据如下:
{
"title": "国际合作",
"id": "1",
"resourceId": "统一授权资源id",
"url": "/intellisense-form/app/1/home",
"type": "app",
"children": [{
"title": "流程审批",
"id": "2",
"resourceId": "统一授权资源id",
"url": "/intellisense-form/app/1/home/form/2",
"type": "form",
"children": [{
"title": "草稿箱",
"id": "3",
"resourceId": "统一授权资源id",
"type": "page",
"url": "/intellisense-form/app/1/home/form/2/draft-list",
"auth": {
"deptRole": [{
"roleId": "11212121212",
"deptIds": ["deptid1", "deptid2"]
}],
"deptId": [
"4028d00e717bd7e10171b608abaf02da",
"4028d00e717bd7e10171f21b8fc1043d"
],
"roleId": ["4028d00e6ec42073016ec46896840014"],
"user": [
{
"deptId": "18043",
"userId": "4028d0136b7919e7016b791f50c10004"
},
]
},
}, {
"title": "查询",
"id": "4",
"resourceId": "统一授权资源id",
"type": "page",
"url": "/intellisense-form/app/1/home/form/2/search-list"
}]
}, {
"title": "人员资料库",
"id": "7",
"resourceId": "统一授权资源id",
"type": "group",
"url": "/intellisense-form/app/1/home/group/7",
"children": [{...}]
}, {
"title": "出国(境)团组",
"id": "5",
"resourceId": "统一授权资源id",
"type": "noflow",
"url": "/intellisense-form/app/1/home/form/5/no-flow-list"
}, {
"title": "统计分析",
"id": "6",
"resourceId": "统一授权资源id",
"type": "dashboard",
"url": "/intellisense-form/app/1/home/dashboard/6"
}]
}
字段说明:
- title - 资源名称
- id - 表单或者应用的 id(对于流程表单的草稿箱、查询列表等自动生成的资源,其 id 为 ${表单id}_${页面英文名称})
- resourceId - 统一授权资源 id
- iconUrl - 应用图标链接
- type - 资源类型
- app - 应用
- form - 表单
- dashboard - 仪表盘
- noflow - 无流程表单
- group - 分组
- url - 页面对应的链接
- auth - 页面对应的授权信息
- deptRole - 部门下的业务角色,如授权办公室(包含子孙部门)下的处员可以起草表单数据
- deptId - 部门,如授权给办公室(包含子孙部门)所有人员使用
- roleId - 业务角色,如授权给所有处员使用
- user - 人员,如授权给张三、李四
- children - 包含的子资源
注意:不是所有级别的资源都有 auth,一般是最底层的资源才有 auth。上层资源的授权范围包含子孙资源的授权范围。
如果处理成功,返回成功的响应码即可,响应体有无都可以。