1. 说明
Activiti中内置了一套用户、用户组关系,以及对它们的操作API。关于用户和用户组表工业四张,如下图:
表名 | 含义 |
---|---|
act_id_user | 身份信息-用户信息 |
act_id_group | 身份信息-组信息 |
act_id_info | 身份信息-用户扩展信息表 |
act_id_membership | 身份信息-用户和组关系的中间表 |
2. 用户与用户组表的介绍
1、ACT_ID_USER(用户信息表)
2、ACT_ID_INFO(用户扩展信息表)
3、ACT_ID_GROUP(用户组信息表)
4、ACT_ID_MEMBERSHIP(用户与用户组关系信息表)
3. 项目中用户和角色与Activiti中的用户、用户组整合
通常来说在项目中都已经是有了用户和角色权限功能。比如我创建了一个springboot项目,已经创建了用户表和角色表,那么如何将项目本身的用户和角色与activiti的用户、用户组整合在一起啦。
我的思路:在项目中创建了用户时,同时也需要将用户与Activiti的用户关联起来,直接通过id关联即可。
3.1 整合
/**
* 把自定义用户同步到activiti用户
*/
@Test
public void addUser(){
List<com.yb.domain.User> all = userDao.findAll();
for (com.yb.domain.User user : all) {
User user1 = identityService.newUser(user.getUid()+"");
user1.setFirstName(user.getUsername());
user1.setPassword(user.getPassword());
identityService.saveUser(user1);
}
}
/**
* 查询用户信息
*/
@Test
public void queryUser(){
User user = identityService.createUserQuery()
.userId("1")
.singleResult();
System.out.println(user.getFirstName());
}
/**
* 创建activiti用户组
*/
@Test
public void addGroup(){
Group group1 = identityService.newGroup("group1");
group1.setName("主管组");
group1.setType("主管组");
identityService.saveGroup(group1);
Group group2 = identityService.newGroup("group2");
group2.setName("总监组");
group2.setType("总监组");
identityService.saveGroup(group2);
Group group3 = identityService.newGroup("group3");
group3.setName("项目经理组");
group3.setType("项目经理组");
identityService.saveGroup(group3);
Group group4 = identityService.newGroup("group4");
group4.setName("员工组");
group4.setType("员工组");
identityService.saveGroup(group4);
Group group5 = identityService.newGroup("group5");
group5.setName("人力资源组");
group5.setType("人力资源组");
identityService.saveGroup(group5);
}
/**
* 查询用户组
*/
@Test
public void queryGroup( ){
Group group = identityService.createGroupQuery()
.groupId("group1")
.singleResult();
System.out.println(group.getId());
System.out.println(group.getName());
System.out.println(group.getType());
}
/**
* 创建用户-用户组之间的关系
*/
@Test
public void addMembership( ){
identityService.createMembership("1", "group4");
identityService.createMembership("3", "group3");
identityService.createMembership("4", "group3");
identityService.createMembership("5", "group3");
identityService.createMembership("6", "group5");
}
/**
* 查询属于用户组group3的用户
*/
@Test
public void queryUserListByGroup( ){
//查询属于组group1的用户
List<User> usersInGroup = identityService.createUserQuery()
.memberOfGroup("group3")
.list();