查看原文
其他

应用基础框架全面解析

许方杰 EAWorld 2018-12-19

转载本文需注明出处:微信公众号EAWorld,违者必究。


引言:


应用基础框架Coframe是EOS产品自带的开源应用基础框架,提供了资源管理、权限管理、用户以及角色管理等业务应用基础能力,用户可以根据自己的需要进行二次开发与扩展。本文向大家分享Coframe的主要功能和设计实现方案。


目录:


一、简介

二、系统资源

三、权限管理

四、组织管理


一、简介


应用基础框架也叫Coframe,是产品自带的开源应用基础框架,提供了一些基础功能,用户可以根据自己的需要进行二次开发与扩展。


Coframe提供3大核心功能:


  1. 系统资源:提供了功能菜单管理、字典码表、应用管理折几个应用框架基础能力。

  2. 权限管理:提供了基于Party(参与者) 的复杂权限计算模型和授权模型。

    基于参与者、资源与授权等概念可扩展开发出符合用户个性化需求的参与者模型。

  3. 组织管理:提供了机构、岗位、员工、 用户、工作组等组织机构相关管理功能,支持与已有业务系统对接,使得基于普元EOS Platform 8.0开发的应用可方便地使用同一套组织机构。

 

逻辑架构



逻辑架构图展示了基础应用框架的基本功能模块,前端Restful形式接口调用后端服务。


进程架构


Coframe集成部署示意图


应用基础框架有两种部署模式:微服务架构Coframe集成模式和单应用架构Coframe集成模式。


单应用架构很好理解,即直接使用Coframe源码或者jar包开发应用,后端只有一个server,而集成模式可以将应用要对外暴露的服务封装在Coframe中,这样Coframe可以对应用进行权限管理。前端使用VUE开发,可以很方便的使用源码进行二次开发。


数据模型


(可点击图片放大查看)


应用基础框架的数据模型即DB表结构,展示了主要的一些表结构,包括权限表,用户表等。用户可以很方便的进行二次开发扩展应用。


二、系统资源


菜单管理


菜单框架支持两级菜单,用户可以自定义菜单的路径和打开方式等。



应用基础框架提供了几个基础的菜单,用户可以在页面编辑菜单或者直接在数据库端编辑菜单。目前应用基础框架前端Ui支持二级菜单,用户可以根据自己的需求扩展到三级菜单。


字典码表


字典码表即为系统内部定义的具有业务属性的数据字典。



系统管理员可以配置字典类型和字典项,用于管理系统中的枚举类型的基础数据,并且支持excel导入导出。字典类型和字典数据均支持一级子项。


  • 字典类型:对数据进行分类管理

  • 字典数据项:需要管理的枚举数据


应用管理


应用管理又叫服务权限控制,是指在多应用系统以及单应用系统下,实现对应用的服务功能的权限控制。实现角色、用户、功能的灵活绑定。



在需要进行权限管理的功能接口方法定义上添加@TarestOperation注解,发布服务。


@RequestMapping("/say-hello")
@TarestService(group = "SP1", displayName = "服务提供组1", version = "1.0.0.0", groupName = "服务提供组1", name = "ISampleAppHello")
public interface ISampleAppHello {

    @GetMapping
    @TarestOperation(checkPermission=false,name="DEMO_001",displayName="功能1")
    String sayHello();
   
    /**
         * @TarestOperation 在@TarestOperation中默认是不进行权限管理的
          *                    通过设置checkPermission = true,打开权限控制功能
          * **/
         @GetMapping(value = "/user")
        @TarestOperation(checkPermission =true,name="DEMO_002",displayName="功能2")
    String insertDemo(@RequestParam String name, @RequestParam Integer age);
   
}

(左右滑动查看全部代码)


单应用系统即只有一个后端应用的系统,(直接以嵌入方式集成Coframe)无需新建应用。


多应用系统即有多个后端应用的系统,Coframe作为一个独立的应用部署的系统,需要在coframe中新建应用。如图所示:



三、权限管理


提供了基于Party(参与者) 的复杂权限计算模型和授权模型。


