1.源码地址:https://github.com/heidaodageshiwo/springbootactivity
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来添加修改用户信息,组信息,也可以删除用户信息,组信息,以及维护他们的关联关系;
/**
* 添加用户测试
*/
@RequestMapping("/testSaveUser")
public String testSaveUser() {
User user2 = identityService.newUser("user2");
user2.setId("王五");
user2.setEmail("123@qq.com");
user2.setPassword("123456");
user2.setFirstName("王");
user2.setLastName("五");
identityService.saveUser(user2); // 添加用户
return "testSaveUser";
}
其余代码可自行测试。
package com.zhangqiang.activity.Identity;
import org.activiti.engine.IdentityService;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.Picture;
import org.activiti.engine.identity.User;
import org.activiti.engine.identity.UserQuery;
import org.activiti.engine.impl.persistence.entity.ByteArrayRef;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class IdentityTest {
@Autowired
IdentityService identityService;
/**
* 添加用户测试
*/
@RequestMapping("/testSaveUser")
public String testSaveUser() {
User user2 = identityService.newUser("user2");
user2.setId("王五");
user2.setEmail("123@qq.com");
user2.setPassword("123456");
user2.setFirstName("王");
user2.setLastName("五");
identityService.saveUser(user2); // 添加用户
return "testSaveUser";
}
/**
* 测试删除用户
*/
@RequestMapping("/testDeleteUser")
public String testDeleteUser() {
identityService.deleteUser("lisi");
return "testDeleteUser";
}
/**
* 测试查询用户
*/
@RequestMapping("/testSelectUser")
public String testSelectUser() {
User usecc = identityService.createUserQuery().userId("王五").singleResult();
System.out.println("id========" + usecc.getId());
System.out.println("firstname========" + usecc.getFirstName());
System.out.println("lastname========" + usecc.getLastName());
System.out.println("password========" + usecc.getPassword());
System.out.println("email========" + usecc.getEmail());
System.out.println("==================单个用户,多个用户分割线=====================================");
List<User> users=identityService.createUserQuery().list();
for(int i=0;i<users.size();i++){
System.out.println("id========" + users.get(i).getId());
System.out.println("firstname========" + users.get(i).getFirstName());
System.out.println("lastname========" + users.get(i).getLastName());
System.out.println("password========" + users.get(i).getPassword());
System.out.println("email========" + users.get(i).getEmail());
System.out.println("=====================================================================");
}
return "testSelectUser";
}
/**
* 测试添加组
*/
@RequestMapping("/testSaveGroup")
public String testSaveGroup() {
Group group = identityService.newGroup("group1");
group.setId("dev");
identityService.saveGroup(group);
return "testSaveGroup";
}
/**
* 测试删除组
*/
@RequestMapping("/testDeleteGroup")
public String testDeleteGroup() {
identityService.deleteGroup("test");
return "testDeleteGroup";
}
/**
* 测试添加用户和组关联关系
*/
@RequestMapping("/testSaveMembership")
public String testSaveMembership() {
identityService.createMembership("张三", "dev");
identityService.createMembership("王五", "dev");
return "testSaveMembership";
}
/**
* 测试删除用户和组关联关系
*/
@RequestMapping("/testDeleteMembership")
public String testDeleteMembership() {
identityService.deleteMembership("lisi", "test");
return "testDeleteMembership";
}
}