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

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud