Activiti相关理论

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Activiti相关理论

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总揽

网络异常,图片无法展示
|

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
安全 计算机视觉
高通TrustZone接口QSEECOM Use-After-Free漏洞分析
#高通QSEECOM接口漏洞(CVE-2019-14040)分析 #阿里安全(侯客) ##背景:  上周五看到一篇国外的安全公司zimperium的研究人员写的一篇他们分析发现的高通的QSEECOM接口漏洞文章,[https://blog.zimperium.com/multiple-kernel-vulnerabilities-affecting-all-qualcomm-d
2072 0
高通TrustZone接口QSEECOM Use-After-Free漏洞分析
|
5月前
|
存储 Java API
Java Optional 完全指南:彻底告别 NullPointerException
Java 8 引入的 `Optional` 类旨在解决 `null` 带来的空指针异常问题,通过提供容器类显式处理可能为空的值,提升代码健壮性和可读性。本文从基础到进阶解析 `Optional` 的用法,涵盖创建、检查、获取值、处理值等核心功能,结合实际应用场景与最佳实践,助你彻底告别 `NullPointerException`,编写更优雅的 Java 代码。
291 0
|
8月前
|
搜索推荐 数据挖掘 API
阿里巴巴API接口对电商的影响与收益
在全球电子商务快速发展的背景下,阿里巴巴作为领先的B2B平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口为开发者和电商企业提供数据资源与功能支持。本文将深入解析阿里巴巴API接口的功能(如商品搜索、详情、订单和用户管理)、应用(如商品展示、搜索优化、交易管理和用户行为分析)、收益(如流量增长、销售提升、库存优化)及实际案例,附带代码示例,助力电商从业者提升运营效率和用户体验。
304 0
|
存储 Java 应用服务中间件
服务器上的Linux中Tomcat有时会挂掉的问题及方法
服务器上的Linux中Tomcat有时会挂掉的问题及方法
1419 0
服务器上的Linux中Tomcat有时会挂掉的问题及方法
|
容灾 关系型数据库 MySQL
PolarDB-X 致数据库行内人 (一) ~ 如何有效评测国产数据库的分布式事务
本文是系列文章的第一篇,介绍第一个重要话题:“数据库的分布式事务”,这也是目前普通用户面对分布式数据库产品介绍问的最多的一个内容,如何有效评测分布式事务也是一个非常重要的能力。致敬同行,我们将PolarDB-X事务架构设计上的一些思考和测试方式,做了整理和梳理,期望能对大家更好的理解分布式事务的测试有所帮助。
PolarDB-X 致数据库行内人 (一) ~ 如何有效评测国产数据库的分布式事务
|
智能硬件 内存技术 芯片
带你读《天猫精灵:如何在互联网公司做硬件》——1.2 EMI设计(2)
带你读《天猫精灵:如何在互联网公司做硬件》——1.2 EMI设计(2)
带你读《天猫精灵:如何在互联网公司做硬件》——1.2 EMI设计(2)
|
存储 芯片
计算机组成原理课设题目详解(二)
计算机组成原理课设题目详解
957 0
计算机组成原理课设题目详解(二)
|
数据采集 JSON 编解码
Python爬虫系列6-百度文库VIP付费数据的抓取
编程难不难?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛 俗话说的好;爬虫在手天下我有,自从学习了爬虫;看到什么都想盘它一番;直到遇到JS反爬。 不知大家有没有遇到过这种情况;就是你在网上不管是查阅资料也好还是做什么,你会发现其实很多人写的反爬一类的都只给你看结果,你根本不知道这个突破过程是怎么样的,哪怕获取到了代码又有何用;下次再给你一道题,你同样还是不会。你品,你细品...... 我觉得做任何事情一定有在短期内简单可行的方法。学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。师者传道受业解惑!
1051 0
Python爬虫系列6-百度文库VIP付费数据的抓取
|
机器学习/深度学习 传感器 算法
大规模 MIMO 检测的近似消息传递 (AMP)附Matlab代码
大规模 MIMO 检测的近似消息传递 (AMP)附Matlab代码
|
XML SQL 缓存
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
654 0
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示