Activiti built into a user, user group relationship, and the operation thereof API. On industrial users and groups four tables, as in FIG.
A presentation, users and groups Table
1, ACT_ID_USER (User Information Table)
2, ACT_ID_INFO (Extended User Information Table)
. 3, ACT_ID_GROUP (user group information table)
. 4, ACT_ID_MEMBERSHIP (user to user group information table)
Second, a project with users and roles in the Activiti user, user group integration
Generally in the project have already been user and role permissions feature. For example, I created a springboot project, have created a user and role tables, then how will the project itself and activiti users and roles of users, groups together friends.
My idea: When you create a user in the project, but also need to associate a user with a user Activiti up, directly linked to the id.
Third, create user Activiti
package com.springboot.activiti.eimm.leave.controller;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.zip.ZipInputStream;
import org.activiti.engine.HistoryService;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.repository.Deployment;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.springboot.activiti.eimm.leave.dao.LeaveMapper;
import com.springboot.activiti.eimm.leave.service.LeaveService;
import lombok.extern.slf4j.Slf4j;
@Controller
@Slf4j
@RequestMapping("/leave")
public class LeaveController {
@Autowired
LeaveMapper leaveMapper;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private IdentityService identityService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private ProcessEngine processEngine;
@Autowired
private HistoryService historyService;
@Autowired
private LeaveService leaveService;
//1、部署流程资源【第一种方式:classpath】
@RequestMapping("/deploy1")
public void deploy1( ){
Deployment deployment = processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service
.createDeployment()//创建部署对象
.name("请假申请审核流程")//声明流程的名称
.addClasspathResource("processes/leave.bpmn")//加载资源文件,一次只能加载一个文件
.addClasspathResource("processes/leave.png")//
.deploy();//完成部署
System.out.println("部署ID:"+deployment.getId());//1
System.out.println("部署时间:"+deployment.getDeploymentTime());
}
//2、创建Activiti用户
@RequestMapping("/addUser")
public void addUser( ){
//项目中每创建一个新用户,对应的要创建一个Activiti用户,两者的userId和userName一致
//添加用户
User user1 = identityService.newUser("user1");
user1.setFirstName("张三");
user1.setLastName("张");
user1.setPassword("123456");
user1.setEmail("[email protected]");
identityService.saveUser(user1);
User user2 = identityService.newUser("user2");
user2.setFirstName("李四");
user2.setLastName("李");
user2.setPassword("123456");
user2.setEmail("[email protected]");
identityService.saveUser(user2);
User user3 = identityService.newUser("user3");
user3.setFirstName("王五");
user3.setLastName("王");
user3.setPassword("123456");
user3.setEmail("[email protected]");
identityService.saveUser(user3);
User user4 = identityService.newUser("user4");
user4.setFirstName("吴六");
user4.setLastName("吴");
user4.setPassword("123456");
user4.setEmail("[email protected]");
identityService.saveUser(user4);
}
}
Start program: http://127.0.0.1:8080/ Project Name / leave / addUser
Found act_id_user table adds four user information
Fourth, the user query Activiti
Activiti provides many ways to query the user, using us to query based on user id
//3、根据id查询Activiti用户
@RequestMapping("/queryUser")
public void queryUser( ){
User user = identityService.createUserQuery().userId("user1").singleResult();
System.out.println(user.getId());
System.out.println(user.getFirstName());
System.out.println(user.getLastName());
System.out.println(user.getPassword());
System.out.println(user.getEmail());
}
Fourth, create user groups Activiti
Role among the user group information corresponding to authority Activiti system, a user can belong to several user groups, the user group may also comprise a plurality of users, the same user group among the users have the same privileges.
//4、创建Activiti用户组
@RequestMapping("/addGroup")
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);
}
V. query Activiti User Group
//5、通过用户组id查询Activiti用户组
@RequestMapping("/queryGroup")
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());
}
Sixth, create Activiti (user - user group) relationship
//6、创建Activiti(用户-用户组)关系
@RequestMapping("/addMembership")
public void addMembership( ){
identityService.createMembership("user1", "group1");//user1 在员工阻
identityService.createMembership("user2", "group2");//user2在总监组
identityService.createMembership("user3", "group3");//user3在经理组
identityService.createMembership("user4", "group4");//user4在人力资源组
}
Seven, to retrieve all users in the group's group1
//7、查询属于组group1的用户
@RequestMapping("/queryUserListByGroup")
public void queryUserListByGroup( ){
//查询属于组group1的用户
List<User> usersInGroup = identityService.createUserQuery().memberOfGroup("group1").list();
for (User user : usersInGroup) {
System.out.println(user.getFirstName());
}
}
Eight groups of users query the user user1 belongs
//8、查询user1所属于的组
@RequestMapping("/queryGroupListByUser")
public void queryGroupListByUser( ){
//查询user1所属于的组
List<Group> groupsForUser = identityService.createGroupQuery().groupMember("user1").list();
for (Group group : groupsForUser) {
System.out.println(group.getName());
}
}
If you think this article to help you, then click the Follow button troublesome picture on the right, thank you!
Technical progress in the exchange, dissemination of knowledge sharing in