Activiti6.0开发探索与总结

本文介绍了Activiti6.0在Java SpringBoot环境下的安装配置,包括解决依赖、数据库表创建及画图插件安装。讨论了流程中的任务类型,如用户任务、服务任务等,并探讨了审批、回滚机制和问题排查。同时,文章揭示了Activiti中任务记录丢失和job执行问题的原因。
摘要由CSDN通过智能技术生成

 

前言

年初要做一个运维自动化平台,需要用到流程引擎,本来打算项目用golang写的,但是golang的流程引擎功能太简单实在是用不来,最后还是选型java + activiti。到activiti官网一看,嘿出7.0了结果文档是刚写的还不全,我们java还是8的,7.0是匹配的java11,最终是问题太多只好放弃用activiti6.0了。

摸石头过河

虽然网上教程有不少,不过要真正跑起来着实不容易,有些内容比如参数的意义还是看5.0的手册才弄明白的。

安装

解决依赖先跑起来

搭建环境:java8 + springboot2.1.3 + activiti6.0 + mysql

pom依赖:

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
	<version>${activiti.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
复制代码

配置数据库:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/activiti?nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
复制代码

然后启动,恭喜你,应用没起来,会出现如下报错:

Caused by: java.io.FileNotFoundException: class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist:

这个原因是activiti6.0开发的时候springboot2.0还没出来以致年久失修,文件路径不对了,解决方案:

启动类前排除掉SecurityAutoConfiguration

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

再次启动,如果你碰到创建数据库表却找不到表的问题,两种解决方法:

  • 手动创建表,表的路径在activiti-engine-6.0.0.jar/org/activiti/db/create
  • 数据库配置中加上nullCatalogMeansCurrent=true

这是因为在org/activiti/engine/impl/db/DbSqlSession中activiti使用databaseMetaData.getTables寻找库表是否存在,而dbSqlSessionFactory获取到的catalog为空因为mysql使用schema标识库名而不是catalog,导致mysql扫描所有的库来找表,一旦其他库中有同名表activiti就以为找到了其实表并不存在。nullCatalogMeansCurrent的意义就在于让mysql默认当前库,在mysql-connector-java 5.x该参数默认为true,但在6.x以上默认为false。

再次启动,仍然没起来:

Caused by: java.io.FileNotFoundException: class path resource [processes/] cannot be resolved to URL because it does not exist

这是因为activiti会到resource/processes下面寻找流程文件,创建该目录。

配置画图插件

activiti提供了多种设计器来画流程图,我安装了IDEA的插件和eclipse的插件,比较了下还是eclipse的好用,所以只介绍eclipse 插件的安装过程。

  1. 下个eclipse
  2. 下载插件 Help --> Install New Software -->Add:
Names : Activiti BPMN 2.0 designer
Location : https://www.activiti.org/designer/update/
复制代码
  1. 下完了New一个diagram

 

 

4. 画流程图,一个标准的流程图有一个开始事件和一个结束事件,画完了保存为.bpmn文件或者.bpmn20.xml文件,并放到resource/processes目录下,一个xml示例文件如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="http://www.activiti.org/test" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test" id="m1551347612734" name="">
  <process id="machine_expansion" name="Machine Expansion" isExecutable="true" isClosed="false" processType="None">
    <startEvent id="start" name="开始"></startEvent>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值