当前位置:网站首页>第九章:activit内置用户组设计与组任务分配和IdentityService接口的使用
第九章:activit内置用户组设计与组任务分配和IdentityService接口的使用
2022-08-05 10:05:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
package com.xiaoyexinxixn.ActivityLesson;
import static org.junit.Assert.*;
import javax.sound.midi.VoiceStatus;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.identity.User;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.junit.Test;
public class IdentitiyTest {
//获取流程引擎
ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
//添加用户测试
@Test
public void testSaveUser(){
IdentityService identitiyService= processEngine.getIdentityService();
User user=new UserEntity();
user.setId("zhangsan");
user.setPassword("123");
user.setEmail("[email protected]");
identitiyService.saveUser(user);
}
}
运行代码:
删除用户:
//删除用户
@Test
public void deleteUser(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteUser("lisi");
}
//添加组
@Test
public void saveGroupTest(){
IdentityService identityService=processEngine.getIdentityService();
Group group=new GroupEntity();
group.setId("testGroup");
identityService.saveGroup(group);
}
运行结果:
//删除组
@Test
public void deleteGroupTest(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteGroup("testGroup");
}
//添加用户和组的关联关系
@Test
public void membershipTest(){
IdentityService identityService =processEngine.getIdentityService();
identityService.createMembership("zhangsan", "testGroup" );
}
添加用户和组的关联关系方法的运行结果:
这里我们为了后面集成测试,这里多加几条数据,就算是把“zhangshan 和lisi都加到testGroup测试组这样一个业务”加后的数据库如下:
下面测删除关系:
//删除用户和组的关联关系
//删除用户和组的关联关系
@Test
public void membershipDelete(){
IdentityService identityService=processEngine.getIdentityService();
identityService.deleteMembership("zhangsan", "testGroup");
}
写了一大坨,那么什么用处呢?现在开发的人都用过svn代码管理工具,对某一个项目的代码的读写人的设置,管理员可以一个一个的添加,也可以一组一组的添加,对于这个组的人都可以使用这个代码。这个组对应的就是我们上面的testGroup。
下面我们使用实例,把某一人物的可执行人,以组的形式进行添加。
首先画流程图
代码:
package com.xiaoyexinxixn.ActivityLesson.flow;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import com.xiaoyexinxixn.ActivityLesson.model.Student;
public class GroupLeaveProcess {
//获取默认流程引擎实例,会自动读取activiti.cfg.xml ,所以我们要严格定义配置文件的名称
private ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void deploy() {
//获取部署相关service,这些都是activiti封装好的api接口,还有很多,下面也会用到很多
Deployment deployment=processEngine.getRepositoryService()
//创建部署
.createDeployment()
//加载流程图资源文件
.addClasspathResource("diagrams/GroupLeave.bpmn")
//加载流程图片
.addClasspathResource("diagrams/GroupLeave.png")
//流程名称
.name("group")
//部署流程
.deploy();
System.out.println("流程部署的ID: "+deployment.getId());
System.out.println("流程部署的Name: "+deployment.getName());
}
}
部署上面代码,成功后会在数据库的部署表act_re_deployment 有名为group的一条数据:
然后启动并查看任务候选者和参与者:
/*
* 启动流程实例
*/
@Test
public void start(){
//运行启动流程的servicee
ProcessInstance pi=processEngine.getRuntimeService()
//定义流程表的KEY字段值,key值是我们前面定义好的key,可在act_re_procdef表中的key_字段中找到,
.startProcessInstanceByKey("GroupLeaveProcess");
System.out.println(pi.getId());
System.out.println(pi.getProcessDefinitionId());
}
/**
* 查看任务
*/
@Test
public void findTaskList(){
//获取任务列表的service
List<Task> taskList=processEngine.getTaskService()
//创建任务查询
.createTaskQuery()
//指定任务的执行人
// .taskAssignee("lisi")
.taskCandidateUser("lisi")
.list();
for(Task task:taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务委派人:"+task.getAssignee());
System.out.println("任务流程实例Id:"+task.getProcessInstanceId());
}
}
结果:
任务ID:232504
任务名称:leave001
任务创建时间:Wed Apr 25 12:56:20 CST 2018
任务委派人:null
任务流程实例Id:232501
下面我们用变量设置组。
这里直接在上面建的流程图上做如下修改:
package com.xiaoyexinxixn.ActivityLesson.flow;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import org.springframework.jca.cci.object.MappingCommAreaOperation;
import com.xiaoyexinxixn.ActivityLesson.model.Student;
public class GroupLeaveProcess {
//获取默认流程引擎实例,会自动读取activiti.cfg.xml ,所以我们要严格定义配置文件的名称
private ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void deploy() {
//获取部署相关service,这些都是activiti封装好的api接口,还有很多,下面也会用到很多
Deployment deployment=processEngine.getRepositoryService()
//创建部署
.createDeployment()
//加载流程图资源文件
.addClasspathResource("diagrams/GroupLeave.bpmn")
//加载流程图片
.addClasspathResource("diagrams/GroupLeave.png")
//流程名称
.name("group")
//部署流程
.deploy();
System.out.println("流程部署的ID: "+deployment.getId());
System.out.println("流程部署的Name: "+deployment.getName());
}
/*
* 启动流程实例
*/
@Test
public void start(){
Map<String,Object> varibales=new HashMap<String,Object>();
varibales.put("groupId", "testGroup");
//运行启动流程的servicee
ProcessInstance pi=processEngine.getRuntimeService()
//定义流程表的KEY字段值,key值是我们前面定义好的key,可在act_re_procdef表中的key_字段中找到,
.startProcessInstanceByKey("GroupLeaveProcess",varibales);
System.out.println(pi.getId());
System.out.println(pi.getProcessDefinitionId());
}
/**
* 查看任务
*/
@Test
public void findTaskList(){
//获取任务列表的service
List<Task> taskList=processEngine.getTaskService()
//创建任务查询
.createTaskQuery()
//指定任务的执行人
// .taskAssignee("lisi")
.taskCandidateUser("lisi")
.list();
for(Task task:taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务委派人:"+task.getAssignee());
System.out.println("任务流程实例Id:"+task.getProcessInstanceId());
}
}
/**
* 完成任务
*/
@Test
public void completeTask(){
processEngine.getTaskService().complete("232504");
}
然后部署流程实例,启动,查看任务,就能够在查看任务方法中看到结果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106136.html原文链接:https://javaforall.cn
边栏推荐
- 电竞、便捷、高效、安全,盘点OriginOS功能的关键词
- PHP 操作mangoDb
- Why are RELTABLESPACE values 0 for many tables displayed in sys_class?
- three.js debugging tool dat.gui use
- What is SPL?
- The technological achievements of Shanghai Konan were selected into the "2021 Shanghai Network Security Industry Innovation Research Achievement Catalog" by the Municipal Commission of Economy and Inf
- 无题十三
- How does the official account operate and maintain?Public account operation and maintenance professional team
- 【AGC】增长服务1-远程配置示例
- IDEA performs the Test operation, resulting in duplicate data when data is inserted
猜你喜欢
Introduction to SD NAND Flash!
three.js调试工具dat.gui使用
语音社交软件开发——充分发挥其价值
Microservice Technology Stack
19.服务器端会话技术Session
dotnet OpenXML 解析 PPT 图表 面积图入门
哪位大佬有20年4月或者1月的11G GI和ojvm补丁呀,帮忙发下?
IDEA performs the Test operation, resulting in duplicate data when data is inserted
Oracle temporary table space role
电竞、便捷、高效、安全,盘点OriginOS功能的关键词
随机推荐
What is the function of the regular expression replaceAll() method?
电竞、便捷、高效、安全,盘点OriginOS功能的关键词
How can project cost control help project success?
无题十
The technological achievements of Shanghai Konan were selected into the "2021 Shanghai Network Security Industry Innovation Research Achievement Catalog" by the Municipal Commission of Economy and Inf
无题六
Oracle临时表空间作用
LeetCode 216. Combined Sum III (2022.08.04)
无题四
【 temperature warning program DE development 】 event driven model instance
Confessing in the era of digital transformation: Mai Cong Software allows enterprises to use data in the easiest way
MySQL transactions
【Unity】【UGUI】【在屏幕上显示文本】
Jenkins使用手册(2) —— 软件配置
PHP operation mangoDb
Still looking for a network backup resources?Hurry up to collect the following network backup resource search artifact it is worth collecting!
MySQL事务
dotnet OpenXML parsing PPT charts Getting started with area charts
MySQL advanced (twenty-seven) database index principle
MySQL之数据视图