服务元信息

服务元信息:serviceMetaInfo,包括三种信息,分别是菜单、角色、权限。

  • 开发时,服务元信息存储在一个个的 serviceMetaInfo.json 文件中
    • 在 IDE 的页面配置中,默认角色分配
      • 选择无:在 w 文件的服务元信息文件中生成菜单信息
      • 选择全体成员(分配给注册用户角色):在 w 文件的服务元信息文件中生成菜单信息、菜单权限项和注册用户角色,注册用户角色包括菜单权限项
      • 选择特定部门(创建功能角色):在 w 文件中服务元信息文件中生成菜单信息、菜单权限项和一个功能角色,该角色包括菜单权限项
    • 在 IDE 的角色权限设置中,添加应用角色,以及包含的权限,配置内容存储在 xxx.user.serviceMetaInfo.json 文件中
  • 在企业门户应用中。通过“服务注册”注册服务时,将角色和权限写入到企业门户的角色表和权限表中
  • 在企业门户应用中,通过“系统管理-权限管理-应用资源管理”调整应用角色和权限后,调整内容存储在 manager_smi_provider 表中
  • 在企业门户应用中,通过“系统管理-系统配置-功能树配置”调用菜单信息后,调整内容存储在 manager_service 表中

服务元信息文件

在 IDE 中,服务元信息文件以散文件的形态存在,有两种服务元信息文件

  • 一种是 W 文件的服务元信息文件,是系统自动生成的,和 W 文件同名
  • 一种是通过“角色权限设置”生成的服务元信息文件,命名规则为:xxx.user.serviceMetaInfo.json

w 文件的 serviceMetaInfo

系统给每个 w 文件(目录名中包括 dialog 的目录下的 w 文件除外),生成服务元信息

自定义的 serviceMetaInfo

在角色权限设置中,可以添加角色,给角色分配权限,这些都会记录在 xxx.user.serviceMetaInfo.json 文件中

合并 serviceMetaInfo

通过“域名/serviceMetaInfo”访问时,返回所有 xxx.serviceMetaInfo.json 合并后的服务元信息

    "serviceInfo": {
        "name": "{serviceName}", 
        "label": "{serviceLabel}"
    }, 
    "menu": {
        "title": "{serviceLabel}", 
        "color": "#3494F8", 
        "children": [
            {
                "ext": {},
                "types": [
                    "pcx",
                    "func"
                ],
                "title": "组织管理",
                "url": "/entry/opm-mobileapp/opm-mobile/org.w"
            },
            {
                "ext": {
                    "code": "wf_waitTask",
                    "more": {
                        "title": "任务中心",
                        "url": "/entry/wf-mobileapp/wf-mobile/taskCenter.w?parameter=waiting"
                    }
                },
                "types": [
                    "widget",
                    "pcx"
                ],
                "title": "我的待办",
                "url": "/entry/wf-mobileapp/wf-mobile/widget/waitTask.w"
            },
            {
                "ext": {
                    "tabBar": {
                        "iconPath": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><svg viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18 6H8C6.89543 6 6 6.89543 6 8V18C6 19.1046 6.89543 20 8 20H18C19.1046 20 20 19.1046 20 18V8C20 6.89543 19.1046 6 18 6Z\" fill=\"none\"  stroke-width=\"3\" stroke-linejoin=\"round\"/><path d=\"M18 28H8C6.89543 28 6 28.8954 6 30V40C6 41.1046 6.89543 42 8 42H18C19.1046 42 20 41.1046 20 40V30C20 28.8954 19.1046 28 18 28Z\" fill=\"none\"  stroke-width=\"3\" stroke-linejoin=\"round\"/><path d=\"M40 6H30C28.8954 6 28 6.89543 28 8V18C28 19.1046 28.8954 20 30 20H40C41.1046 20 42 19.1046 42 18V8C42 6.89543 41.1046 6 40 6Z\" fill=\"none\"  stroke-width=\"3\" stroke-linejoin=\"round\"/><path d=\"M40 28H30C28.8954 28 28 28.8954 28 30V40C28 41.1046 28.8954 42 30 42H40C41.1046 42 42 41.1046 42 40V30C42 28.8954 41.1046 28 40 28Z\" fill=\"none\"  stroke-width=\"3\" stroke-linejoin=\"round\"/></svg>"
                    }
                },
                "types": [
                    "mobile",
                    "tab"
                ],
                "title": "工作台",
                "url": "/entry/mobileapp/mobile/work.w"
            }
        ], 
        "ext": { }, 
        "types": [ ]
    }, 
    "authorize": {
        "permissions": [
            {
                "code": "*:/entry/opm-mobileapp/opm-mobile/org.w:get",
                "ui": false,
                "name": "组织管理",
                "id": "opm_mobileapp_mobile_org",
                "type": "menu"
            },
            {
                "code": "*:/entry/wf-mobileapp/wf-mobile/taskCenter.w:get",
                "ui": false,
                "name": "任务中心",
                "id": "wf_permission_001",
                "type": "menu"
            }
        ], 
        "roles": [ ]
    }
}