基于参与者、资源与授权等概念可扩展开发出符合用户个性化需求的参与者模型。


  • 角色:角色是Coframe一个重要的对象,也可以成为权限集,表示系统中权限一个子集,用于控制用户可以使用的功能集合,赋予用户一个角色表示给用户一定功能的使用权限。Coframe中角色的分配本身赋予某些用户,员工,机构等之外,还要向角色授予可访问某些功能,模块,表单,视图等资源的权限。拥有某角色的用户可访问角色被授予的资源的权限。

  • 用户:所有能登录系统的用户都是系统中的用户,需要增加登录账号有两种方式。一种是在用户管理中新增用户,第二种是在组织管理中新增员工时关联一个用户,如果用户的登录名不存在会创建一个新的用户。


用户管理



所有能登录系统的用户都是系统中的用户,需要增加登录账号有两种方式。一种是在用户管理中新增用户,第二种是在组织管理中新增员工时关联一个用户,如果用户的登录名不存在会创建一个新的用户。当Coframe使用IAM的统一认证登录的时候能够同步IAM端的同一租户下的用户信息。


Coframe的用户账号由其登录认证方式决定是本地创建的还是又IAM即同一认真平台同步过来的用户信息。


  • 本地登录:用户账号及其认证密码在本地存储,本地认证配置可以参考:http://t.cn/EUrzEtL

  • 单点登录:即与IAM集成的sso方式登录,可以参考:http://t.cn/EUrZPOs


授权管理


目前提供了菜单授权与服务授权,授权管理即将资源与参与者之间建立关系。如下图所示,菜单和应用:



即可以视为资源,而账号、角色、组织机构、工作中等,即可以视为参与者。授权表结构如下图所示:



此注解用来标志一个数据实体为授权实体,授权实体需要指定类型:资源、授权主体,比如:


@Entity
// 此实体名称为order,类型为resource
@AuthEntity(name = "order", type = AuthEntityType.RESOURCE)
@Table(name = "SAMPLE_ORDER")
public class SampleOrder {

    @Id
    @GeneratedValue
    private Long id;
   
    private String name;
   
    private Date date;
}

(左右滑动查看全部代码)


四、组织管理


机构管理



机构指企业的组织机构,一般包含机构、岗位、员工等信息。


机构管理通过对一棵机构人员树的维护把机构、岗位、人员等信息和关系维护好,并可设置这些组织对象的角色。



工作组管理



工作组与机构类似,是为了将项目组、工作组等临时性的组织机构管理起来,业务上通常工作组有一定的时效性,是一个非常设机构。


工作组是企业动态创建的组织机构分组,工作组下可以有子工作组、员工信息。


总结:



以上介绍了应用基础框架的主要基础功能,以及设计过程中的一些理念,比如授权模型等。

作为开源应用基础框架会随着规划发展不断完善,用户可以根据自身的需求来更改适配。也非常欢迎大家能够更多参与使其更加健壮。


精选提问:


问1:这个是一个前后端分离的项目吗 我看前端单独部署在nginx中。


是前后端分离的,前端是用VUE开发的。


问2:接入的SSO是支持CAS吗?如果是CAS的话,在前后端分离的项目在前端有什么好的设计吗?因为CAS一般基于fliter来接入CAS server的。


答:接入的SSO是Oauth2.0的,目前不支持CAS,可以参考。


问3:Coframe是开源的吗?可以商用吗?


答:一般对公司的客户是开源的,但是对外并没有公布源码(没有放在github之类的托管平台上面)。


问4:它是一个平台级的应用吗,我可以接入第三方的应用进来吗?


答:不是,它提供了类似菜单、授权等基础能力,可以基于源码二次开发,也可以基于jar开发自己的应用。


问5:目前最新版本是多少?授权用的是Shiro吗?


答:最新快照版本8.0.0-SNAPSHOT,目前准备开发8.0.0-LA2-SNAPSHOT。授权不是用的shiro,是基于参与者、资源与授权 这三种模型开发的授权方式。


推荐阅读

微服务之服务调用与安全控制

基于统一开发平台的微服务架构转型升级之路 | 某国有大型银行案例

普元微服务平台EOS Platform 8全新发布


关于作者许方杰,普元资深软件工程师,曾在华为负责项目核心模块开发,运维等,擅长Web、运维等领域技术,参与普元 EOS 8微服务平台应用基础框架(Coframe)的建设与实施。


关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。长按二维码关注!


课程预告! 12月21日(周五)下午14:30普元信息副总裁、软件产品部总经理王葱权为大家分享《数字时代大数据应用平台架构》,在此公众号回复“YG+微信号”马上入群并完成报名!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存