spring-activiti 一些操作

文章目录

一、bpmn文件部署

java 复制代码
    @Auroward
	RepositoryService rep;
	//通过流区创建一个工作流对象
	rep.createDeployment().addInputStream(filename, is).deploy();
	
	//涉及的表
	act_re_deployment: 流程定义部署表,每部署一次就增加一条记录
	act_re_procdef :流程定义表,部署每个新的流程定义都会在这张表中增加一条记录
	act_ge_bytearray :流程资源表,流程部署的 bpmn文件和png图片会保存在该表中
	

二、发起一个流程

java 复制代码
    @Autowired
	IdentityService identityservice;
    @Auroward
	RuntimeService runtimeservice;
	
	//添加与业务之间的关系
	identityservice.setAuthenticatedUserId("业务key-连接业务数据和流程数据,一般使用表的主键");
	//启动
	ProcessInstance instance=runtimeservice.startProcessInstanceByKey("业务流程key","业务key","变量");
	
	//涉及的表
	act_hi_actinst 流程实例执行历史
    act_hi_identitylink 流程的参与用户的历史信息
    act_hi_procinst 流程实例历史信息
    act_hi_taskinst 流程任务历史信息
    act_ru_execution 流程执行信息
    act_ru_identitylink 流程的参与用户信息
    act_ru_task 任务信息

三、查找任务

java 复制代码
    @Autowired
	TaskService taskservice;
	@Auroward
	RuntimeService runtimeservice;
	
	//一、添加与业务之间的关系
	List<Task> tasks=taskservice.createTaskQuery().taskAssignee("指定用户").taskName("指定名称").listPage("第几页", "每页几条
	
    //二、根据taskId查找任务
    Task task = taskservice.createTaskQuery().taskId("任务id").singleResult();
    /**
     * task.getProcessInstanceId() 流程实例id
     */
	ProcessInstance process = runservice.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();

四、提交/完成任务

java 复制代码
    @Autowired
	TaskService taskservice;
	
	//声明责任人--如果省略了这一步,任务不回向下走
	taskservice.claim("要声明的任务", "用户,不可为空");
	//完成任务(变量可以为空,一般用于指派下一个人)
	taskservice.complete("要声明的任务", "变量");

五、流程定义的查询

java 复制代码
    @Autowired
	RepositoryService rep;
	
	//
	List<ProcessDefinition> list =  rep.createProcessDefinitionQuery().listPage("第几页", "每页几条")
	// 输出流程定义的信息
    for (ProcessDefinition processDefinition : list) {
        System.out.println("流程定义的ID:" + processDefinition.getId());
        System.out.println("流程定义的name:" + processDefinition.getName());
        System.out.println("流程定义的key:" + processDefinition.getKey());
        System.out.println("流程定义的version:" + processDefinition.getVersion());
        System.out.println("流程部署的id:" + processDefinition.getDeploymentId());
    }

六、流程的删除

java 复制代码
    @Autowired
	RepositoryService rep;
	
	// 设置为TRUE 级联删除流程定义,及时流程有实例启动,也可以删除,设置为false 非级联删除操作。
	rep.deleteDeployment("流程标识", true);

七、流程历史信息查看

java 复制代码
    @Autowired
	HistoryService histiryservice;
	
	// 创建一个历史流程实例对象
	HistoricProcessInstanceQuery his = histiryservice.createHistoricProcessInstanceQuery()
	//给定id
	HistoricProcessInstanceQuery process = his.processDefinitionId("");
	//给定key
	HistoricProcessInstanceQuery process = his.processDefinitionKey("");
	//只选择由给定用户启动的历史流程实例。
	process = process.startedBy("用户标识");
	//只选择完成的
	process = process.finished();
	//历史流程实例
	List<HistoricProcessInstance> info = process.listPage(firstrow, rowCount);

八、指派任务

java 复制代码
    @Autowired
	TaskService taskservice;
	
	//  指派的第一种方式
    taskService.setAssignee(task.getId(), "jack");
      
    //  指派的第二种方式
    taskService.deleteCandidateUser(task.getId(), "tom");
    taskService.addCandidateUser(task.getId(), "jack");

九、委派任务

java 复制代码
    @Autowired
	TaskService taskservice;
	
	//  将任务进行委派
    taskService.delegateTask(task.getId(), "rose");
    //被委派人办理任务后,委派人标记任务已完成
    taskService.resolveTask(task.getId());

十、放回任务

java 复制代码
    @Autowired
	TaskService taskservice;
	
	//  重新放回去
    taskService.setAssignee(task.getId(), null);
    taskService.unclaim(task.getId());

十一、回退任务

1. 找到任务
2. 找到当前实例历史执行记录
3. 拿到上一步任务节点
4. 记录当前节点的流转方向
5. 清除当前节点的流转方向
6. 将当前节点指向回退的节点
7. 完成当前节点任务
8. 查询此任务,将回退节点的执行人重新赋值到该节点
9. 恢复当前节点的流转方向

十二、终止任务

流程基本与回退任务一致,只是把回退节点换成结束节点即可
相关推荐
V+zmm1013417 分钟前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
Oneforlove_twoforjob42 分钟前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
xmh-sxh-131444 分钟前
常用的缓存技术都有哪些
java
AiFlutter1 小时前
Flutter-底部分享弹窗(showModalBottomSheet)
java·前端·flutter
J不A秃V头A2 小时前
IntelliJ IDEA中设置激活的profile
java·intellij-idea
DARLING Zero two♡2 小时前
【优选算法】Pointer-Slice:双指针的算法切片(下)
java·数据结构·c++·算法·leetcode
小池先生2 小时前
springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失
java·spring boot·后端
CodeClimb2 小时前
【华为OD-E卷-木板 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
程序员厉飞雨2 小时前
Android R8 耗时优化
android·java·前端
odng2 小时前
IDEA自己常用的几个快捷方式(自己的习惯)
java·ide·intellij-idea