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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory