Activiti相关理论

简介: 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
2205 0
高通TrustZone接口QSEECOM Use-After-Free漏洞分析
|
人工智能 安全 搜索推荐
1.8B参数,阿里云首个联合DNA、RNA、蛋白质的生物大模型,涵盖16.9W物种
【6月更文挑战第14天】阿里云发布首个集成DNA、RNA和蛋白质数据的生物大模型LucaOne,拥有1.8B参数,涉及16.9万物种。LucaOne通过few-shot learning技术和streamlined downstream architecture实现多生物语言统一处理,提升生物系统理解与分析能力。该模型将加速生物信息学研究,推动生物医学应用,但同时也引发生物数据安全、预测偏差及AI伦理法律等问题的讨论。[论文链接](https://www.biorxiv.org/content/10.1101/2024.05.10.592927v1)
949 3
|
存储 Java 应用服务中间件
服务器上的Linux中Tomcat有时会挂掉的问题及方法
服务器上的Linux中Tomcat有时会挂掉的问题及方法
1462 0
服务器上的Linux中Tomcat有时会挂掉的问题及方法
|
数据采集 JSON 编解码
Python爬虫系列6-百度文库VIP付费数据的抓取
编程难不难?那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛 俗话说的好;爬虫在手天下我有,自从学习了爬虫;看到什么都想盘它一番;直到遇到JS反爬。 不知大家有没有遇到过这种情况;就是你在网上不管是查阅资料也好还是做什么,你会发现其实很多人写的反爬一类的都只给你看结果,你根本不知道这个突破过程是怎么样的,哪怕获取到了代码又有何用;下次再给你一道题,你同样还是不会。你品,你细品...... 我觉得做任何事情一定有在短期内简单可行的方法。学习不应该是苦差事,而应该是快乐的,重要的是找到适合自己的学习方法。师者传道受业解惑!
1152 0
Python爬虫系列6-百度文库VIP付费数据的抓取
|
XML SQL 缓存
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
718 0
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
|
Rust 算法 安全
【密码学】一文读懂RSA
本文来聊聊RSA, 这是一个非对称密码,和之前所提到的AES与DES不同的是,这个加密方式有两个密钥,一个是公钥,一个是私钥,公钥用来加密,私钥用来解密。相比于对称密码,非对称密码大多基于某个数学难题,比如接下来要谈论的RSA即基于大整数分解的困难性来的,因此为了说明白这个加密算法,首先要先补充&quot;一&quot;点点数学知识。
|
SQL 分布式计算 Hadoop
在文件存储HDFS版上使用 Presto
本文档主要介绍在文件存储HDFS版上搭建及使用 Presto。
810 0
|
存储 SQL 缓存
Springboot整合Redis作为Mybatis的二级缓存
文章转载声明:转载请附带原文链接
Springboot整合Redis作为Mybatis的二级缓存
|
机器学习/深度学习 城市大脑 人工智能
人狠话不多!阿里成立半导体公司「平头哥」:首款 AI 芯片明年面世
9 月 19 日上午,由杭州市政府与阿里巴巴主办、最具影响力的云计算峰会——「云栖大会」在杭州开幕。大会首日,阿里巴巴发布了城市大脑 2.0 版,宣布成立「平头哥」半导体公司开发 AI 芯片,吸引了众人关注。
1540 0
人狠话不多!阿里成立半导体公司「平头哥」:首款 AI 芯片明年面世
|
SQL 消息中间件 分布式计算
数仓大法好!跨境电商 Shopee 的实时数仓之路
本文讲述 Flink 在 Shopee 新加坡数据组(Shopee Singapore Data Team)的应用实践,主要内容包括:实时数仓建设背景、Flink 在实时数据数仓建设中结合 Druid、Hive 的应用场景、实时任务监控、Streaming SQL 平台化、Streaming Job 管理、未来规划优化方向。
数仓大法好!跨境电商 Shopee 的实时数仓之路