IDEA使用Activiti的流程设计插件
需要两个插件
jboss jbmp主要用来bpmn和xml以及png进行文件格式转换和识别
camuda bpmn主要用于画流程模板图,提供各种流程符号
网络异常,图片无法展示
|
网络异常,图片无法展示
|
7 Activiti的数据库支持
Ac在运行的时候需要创建25张表到数据库里面,以供后续使用
网络异常,图片无法展示
|
8 Java代码创建25张表
首先在本地创建数据库
网络异常,图片无法展示
|
创建完之后还没有任何表,接着通过java项目创建25张表
网络异常,图片无法展示
|
创建maven项目
网络异常,图片无法展示
|
网络异常,图片无法展示
|
添加依赖如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>activiti01</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <activiti.version>6.0.0</activiti.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-rest-api</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
创建配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--dbcp链接池--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///activiti?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="maxActive" value="3"/> <property name="maxIdle" value="1"/> </bean> <!--在默认方式下 bean的id 固定为 processEngineConfiguration--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!--配置数据库相关的信息--> <!--数据库驱动 <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>--> <!--数据库链接 <property name="jdbcUrl" value="jdbc:mysql:///activiti"/>--> <!--数据库用户名 <property name="jdbcUsername" value="root"/>--> <!--数据库密码 <property name="jdbcPassword" value="123456"/>--> <!--直接引用上面配置的链接池--> <property name="dataSource" ref="dataSource"/> <!--actviti数据库表在生成时的策略 true - 如果数据库中已经存在相应的表,那么直接使用, 如果不存在,那么会创建--> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans>
创建日志文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--dbcp链接池--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///activiti?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="maxActive" value="3"/> <property name="maxIdle" value="1"/> </bean> <!--在默认方式下 bean的id 固定为 processEngineConfiguration--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!--配置数据库相关的信息--> <!--数据库驱动 <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>--> <!--数据库链接 <property name="jdbcUrl" value="jdbc:mysql:///activiti"/>--> <!--数据库用户名 <property name="jdbcUsername" value="root"/>--> <!--数据库密码 <property name="jdbcPassword" value="123456"/>--> <!--直接引用上面配置的链接池--> <property name="dataSource" ref="dataSource"/> <!--actviti数据库表在生成时的策略 true - 如果数据库中已经存在相应的表,那么直接使用, 如果不存在,那么会创建--> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans>
测试类创建表,使用的是默认方式,不能随意修改目录配置文件名称
package com.wyh.test; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.junit.Test; /** * @program: Activiti01 * @description: * @author: 魏一鹤 * @createDate: 2022-06-22 21:59 **/ public class TestCreateTable { /** * 使用activiti提供的默认方式来创建mysql的表 */ @Test public void testCreateDbTable(){ // 1 以下使用默认方式 使用默认方式目录名称是不能改的! // 需要使用avtiviti提供的工具类 ProcessEngines ,使用方法getDefaultProcessEngine // getDefaultProcessEngine会默认从resources下读取名字为actviti.cfg.xml的文件 // 创建processEngine时,就会创建mysql的表 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); System.out.println(processEngine); } }
启动测试 发现数据库里面已经有表了
网络异常,图片无法展示
|
9 Activiti基本表结构以及作用
已经生成了25张表,下面我们就查看这些表是做什么的以及命名规则
网络异常,图片无法展示
|
前缀说明
- act_ge_ 通用数据表,ge是general的缩写
- act_hi_ 历史数据表,hi是history的缩写,对应 HistoryService 接口
- act_id_ 身份数据表,id是identity的缩写,对应 IdentityService 接口
- act_re_ 流程存储表,re是repository的缩写,对应 RepositoryService 接口,存储流程部署和流程定义等静态数据
- act_ru_ 运行时数据表,ru是runtime的缩写,对应 RuntimeService 接口和 TaskService 接口,存储流程实例和用户任务等动态数据
网络异常,图片无法展示
|
网络异常,图片无法展示
|
10 Activiti体系架构图
网络异常,图片无法展示
|
直接通过processEngine使用即可,拿到不用的服务进行不同的操作,其实就是操作表
网络异常,图片无法展示
|
11 Activiti架构图与接口详细介绍
activiti.cfg.xml本质是一个被spring管理的配置文件
它有两个作用
1 配置数据库相关信息进行生成表
2 通过读取数据库信息生成流程对象
网络异常,图片无法展示
|
流程引擎配置类
网络异常,图片无法展示
|
创建25张数据库表的两种方式
创建方式 1 默认创建
网络异常,图片无法展示
|
要把配置文件名称和bean名称定义死才可以使用
// 1 以下使用默认方式 使用默认方式目录名称是不能改的! // 需要使用avtiviti提供的工具类 ProcessEngines ,使用方法getDefaultProcessEngine // getDefaultProcessEngine会默认从resources下读取名字为actviti.cfg.xml的文件 // 创建processEngine时,就会创建mysql的表 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); System.out.println(processEngine);
创建方式2 一般创建方式
// 2 一般创建方式 使用这种方式更加灵活 不用像默认方式一样写死配置文件和bean // 使用自定义方式创建 配置文件的名字可以自定义,bean的名字也可以自定义 ProcessEngineConfiguration processEngineConfigurationFromResource = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration"); // 获取流程引擎对象 ProcessEngine processEngine = processEngineConfigurationFromResource.buildProcessEngine();
常见的service服务接口
网络异常,图片无法展示
|
通过processEngine创建不同的service
网络异常,图片无法展示
|
service总揽
网络异常,图片无法展示
|