您好,登錄后才能下訂單哦!
轉載本文需注明出處:微信公眾號EAWorld,違者必究。
引言:
應用基礎框架Coframe是EOS產品自帶的開源應用基礎框架,提供了資源管理、權限管理、用戶以及角色管理等業務應用基礎能力,用戶可以根據自己的需要進行二次開發與擴展。本文向大家分享Coframe的主要功能和設計實現方案。
目錄:
一、簡介
二、系統資源
三、權限管理
四、組織管理
應用基礎框架也叫Coframe,是產品自帶的開源應用基礎框架,提供了一些基礎功能,用戶可以根據自己的需要進行二次開發與擴展。
Coframe提供3大核心功能:
系統資源:提供了功能菜單管理、字典碼表、應用管理折幾個應用框架基礎能力。
權限管理:提供了基于Party(參與者) 的復雜權限計算模型和授權模型。
基于參與者、資源與授權等概念可擴展開發出符合用戶個性化需求的參與者模型。
組織管理:提供了機構、崗位、員工、 用戶、工作組等組織機構相關管理功能,支持與已有業務系統對接,使得基于普元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是Oauth3.0的,目前不支持CAS,可以參考。
問3:Coframe是開源的嗎?可以商用嗎?
答:一般對公司的客戶是開源的,但是對外并沒有公布源碼(沒有放在github之類的托管平臺上面)。
問4:它是一個平臺級的應用嗎,我可以接入第三方的應用進來嗎?
答:不是,它提供了類似菜單、授權等基礎能力,可以基于源碼二次開發,也可以基于jar開發自己的應用。
問5:目前最新版本是多少?授權用的是Shiro嗎?
答:最新快照版本8.0.0-SNAPSHOT,目前準備開發8.0.0-LA2-SNAPSHOT。授權不是用的shiro,是基于參與者、資源與授權 這三種模型開發的授權方式。
關于作者:許方杰,普元資深軟件工程師,曾在華為負責項目核心模塊開發,運維等,擅長Web、運維等領域技術,參與普元 EOS 8微服務平臺應用基礎框架(Coframe)的建設與實施。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。