idea做springBoot集成Activiti开发

2024-08-21 09:48

本文主要是介绍idea做springBoot集成Activiti开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • idea环境搭建
    • pom文件
  • 绘制流程图
  • service介绍
  • 简单实例
    • 部署
    • 启动流程

idea环境搭建

安装插件,搜索安装actiBPM,如果受限于网络,就访问https://plugins.jetbrains.com/plugin/7429-actibpm/versions下载安装

pom文件

activiti6,demo项目

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version><!--排除自带的mybatis--><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>*</artifactId></exclusion></exclusions>
</dependency>

activiti7,demo项目

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M4</version><exclusions><!-- 需要排除自带的mybatis --><exclusion><groupId>org.mybatis</groupId><artifactId>*</artifactId></exclusion></exclusions>
</dependency>

绘制流程图

绘制完bpm文件后另存为xml文件,并删除 xmlns=""
在这里插入图片描述根据xml生成图片
在这里插入图片描述再将xml文件改回bpm文件

service介绍

servic解释
RepositoryService仓储服务,用于管理流程仓库,例如:部署,删除,读取流程资源
RuntimeService运行时服务,可以处理所有正在运行状态的流程实例,任务等
TaskService任务服务,用于管理,查询任务,例如:签收,办理,指派等
HistoryService历史服务,可以查询所有历史数据,例如:流程实例,任务,活动,变量,附件等
IdentityService唯一服务,可以管理,查询用户,组之间的关系
ManagementService引擎管理服务,和具体业务无关,主要是可以查询引擎配置,数据库,作业等

简单实例

参考demo项目

部署

/*** 创建流程部署* 在3张表中产生数据* act_ge_bytearray 流程资源文件(2条数据)* act_re_deployment 流程部署(1条数据)* act_re_procdef 流程实例(1条数据)*/
@Test
public void deployProcess() throws Exception{//创建部署环境配置对象DeploymentBuilder deployment = repositoryService.createDeployment();//为本次部署命名deployment.name("公共任务请假流程");//添加流程规则文件和流程规则图片deployment.addClasspathResource("processes/commontask.bpmn").addClasspathResource("processes/commontask.png");//部署deployment.deploy();
}/*** 查询流程定义信息* ProcessDefinition有4大属性要关注:* id      {key}:{version}:{随机序列}* name    流程规则文件process节点的name属性* key     流程规则文件process节点的id属性* version 流程版本,如果key存在,则在当前最高版本上加1;如果key不存在,从1开始*/
@Test
public void queryProcessDefinition() throws Exception{//创建查询对象ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();//添加查询条件//执行查询List<ProcessDefinition> list = query.list();//查询数量 query.count();//分页查询 query.listPage(firstResult, maxResults);//返回唯一结果,查询结果为多个则报错 query.singleResult();for (ProcessDefinition processDefinition : list) {System.out.println("id: " + processDefinition.getId() + ", name: " + processDefinition.getName()+ ", key: " + processDefinition.getKey() + ", version: " + processDefinition.getVersion());}
}/*** 删除流程部署*/
@Test
public void deleteProcess() throws Exception{//流程部署id,act_re_deployment表idString deploymentId = "17501";//普通删除,会删除部署所产生的3张表信息repositoryService.deleteDeployment(deploymentId);//级联删除,会删除部署规则相关的所有信息,甚至包括历史
//        repositoryService.deleteDeployment(deploymentId, true);
}/*** 查询流程规则文件*/
@Test
public void queryProcessImage() throws Exception{//流程部署id,act_re_deployment表idString deploymentId = "5001";//部署资源名称List<String> resourceNames = repositoryService.getDeploymentResourceNames(deploymentId);//获取指定文件类型的文件String imageName = null;for (String resourceName : resourceNames) {if (resourceName.indexOf(".png") >= 0) {imageName = resourceName;}}//获取指定文件if (StringUtils.isNotBlank(imageName)) {try (InputStream in = repositoryService.getResourceAsStream(deploymentId, imageName);OutputStream out = new FileOutputStream(new File("E:\\a.png"))) {IOUtils.copy(in, out);} catch (Exception e) {e.printStackTrace();}}}

启动流程

/**
* 1.启动流程
* 关注2张表:
* act_ru_execution : 所有流程按照规则指定到活动节点时,都会产生一个对应的Execution
* act_ru_task      : 只针对人工任务,针对Execution做的扩展信息描述
*/
@Test
public void startProcess() throws Exception{//流程定义的keyString processDefinitionKey = "commontask";//根据流程定义的id启动流程//runtimeService.startProcessInstanceById(processDefinitionKey);//根据流程定义act_re_deployment表key启动最新版本的流程ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);System.out.println("processInstance: "+processInstance);
}/**
* 2.查看私有任务
*/
@Test
public void queryPersonalTask() throws Exception{//流程实例idString processInstanceId = "2501";//代理人(办理人)String assignee = "副经理";//创建任务服务查询对象TaskQuery query = taskService.createTaskQuery();//通过流程实例id查询 query.processInstanceId(processInstanceId);//根据代理人(办理人)查询List<Task> taskList = query.taskAssignee(assignee).list();System.out.println("=====["+assignee+"]私有任务列表=====");taskList.forEach(task -> {System.out.println("id: "+task.getId()+" ,name: "+task.getName()+" ,assignee: "+task.getAssignee()+" ,createTime:"+task.getCreateTime());});
}/**
* 2.查看公共任务
*/
@Test
public void queryCommonTask() throws Exception{//公共任务候选人String candidateuser = "副经理";//创建任务服务查询对象TaskQuery query = taskService.createTaskQuery();//根据候选人查询List<Task> taskList = query.taskCandidateUser(candidateuser).list();System.out.println("=====["+candidateuser+"]公共任务列表=====");taskList.forEach(task -> {System.out.println("id: "+task.getId()+" ,name: "+task.getName()+" ,assignee: "+task.getAssignee()+" ,createTime:"+task.getCreateTime());});
}/**
* 3.认领任务
*/
@Test
public void claimTask() throws Exception{//待认领的公共任务idString taskId = "30002";//认领的用户名String userId = "副经理";taskService.claim(taskId, userId);
}/**
* 4.完成任务
*/
@Test
public void completeTask() throws Exception{//任务id(act_ru_task表id)String taskId = "30002";taskService.complete(taskId);
}/**
* 5.查询流程实例
*/
@Test
public void queryProcessInstancd() throws Exception{//流程实例id(act_ru_execution表id)String processInstanceId = "27501";//创建运行时服务查询对象ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();//查询流程实例ProcessInstance processInstance = query.processInstanceId(processInstanceId).singleResult();if (null == processInstance) {System.out.println("流程已经结束");} else {System.out.println("获取到流程: "+processInstance);}}

这篇关于idea做springBoot集成Activiti开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092819

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S