服务元信息文件及表说明
服务元信息:serviceMetaInfo,包括4种信息,分别是菜单、角色、权限、授权。在开发时,服务元信息存储在一个个的serviceMetaInfo.json文件中。在运行时,调整的服务元信息存储在manager_smi_provider表中,菜单信息存储在manager_service表中
1 服务元信息文件
1.1 w文件的serviceMetaInfo
系统给每个w文件(目录名中包括dialog的目录下的w文件除外),生成服务元信息
1.2 自定义的serviceMetaInfo
在角色权限设置中,可以添加角色,给角色分配权限,这些都会记录在serviceMetaInfo.json文件中
1.3 形成统一的serviceMetaInfo
"serviceInfo": {
"name": "{serviceName}",
"label": "{serviceLabel}"
},
"menu": {
"title": "{serviceLabel}",
"color": "#3494F8",
"children": [
{
"userAdded": 1,
"id": "C9C90DFBA6F000011E38A82012981C33",
"title": "分类菜单",
"parentTitle": "g412",
"icon": "dataControl dataControl-c",
"color": "#3494F8",
"types": [
"pc",
"mobile",
"func",
"tab"
],
"url": "/entry/mobileapp/mobile/infoPublish/infoPub.wtype=tab&$pparams=tab",
"order": 0,
"ext": {
"tabBar": {
"iconPath": "./images/work1.png",
"selectedIconPath": "./images/work2.png"
}
}
},
{
"userAdded": 1,
"id": "C9C90E2CF060000186CDCCC01CAE1C11",
"title": "菜单2",
"parentTitle": "g412",
"icon": "dataControl dataControl-c",
"color": "#3494F8",
"types": [
"pc",
"mobile",
"func",
"tab"
],
"url": "/g412/mobileapp/mobile/shangpin_tjyd.w?type=tab&$pparams=tab",
"originUrl": "/g412/mobileapp/mobile/shangpin_tjyd.w?type=tab&$pparams=tab",
"order": 3,
"mode": 0,
"ext": {
"tabBar": {
"iconPath": "./images/work1.png",
"selectedIconPath": "./images/work2.png"
}
}
}
],
"ext": { },
"order": 0,
"types": [ ]
},
"authorize": {
"permissions": [
{
"type": "tab",
"condition": {
"module": "g412",
"authTables": [ ],
"authProcedures": [ ]
},
"name": "tab_g412_authTables",
"id": "C9C90EA736E000013AE61083CBC011F0",
"code": "*:C9C90EA736E000013AE61083CBC011F0:tab"
},
{
"type": "sql",
"condition": {
"module": "g412",
"procedures": [ ]
},
"name": "sql_g412_authProcedures",
"id": "C9C90EA736E000011644A77313F01C31",
"code": "*:C9C90EA736E000011644A77313F01C31:sql"
},
{
"code": "*:/g412/mobileapp/mobile/fenlei_tj.w?:get",
"name": "分类菜单",
"id": "C9C90DFBA6F000011E38A82012981C33",
"type": "menu",
"userAdded": 1
},
{
"code": "*:/g412/mobileapp/mobile/shangpin_tjyd.w?:get",
"name": "菜单2",
"id": "C9C90E2CF060000186CDCCC01CAE1C11",
"type": "menu",
"userAdded": 1
}
],
"roles": [ ]
}
}
在ide里面,通过请求 https://testzx02286-zx0228-ide.c.xcaas.net/serviceMetaInfo 查看当前应用的serviceMetaInfo
发布后,通过请求 https://entryzx02286-vip.c.xcaas.net/test/serviceMetaInfo 查看每个应用的serviceMetaInfo
serviceMetaInfo包括3个节点:serviceInfo、menu和authorize。
serviceInfo节点描述应用的基本信息 name用于应用注册,需保证唯一。
menu节点用来描述应用的菜单信息
menu里的第一级title定义一级菜单名称,通过children定义二级菜单或一级菜单中的菜单项。
(1)types设置菜单项的类型有(pc、pcx、mobile、func、widget、process、openPage、iframe、tab),可由下面的选项组合而成:
* pc、pcx和func代表是桌面端菜单,在桌面门户中可见,如果是流程的功能需要加上process * mobile和func代表是移动端菜单,在移动门户中可见,如果是流程的功能需要加上process,如果是移动门户导航栏需要加上tab * pc、pcx和widget代表桌面端门户首页内容块 * openPage代表会通过window.open打开对应url,url中会添加token参数 * iframe代表会在门户的功能区域,通过iframe打开 注意:如果一个功能桌面和移动端都有types中把代码移动和桌面的都配置上,不是定义两个menu
(2)color:移动端门户菜单图标颜色
(3)icon:门户菜单图标
(4)title:菜单名
(5)url:菜单url
* 内部页面格式为:/微服务名/mobileapp/mobile/XXX(页面有分组XXX是:分组目录/文件名,没有分组是:文件名),文件名是带.w后缀的 * 外部页面格式为:从http或者https开始的完整路径 如果types中配置了tab,url上需要加上参数type=tab&$pparams=tab,如:/entry/mobileapp/mobile/infoPublish/infoPub.w?type=tab&$pparams=tab
(6)ext:定义扩展信息
* 如要添加tabBar图标 ,属性内容描述参考小程序tabBar格式,例如 `{"tabBar":{"iconPath":"/xxx/a.png"}}` * 如要设置widget的更多按钮打开的功能如下:
{
"code" : "wf_finishNotice",
"more" : {
"title" : "任务中心",
"url" : "/wf/x5/UI2/main/taskCenter.w?parameter=finished"
}
authorize节点用来描述应用的权限信息
permissions部分用来描述应用的所有权限列表
id:权限项id,自己定义 code:菜单项的权限中间为权限的url信息,对应菜单项中url的值;API的权限中间为API的请求路径。前面都是*:开头的,后面就是:请求类型,如get、post name:权限项名称 type:菜单为menu,API为service,sql为数据权限。type的值是可以自己定义的,主要就是前面的code项要描述正确
roles部分是当前应用的角色列表
id:角色id code:角色code name:角色名 permissions是当前角色的权限集合
说明:
一个菜单项对应一个权限,
后台api同样可以在权限中描述,后台api描述的时候如果是同域可以进行鉴权
如果权限中有需要根据url参数区分权限项的情况,请求的时候或者描述菜单项的时候添加参数 $pparms 来声明是权限参数。比如
http://console.newdao.net/order?type=user 这样一个请求的url,鉴权的时候会看是否有 /order的api权限.
http://console.newdao.net/order?type=user&$pparams=type 这样一个请求的url,鉴权的时候会看是否有 /order?type=user的api权限.
在定义角色时,可以使用系统内置的角色。系统内置3个角色如下:
- authc是注册账户角色,用户登录后都可以访问这个角色的权限
- anonymous是匿名用户角色,用户未登录时可以访问这个角色的权限
- admin是系统管理员角色,拥有全部权限
2 存储服务元信息的表
2.1 存储在运行时调整的服务元信息
在运行时,还可以通过应用资源管理功能,调整服务元信息。
同ide里面的角色权限设置功能一样,可以添加角色,添加权限,给角色分配权限,这些都会记录在manager_smi_provider表中
manager_smi_provider的结构如下
列 | 模型名 | 字段名 | 说明 |
---|---|---|---|
主键 | fid | fid | |
配置名称 | name | name | 服务名-1表示草稿,服务名-0表示已发布 |
服务名称 | service_name | service_name | |
服务标签 | service_label | service_label | |
服务元数据 | service_meta_info | service_meta_info | 调整的serviceMetaInfo信息 |
配置状态 | status | status | |
版本 | fversion | fversion |
2.2 存储在运行时调整的菜单信息
在运行时,还可以通过功能树配置功能,调整菜单信息。
当桌面端和移动端的菜单名称、层级需要调整时,使用功能树配置进行调整,调整后的数据存储在manager_caidangl表中
manager_caidangl的结构如下
列 | 模型名 | 字段名 | 说明 |
---|---|---|---|
主键 | fid | fid | |
菜单种类 | fcontext | fcontext | pc表示桌面端菜单,mobile表示移动端菜单 |
自动合并 | fautomerge | fautomerge | |
原菜单JSON | fyuan | fyuan | |
修改后菜单JSON | fxiugai | fxiugai | |
版本 | fbanben | fbanben |
菜单JSON来自/entry/manager/menus请求返回的JSON
[{
"title": "菜单目录", //目录名称
"hidden": " ", //是否隐藏,空格表示显示,all表示隐藏
"children": [{ //包括的菜单
ext: "{}" //扩展信息
types: ["pc", "func"] //菜单类型
icon: "dataControl dataControl-c" //菜单图标
color: "#3494F8" //菜单颜色(移动端)
title: "组织管理" //菜单名称
originUrl: "/entry/opm-mobileapp/opm-mobile/org2.w" //原始url,即serviceMetaInfo中定义的url
url: "/entry/opm-pcapp/opm-pc/org2.w" //当前运行环境的url,桌面端和移动端不同
order: 0, //目前未使用
hidden: " ", //是否隐藏,空格表示显示,all表示隐藏
mode: 0 //0表示内部页面,-2表示外部页面
}]
}]
保存菜单(包括服务注册或刷新)后,将serviceMetaInfo中的菜单信息写入manager_service表
manager_service的结构如下
列 | 模型名 | 字段名 | 说明 |
---|---|---|---|
主键 | id | id | |
显示名称 | label | label | 服务标签 |
服务地址 | address | address | |
根路径 | name | name | 服务名 |
菜单信息 | menu | menu | 服务的菜单信息 |
子路由 | subroutes | subroutes | |
顺序值 | order_number | order_number | |
服务类型 | type | type | |
网关配置 | gatewayConfig | gateway_config | |
附件信息 | extInfo | ext_info | |
最后修改时间 | lastModifiedDate | last_modified_date | |
外部服务密钥 | apisecret | apisecret | |
版本 | version | version |