查看服务元信息

在 IDE 里面,通过请求 https://IDE域名/serviceMetaInfo 查看当前应用的 serviceMetaInfo,例如:https://testzx02286-zx0228-ide.c.xcaas.net/serviceMetaInfo

发布后,通过请求 https://门户域名/应用服务名/serviceMetaInfo 查看应用的 serviceMetaInfo,例如:https://entryzx02286-vip.c.xcaas.net/test/serviceMetaInfo

结构说明

serviceMetaInfo 包括3个节点:基本信息 serviceInfo、菜单信息 menu 和权限 authorize。

基本信息

serviceInfo 节点描述应用的基本信息。name 用于应用注册,需保证唯一

菜单信息

menu 节点用来描述应用的菜单信息

  • title:菜单名
  • children:下级菜单
  • icon:菜单图标,字符串类型,支持使用内置图标和自定义图标
    • 桌面端和移动端的内置图标不同,两个端都有页面,且使用内置图标,则需要分别设置图标,例如:{"pcx":"AccountBookOutlined","mobile":"star-o"}
    • 只有一个端的页面,或使用自定义图标,只写图标名,例如:AccountBookOutlined
  • color:图标颜色,字符串类型
    • 桌面端门户将颜色用于菜单图标的颜色,移动端门户将颜色用于菜单图标的背景色
    • 只写颜色,两个端使用相同的颜色,例如:#fd0808
    • 两个端使用不同的颜色,则需要分别设置,例如:{"pcx":"#fd0808","mobile":"#3494F8"}
  • url:菜单 url
    • 内部页面格式为:/服务名/mobileapp/mobile/xxx(页面有分组 xxx 是:分组目录/文件名,没有分组是:文件名),文件名是带.w 后缀的,例如:/react/mobileapp/mobile/org.w
    • 外部页面格式为:从 http 或者 https 开始的完整路径
    • 如果 types 中配置了 tab,url 上需要加上参数 type=tab&$pparams=tab,例如:/entry/mobileapp/mobile/infoPublish/infoPub.w?type=tab&$pparams=tab
  • types 菜单类型,数组
    • pcx:桌面端页面
    • pc:经典桌面端页面
    • mobile:移动端页面
    • func:菜单
    • widget:小部件
    • process:流程
    • openPage:在浏览器中使用新页打开当前页面
    • iframe:使用 iframe 打开当前页面
    • tab:移动端导航栏页面
    • 例如
      • pcx 和 func 代表是桌面端菜单,在桌面门户中可见,如果是流程的功能需要加上 process
      • mobile 和 func 代表是移动端菜单,在移动门户中可,如果是流程的功能需要加上 process,如果是移动门户导航栏需要加上 tab
      • pcx 和 widget 代表桌面端门户首页小部件
      • openPage 代表会通过 window.open 打开对应 url,url 中会添加 token 参数
      • iframe 代表会在门户的功能区域,通过 iframe 打开
      • 一个功能,桌面端和移动端都有页面,types 写为 pcx、mobile、func
  • ext:菜单扩展信息
    • 移动导航栏配置信息
      • 导航栏图标支持图片和 svg 图标
        • 使用图片需要设置两张图片,一个是未选中时图标,一个是选中时图标,例如:{"tabBar":{"iconPath":"/xxx/a.png","selectIconPath":"/xxx/b.png"}}
        • 使用 svg 图标,设置一个图标即可,选中时会使用主题色渲染图标,例如:{"tabBar":{"iconPath":"<svg/>"}}
      • tabBar.iconPath:未选中时的图标
      • tabBar.selectedIconPath:选中时的图标
      • tabBar.homePage:默认“移动首页导航”中的第一页作为主页,设置为 true,当前页面会作为主页
    • 小部件配置信息
      • code:小部件唯一编码
      • showTitle:是否展示标题栏
      • more.title:更多页面标题
      • more.url:更多页面链接地址(当链接地址为空时,标题栏不显示更多按钮)

