前言:
osworkflow是個開源的工作流引擎,採用的是有限狀態機的模型。內置有osuser這個用戶系統,來處理用戶權限相關的部分。但是功能很弱,只有用戶表,用戶組表,即簡單的將用戶劃分給用戶組。在定義流程的時候,可以將權限處理給一個具體的用戶,也可以給一個用戶組。
缺點:
功能太過簡單,不利於擴展,也不利於和用戶系統集成,還沒有開源的源代碼。
改造方案:
將osuser去掉,重新編寫一套用戶系統,此用戶系統只在工作流系統中使用,因此數據權限等從簡。
保留使用osuser.xml文件的配置,修改成fcuser.xml,此配置文件採用xml格式,配置具體執行和數據庫交互的實現類,便於擴展各種數據庫的個性化函數,sql,關鍵字的不同寫法。
採用映射表的方式,和實際用戶系統的表關聯,因爲用戶系統要集成工作流,一般都有自己的用戶組織機構管理系統。
工作流系統必須要和用戶系統的用戶權限系統無縫集成,所以沒有必要再做一套用戶系統,直接將用戶系統的數據映射過來,達到集成的目的。如果不採用表數據的映射,也可以編寫實現類,實現UserProvider接口,將用戶系統已經有的方法關聯過來實現。
用戶映射表示意圖:
表結構:
用戶表,用戶角色表,用戶羣組表
這幾個表爲演示系統使用,真正和用戶系統集成的時候,採用映射表映射到用戶系統的表。或者用戶有自己編寫好的用戶權限等系統,也可以通過實現UserProvider接口的方式,將用戶系統和工作流的用戶系統集成到一起。
fcuser映射表:
一個簡單的fcuser.xml映射表圖例
cn.com.fcsoft.user.provider.jdbc.JDBCUserProvider 爲UserProvider的指定實現類。
用戶系統的UML圖:
主要類功能描述:
UserManager爲對外提供的用戶系統的實現類,流程引擎實現類關聯這個類,來實現用戶系統的一切功能;
UserConfig爲單例模式,主要讀取fcuser.xml文件的內容
UserConfiguration獲取映射表配置信息
UserProvider接口,提供所有的用戶系統功能,實現類可以根據數據庫的不同選擇各自的個性化實現類,通用的爲JDBCUserProvider。
用戶不使用表結構映射時,可以編寫自己的實現類,實現UserProvider接口來實現用戶權限系統。
UserException,所有用戶系統的拋出的異常。
User,UserImpl 用戶接口,用戶接口實現類
Role,RoleImpl 角色接口,角色接口實現類
Group,GroupImpl 用戶羣組,用戶羣組的實現類
通過改寫這個用戶系統集成到工作流引擎中,更利於和用戶系統的結合。同時別忘記改寫osworklfow的引擎包util中的各種和用戶權限相關的類,調用userManage中的功能來做用戶權限判斷。