服务元信息文件及表说明

服务元信息: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。

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

  2. 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"
                }
  1. 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是当前角色的权限集合
      

说明:

  1. 一个菜单项对应一个权限,

  2. 后台api同样可以在权限中描述,后台api描述的时候如果是同域可以进行鉴权

  3. 如果权限中有需要根据url参数区分权限项的情况,请求的时候或者描述菜单项的时候添加参数 $pparms 来声明是权限参数。比如

  4. 在定义角色时,可以使用系统内置的角色。系统内置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

results matching ""

    No results matching ""

    results matching ""

      No results matching ""