当前位置: 首页 > news >正文

Activiti工作流

1. Activiti简介

Activiti是一个开源的工作流引擎和业务流程管理(BPM)平台,基于Java开发,遵循BPMN 2.0规范(业务流程建模与标记法)。它允许开发人员创建、部署和管理业务流程,实现业务流程自动化。Activiti具有轻量级、高性能、易于扩展等特点,广泛应用于企业级应用系统中。

1.1 Activiti的主要特点

  • 开源免费:Apache许可证下发布,可以在商业项目中自由使用
  • 轻量级:核心引擎小于2MB,启动快速,占用资源少
  • 符合标准:完全支持BPMN 2.0标准
  • 易于嵌入:可以轻松嵌入到Java应用中
  • 支持多种数据库:MySQL、Oracle、PostgreSQL、H2等
  • 支持事务管理:与Spring事务管理集成良好
  • 历史数据管理:提供全面的历史数据记录功能
  • 可视化设计工具:提供流程设计器,支持可视化建模

2. Activiti核心概念

2.1 BPMN 2.0

BPMN(Business Process Model and Notation)是一种图形化的表示法,用于定义业务流程模型。Activiti完全实现了BPMN 2.0规范,支持各种流程元素:

  • 事件(Events):开始事件、结束事件、中间事件等
  • 活动(Activities):任务、子流程等
  • 网关(Gateways):排他网关、并行网关、包容网关等
  • 连线(Sequence Flows):定义活动的执行顺序
  • 泳道(Swimlanes):用于组织和分类活动

2.2 Activiti核心组件

Activiti的核心架构包括以下几个主要组件:

  1. ProcessEngine(流程引擎):Activiti的核心组件,负责流程的部署、执行和管理
  2. RepositoryService(仓库服务):管理流程定义和流程部署
  3. RuntimeService(运行时服务):管理流程实例和执行流程
  4. TaskService(任务服务):管理和查询用户任务
  5. HistoryService(历史服务):查询历史数据
  6. IdentityService(身份服务):管理用户和用户组
  7. FormService(表单服务):处理与表单相关的功能
  8. ManagementService(管理服务):执行数据库维护操作

3. Activiti环境搭建

3.1 Maven依赖

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-engine</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>

3.2 配置文件

3.2.1 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="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?characterEncoding=UTF-8" />
        <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="password" />
        <property name="databaseSchemaUpdate" value="true" />
    </bean>
</beans>
3.2.2 Spring集成配置
<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/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/tx
                           http://www.springframework.org/schema/tx/spring-tx.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?characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>

    <!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        &

相关文章:

  • CH32V208GBU6沁恒协议栈BUG:在主机Write的同一包notify会造成主机一直Write不成功;最终还是用心跳包来解决
  • 进程、线程和协程
  • Leecode Hot50
  • Zerotier虚拟局域网在树莓派的应用和Syncthing配合Zerotier实现端到端文件同步
  • Spring AOP面向切面编程实现日志功能
  • 第 五 章:优化算法_《C++性能优化指南》_notes
  • 在 CentOS 系统中开机自动执行 Shell 脚本
  • vue vue3 走马灯Carousel
  • 正则表达式-万能表达式
  • (二)手眼标定——概述+原理+常用方法汇总+代码实战(C++)
  • 第三章:测量性能_《C++性能优化指南》_notes
  • 可以把后端的api理解为一个目录地址,但并不准确
  • MQTT协议笔记
  • AI之山,鸿蒙之水,画一幅未来之家
  • 网络之数据链路层
  • 【赵渝强老师】Oracle数据库的客户端工具
  • python爬虫WASM
  • 大模型工作原理深度解剖:从Transformer架构到知识涌现的范式革命
  • 全息教学系统的软件开发,沉浸式数字沙盘展示系统如何改变历史教学
  • 蓝桥与力扣刷题(蓝桥 蓝桥骑士)
  • 十四届全国人大常委会举行第四十三次委员长会议 ,听取有关草案和议案审议情况汇报
  • 第二部以“法典”命名的法律!生态环境法典编纂迈出“关键步”
  • 70后供销合作总社理事会原副主任侯顺利任中国融通外部董事
  • 从中央政治局会议看经济工作着力点:以高质量发展的确定性应对外部不确定性
  • 加拿大财长:加拿大需要抗击美国关税
  • 猿辅导武汉公司一员工猝死,死者亲属:他原计划5月2日举行婚礼