應用基礎框架全面解析
轉載本文需註明出處:微信公眾號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即同一認真平臺同步過來的使用者資訊。
本地登入:使用者賬號及其認證密碼在本地儲存,本地認證配置可以參考:
單點登入:即與IAM整合的sso方式登入,可以參考:
授權管理
目前提供了選單授權與服務授權,授權管理即將資源與參與者之間建立關係。如下圖所示,選單和應用:
即可以視為資源,而賬號、角色、組織機構、工作中等,即可以視為參與者。授權表結構如下圖所示:
此註解用來標誌一個資料實體為授權實體,授權實體需要指定型別:資源、授權主體,比如:
@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,是基於參與者、資源與授權 這三種模型開發的授權方式。
關於作者:許方傑,普元資深軟體工程師,曾在華為負責專案核心模組開發,運維等,擅長Web、運維等領域技術,參與普元 EOS 8微服務平臺應用基礎框架(Coframe)的建設與實施。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562043/viewspace-2285791/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AdaBoost演算法解密:從基礎到應用的全面解析演算法解密
- 收藏: 全面解析FPGA基礎知識FPGA
- scrapy框架簡介和基礎應用框架
- Util應用框架基礎(七) - 快取框架快取
- Util應用框架基礎(一) - 依賴注入框架依賴注入
- Util應用框架基礎(五) - 異常處理框架
- Spring原始碼解析之基礎應用(二)Spring原始碼
- Spring原始碼解析之基礎應用(三)Spring原始碼
- MVC與三層框架|Spring的基礎應用MVC框架Spring
- 全面解析快取應用經典問題快取
- shell基礎應用
- Sentinel基礎應用
- echarts基礎應用Echarts
- flash基礎應用
- Util應用框架基礎(六) - 日誌記錄(一) - 正文框架
- KMeans演算法全面解析與應用案例演算法
- Util應用框架基礎(三) - 面向切面程式設計(AspectCore AOP)框架程式設計
- Windows應用程式基礎Windows
- Ubuntu Server 基礎應用UbuntuServer
- python基礎應用Python
- 大模型基礎應用框架(ReACTSFTRAG)技術創新及零售業務落地應用大模型框架React
- Util應用框架基礎(二) - 物件到物件對映(AutoMapper)框架物件APP
- Util應用框架基礎(六) - 日誌記錄(三) - 寫入 Seq框架
- Util應用框架基礎(六) - 日誌記錄(四) - 寫入 Exceptionless框架Exception
- [原始碼解析] PyTorch 分散式(4)------分散式應用基礎概念原始碼PyTorch分散式
- C++ 運算子全解析:從基礎概念到實際應用C++
- nginx的基礎應用(續)Nginx
- Linux應用——程序基礎Linux
- 太強了,全面解析快取應用經典問題快取
- EF框架基礎框架
- 華夏航空全面採用AWS構建雲基礎架構架構
- RAG應用開發實戰(01)-RAG應用框架和解析器框架
- 基於業務的Web應用框架 SimpleFrameworkWeb框架Framework
- 解析分散式應用框架Ray架構原始碼分散式框架架構原始碼
- Linux下Nginx基礎應用LinuxNginx
- Mac基礎設定—應用程式Mac
- React 應用實踐(基礎篇)React
- Python Web 應用:WSGI基礎PythonWeb