Activiti6 self-road (six) - Activiti in users and groups

Activiti built into a user, user group relationship, and the operation thereof API. On industrial users and groups four tables, as in FIG.

Here Insert Picture Description

A presentation, users and groups Table

1, ACT_ID_USER (User Information Table)

Here Insert Picture Description

2, ACT_ID_INFO (Extended User Information Table)
Here Insert Picture Description
. 3, ACT_ID_GROUP (user group information table)
Here Insert Picture Description
. 4, ACT_ID_MEMBERSHIP (user to user group information table)
Here Insert Picture Description

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
Here Insert Picture Description

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());
  	      
  	}

Here Insert Picture Description

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);
  	      
  	}

Here Insert Picture Description

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());
  		 
  	}

Here Insert Picture Description

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在人力资源组
  		 
  	}

Here Insert Picture Description

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());
		}
  		 
  	}

Here Insert Picture Description

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());
		}
  		 
  	}

Here Insert Picture Description


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

Guess you like

Origin blog.csdn.net/qq_29914837/article/details/92104148