轉自:https://www.cnblogs.com/liuqing576598117/p/9815013.html
一、內置用戶組(角色)設計表概念
- 用戶和組(或者叫做角色),多對多關聯,通過關聯表實現
-
act_id_user 用戶表;
-
act_id_group 用戶組表;
-
act_id_membership 用戶與組的關聯表,用來實現多對多;
-
act_id_info 用戶信息表;
1. act_id_user 用戶表;
-
這里的設計可能和我們想象的不一樣,比如_ID,字符串類型 我們直接可以把他當作用戶名
FIRST_ LAST_ 是英文命名習慣 EMAIL_ PWD 郵箱 密碼 字段 等等。
2. act_id_group 用戶組表(或者叫做角色)
3. act_id_membership 用戶與組的關聯表,用來實現多對多
- 只有兩個字段 USER_ID_ 和 GROUP_ID_ 分別關聯用戶表的主鍵和組表的主鍵;
4. act_id_info 用戶信息表
- 主要是用來擴展用戶信息,以及可以實現組織機構層次關系,比如雇員領導用戶設計
5. 說明
- 這個是activiti給我們內置的一個用戶組設計,
- 這里說明下:正常的企業級項目都有自己的組織機構用戶權限設置表,所以一般不會用到內置的;
- 但是假如一個很小的系統,例如 學生請假系統 就那么幾十個用戶,兩三中角色,那我們就可以用內置的,用內置的更加方便;
二、IdentityService 基本使用
package com.shyroke.activiti.firstActiviti; import org.activiti.engine.IdentityService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.identity.Group; import org.activiti.engine.identity.User; import org.activiti.engine.impl.persistence.entity.GroupEntity; import org.activiti.engine.impl.persistence.entity.UserEntity; import org.junit.Test; public class IdentityTest { /** * 獲取默認流程引擎實例,會自動讀取activiti.cfg.xml文件 */ ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); /** * 添加用戶測試 */ @Test public void saveUser() { IdentityService identityService=processEngine.getIdentityService(); User user1=new UserEntity(); user1.setId("張三"); user1.setPassword("123"); User user2=new UserEntity(); user2.setId("李四"); user2.setPassword("456"); identityService.saveUser(user1); identityService.saveUser(user2); } /** * 刪除用戶 */ @Test public void deleteUser() { IdentityService identityService=processEngine.getIdentityService(); identityService.deleteUser("李四"); } /** * 測試添加組(角色) */ @Test public void testSaveGroup(){ IdentityService identityService=processEngine.getIdentityService(); Group group=new GroupEntity(); // 實例化組實體 group.setId("管理員"); Group group2=new GroupEntity(); // 實例化組實體 group2.setId("普通用戶"); identityService.saveGroup(group); identityService.saveGroup(group2); } /** * 測試刪除組(角色) */ @Test public void testDeleteGroup(){ IdentityService identityService=processEngine.getIdentityService(); identityService.deleteGroup("管理員"); } /** * 測試添加用戶和組(角色)關聯關系 */ @Test public void testSaveMembership(){ IdentityService identityService=processEngine.getIdentityService(); identityService.createMembership("張三", "普通用戶"); } /** * 測試刪除用戶和組(角色)關聯關系 */ @Test public void testDeleteMembership(){ IdentityService identityService=processEngine.getIdentityService(); identityService.deleteMembership("張三", "普通用戶"); } }