Activiti之内置用户组设计表
Activiti给我们提供了一套内置的用户和组设计表;
用户和组(或者叫做角色),多对多关联,通过关联表实现;
我们来看下,

四个表,
act_id_group 用户组表;
act_id_user 用户表;
act_id_membership 用户与组的关联表,用来实现多对多;
act_id_info 用户信息表;
首先来看下用户表:

这里的设计可能和我们想象的不一样,比如_ID,字符串类型 我们直接可以把他当作用户名
FIRST_ LAST_ 是英文命名习惯 EMAIL_ PWD 邮箱 密码 字段 等等。
接下来看下组表:

ID_ 依然是字符串类型 还有NAME_ TYPE_字段
再看下重要的关联表:

只有两个字段 USER_ID_ 和 GROUP_ID_ 分别关联用户表的主键和组表的主键;
我们看下架构设计:

最后一个是用户信息表,主要是用来扩展用户信息,以及可以实现组织机构层次关系,比如雇员领导用户设计;

这里USE_ID_ 可以关联用户表的主键 KEY_ VALUE_可以扩展用户信息(虽然这个是一种冗余设计),PARENT_ID可以实现层次设计;
这里表了解即可;我们不做重点讲解;
这个是activiti给我们内置的一个用户组设计,
这里说明下:正常的企业级项目都有自己的组织机构用户权限设置表,所以一般不会用到内置的;
但是假如一个很小的系统,例如 学生请假系统 就那么几十个用户,两三中角色,那我们就可以用内置的,用内置的更加方便;
Activiti提供了一个Service来专门操作用户组表,那就是 IdentityService 身份信息Service
我们可以用过IdentityService来添加修改用户信息,组信息,也可以删除用户信息,组信息,以及维护他们的关联关系;
我们给下演示代码,视频里会详细讲解:
package com.java1234.groupAssign;
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文件
*/
private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
/**
* 添加用户测试
*/
@Test
public void testSaveUser(){
IdentityService identityService=processEngine.getIdentityService();
User user1=new UserEntity(); // 实例化用户实体
user1.setId("lisi");
user1.setEmail("234@qq.com");
user1.setPassword("123456");
identityService.saveUser(user1); // 添加用户
}
/**
* 测试删除用户
*/
@Test
public void testDeleteUser(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteUser("zhangsan");
}
/**
* 测试添加组
*/
@Test
public void testSaveGroup(){
IdentityService identityService=processEngine.getIdentityService();
Group group=new GroupEntity(); // 实例化组实体
group.setId("test");
identityService.saveGroup(group);
}
/**
* 测试删除组
*/
@Test
public void testDeleteGroup(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteGroup("test");
}
/**
* 测试添加用户和组关联关系
*/
@Test
public void testSaveMembership(){
IdentityService identityService=processEngine.getIdentityService();
identityService.createMembership("lisi", "test");
}
/**
* 测试删除用户和组关联关系
*/
@Test
public void testDeleteMembership(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteMembership("lisi", "test");
}
}