转自: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("张三", "普通用户");
}
}