权限信息

authorize 节点用来描述应用的权限信息

  • permissions 部分用来描述应用的所有权限项
    • id:权限项 id,自己定义
    • code:权限项编码,参考《权限》中权限编码的说明
    • name:权限项名称
    • type:菜单为 menu,API 为 service,数据权限为 sql。type 的值是可以自己定义的,主要就是前面的 code 项要描述正确
  • roles 部分是当前应用的角色列表
    • id:角色 id
    • code:角色 code
    • name:角色名
    • permissions:当前角色包含的权限

说明:

  1. 一个菜单项可对应一个权限
  2. 后台 api 同样可以在权限中描述,后台 api 描述的时候如果是同域可以进行鉴权
  3. 如果权限中有需要根据 url 参数区分权限项的情况,请求的时候或者描述菜单项的时候添加参数 $pparms 来声明是权限参数。比如

  4. 在定义角色时,可以使用系统内置的角色。系统内置3个角色如下:

    • authc:注册用户角色,用户登录后自动具有这个角色
    • anonymous:匿名用户角色,用户未登录时自动具有这个角色
    • admin:系统管理员角色,拥有全部权限

存储服务元信息的表

存储在运行时调整的服务元信息

在运行时,可以通过应用资源管理功能,调整服务元信息。

1719228918450

同 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

存储在运行时调整的菜单信息

在运行时,可以通过功能树配置功能,调整菜单信息。

1719228981532

当桌面端和移动端的菜单名称、层级需要调整时,使用功能树配置进行调整,调整后的数据存储在 manager_caidangl 表中

manager_caidangl 的结构如下

模型名 字段名 说明
主键 fid fid
菜单种类 fcontext fcontext pcx 表示桌面端菜单,mobile 表示移动端菜单
自动合并 fautomerge fautomerge
原菜单JSON fyuan fyuan
修改后菜单JSON fxiugai fxiugai
版本 fbanben fbanben

菜单 JSON 来自 /entry/manager/menus 请求返回的 JSON

    [{
        "title": "菜单目录",          //目录名称
        "hidden": " ",               //是否隐藏,空格表示显示,all 表示隐藏
        "children": [{               //包括的菜单
            ext: "{}"                //扩展信息
            types: ["pcx", "func"]    //菜单类型
            icon: "AccountBookOutlined"         //菜单图标
            color: "#3494F8"                    //菜单颜色
            title: "组织管理"                    //菜单名称
            originUrl: "/entry/opm-mobileapp/opm-mobile/org.w"   //原始 url,即 serviceMetaInfo 中定义的 url
            url: "/entry/opm-pcapp/opm-pc/org.w"  //当前运行环境的 url,桌面端和移动端不同
            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

results matching ""

    No results matching ""