activiti7 工作流引擎
Activiti 只是一个工作流引擎,并不是一个完整的工作流产品或框架,日常工作流使用时,必须在此基础上进行项目开发。Activiti 只支持流程部署-UML流程XML文件部署,流程开启、审批及审批节点的流转等操作。并未提供人员、权限及Web UI界面等功能,项目使用时可通过Activiti封装一个独立的流程服务,由业务系统调用相关接口完成业务审批工作。
并且Activiti有些审批功能对于中国人的审批习惯还未提供完全支持直接操作的API,比如驳回、撤回、作废等功能,网上也有很多实现这些功能的方式,具体如何实现还是要结合现有业务需求来对Activiti进一步功能封装。
这里主要是Activiti 各个单一功能如何使用的案例,其实复杂业务审批也是在这些小功能上进一步组装而成,以下就对Activiti进一步了解吧。
1、Maven 纯Activiti7项目搭建(无Spring)
activiti 本身就集成到Spring中,内部依赖Spring+Mybatis
1.1、数据库
默认是H2内存数据库,这里使用MySQL数据库,总共25张表,可用SQL初始化。项目启动时,也可通过程序配置,自动初始化表,这里创建数据库
Create DataBase activiti default character set utf8
1.2、依赖
<activiti.version>7.1.0.M6</activiti.version>
<activiti.cloud.version>7.0.0.Beta1</activiti.cloud.version>
<mysql.version>8.0.20</mysql.version>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-converter</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-json-converter</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-layout</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
1.3、activiti.cfg.xml 配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activiti" />
<property name="username" value="root" />
<property name="password" value="1234.com" />
</bean>
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="dataSource" ref="dataSource"/>
<!--自动会创建activiti涉及到的表结构-->
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>
1.4、代码初始化表结构
@Slf4j
public class ActivitiTest {
/**
* 第一次使用Activiti时,如果没有初始化表结构,可以通过此操作初始化表
*/
@Test
public void initTable(){
ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
log.info(defaultProcessEngine.getName());
}
}
2、定义工作流
activiti 是用BPMN 2.0定义规则流程的,IDEA 安装actiBPM
插件即可编辑BPMN文件了。 1个BPMN文件中可以定义多个流程,有时多个小功能点流程在1个文件中定义(不能2个流程,会报错:(Multiple none start events are not supported),一般都是1个文件一个流程管理 MyLeave.bpmn
2.1、bpmn 文件导出成png图片供后续业务人员查看
把BPMN 文件复制一份 XML文件,然后Idea中右键,Digrams->show bpmn 2.0 Digester
最后导出png 图片:
3、流程开发过程
- 定义流程
- 部署流程-到activiti 服务器
- 启动流程
- 各个节点处理人审核,提交任务
- 流程执行结束