Flowable 基本用法

一.  什么是Flowable

Flowable 是一个基于 Java 的开源工作流引擎,用于实现和管理业务流程。它提供了强大的工作流引擎和一套丰富的工具,使开发人员能够轻松地建模、部署、执行和监控各种类型的业务流程。Flowable 是 Activiti 工作流引擎的一个分支,诞生于 Activiti 项目与 Alfresco 合并后的分裂,继承了 Activiti 的大部分特性并在此基础上进行了进一步的开发和改进。

Flowable 的核心特点包括:

1. 灵活性和可扩展性:

Flowable 提供了灵活且可扩展的工作流引擎,可以根据不同的业务需求定制和扩展业务流程。

2. 图形化建模工具:

Flowable 提供了图形化的流程设计器,使业务分析师和开发人员能够通过拖放元素来建模和编辑业务流程,而不需要编写代码。

3. 规则引擎集成:

Flowable 可以与规则引擎(如 Drools)集成,使业务规则能够直接应用于业务流程中,从而实现更灵活的业务逻辑控制。

4. 支持多种执行环境:

Flowable 支持在多种执行环境中部署和执行流程,包括传统的 Java 应用程序、Spring 应用程序、Java EE 应用服务器等。

5. 全面的监控和管理功能:

Flowable 提供了监控和管理业务流程执行的工具和 API,可以实时跟踪流程实例的执行情况,并对流程进行管理和优化。

总的来说,Flowable 是一个功能强大且灵活的工作流引擎,为开发人员提供了一套完整的工具和 API,用于建模、部署、执行和管理业务流程,帮助企业实现业务流程的自动化和优化。

二.  Flowable的安装

1. 资源包: https://github.com/flowable/flowable-engine/releases

7.0版本后的无 ui


2.  对应的流程设计器 官网flowable-ui

3.我们把这个 flowable-ui.war 扔到Tomcat的webapps目录下然后启动Tomcat服务(tomcat9.exe)即可,启动之后会自动在webapps下创建flowable-ui文件夹,里面可配置此flowable的端口号和数据库连接信息

4.如果想要自动创建用到的数据库的表,可在此文件配置数据库连接信息(lib目录下需要放置数据库连接用到的jar包)


                  

 4.访问地址:http://localhost:8080/flowable-ui
 

三.  Flowable的基本使用

1. 创建 ProcessEngine(非Spring)环境

 1.1 添加依赖

        

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Flowable的核心依赖-->
        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter</artifactId>
            <version>6.7.2</version>
        </dependency>
        <!-- MySQL的依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!-- 日志相关 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
        </dependency>

1.2 获取流程引擎对象

方法执行成功后会在这三张表中记录相关的部署信息

  • act_ge_bytearray:记录流程定义的资源信息。xml和流程图的图片信息

  • act_re_deployment:流程部署表,记录这次的部署行为

  • act_re_procdef:流程定义表,记录这次部署动作对应的流程定义信息

databaseSchemaUpdate:用于设置流程引擎启动关闭时使用的数据库表结构控制策略

  • false (默认): 当引擎启动时,检查数据库表结构的版本是否匹配库文件版本。版本不匹配时抛出异常。

  • true: 构建引擎时,检查并在需要时更新表结构。表结构不存在则会创建。

  • create-drop: 引擎创建时创建表结构,并在引擎关闭时删除表结构

1.3 启动程序,自动创建表

四. SpringBoot 整合 Flowable

1.添加依赖

2.yml配置文件


然后直接启动,服务就会自动初始化数据库

3.部署流程

方法执行成功后会在这三张表中记录相关的部署信息

  • act_ge_bytearray:记录流程定义的资源信息。xml和流程图的图片信息

  • act_re_deployment:流程部署表,记录这次的部署行为

  • act_re_procdef:流程定义表,记录这次部署动作对应的流程定义信息

4.启动流程实例

启动流程需要通过RuntimeService来实现。同时在启动流程的时候有两个方法可以调用:

  • startProcessInstanceById: 对应于act_re_procdef 表中的id

  • startProcessInstanceByKey: 对应于act_re_procdef 表中的key

每启动一个流程实例那么就会在act_hi_procinst表中维护一条记录。然后在act_ru_execution会记录流程的分支

流程定义和流程实例的关系:

  • 流程定义:Java中的类

  • 流程实例:Java中的对象

  • 这时我们可以在act_ru_task表中看到对应的记录。act_ru_task记录的都是当前待办的记录信息

5.流程审批

找到了需要审批的任务。我们就可以根据 taskId来完成审批的操作         


当审批完成后会删除当前记录并继续创建下个活动的记录

五. Service服务

RepositoryService

  是activiti的资源管理类,提供了管理和控制流程发布包和流程定义的操作。使用工作流建模工具设计的业务流程图需要使用此service将流程定义文件的内容部署到计算机。

除了部署流程定义以外还可以:查询引擎中的发布包和流程定义。

  暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。

  获得流程定义的pojo版本, 可以用来通过java解析流程,而不必通过xml。

RuntimeService

  Activiti的流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息

TaskService

  Activiti的任务管理类。可以从这个类中获取任务的信息。

HistoryService

  Flowable的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间,每个流程实例的执行路径,等等。 这个服务主要通过查询功能来获得这些数据。

ManagementService

  Activiti的引擎管理类,提供了对Flowable 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Flowable 系统的日常维护。

六. 数据库

流程部署成功后

方法执行成功后会在这三张表中记录相关的部署信息

  • act_ge_bytearray:记录流程定义的资源信息。xml和流程图的图片信息

  • act_re_deployment:流程部署表,记录这次的部署行为

  • act_re_procdef:流程定义表,记录这次部署动作对应的流程定义信息

启动流程实例后

act_ru_task表中看到对应的记录。act_ru_task记录的都是当前待办的记录信息

启动流程需要通过RuntimeService来实现。同时在启动流程的时候有两个方法可以调用:

  • startProcessInstanceById: 对应于act_re_procdef 表中的id

  • startProcessInstanceByKey: 对应于act_re_procdef 表中的key

还有一个要注意的:每启动一个流程实例那么就会在act_hi_procinst表中维护一条记录。然后在act_ru_execution会记录流程的分支

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314721.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务网关GateWay基础

1. 网关基础介绍1.1 网关是什么1.2 为啥要用网关1.3 常见的网关组件NginxNetflix ZuulSpring Cloud GatewayKongAPISIX综合比较 2. gateWay的使用2.1 springCloud整合gateway2.2 GateWay的相关用法2.3 GateWay路由使用示例基本用法转发/重定向负载请求动态路由 2.5 断言(Predic…

使用Screenshots安装Fedora 40版本详细教程

Fedora 40是Fedora操作系统的最新版本&#xff0c;于 2024 年 4 月 23 日发布&#xff0c;是一个社区支持的 Linux 发行版&#xff0c;以其创新功能、领先技术和活跃的社区支持而闻名。 在本指南中&#xff0c;我们将引导您完成安装Fedora 40 Server的分步过程&#xff0c;确保…

Docker之存储配置与管理

一、容器本地配置与Docker存储驱动 每个容器都被自动分配了本地存储&#xff0c;也就是内部存储。容器由一个可写容器层和若干只读镜像层组成&#xff0c;容器的数据就存放在这些层中。 容器本地存储采用的是联合文件系统。这种文件系统将其他文件系统合并到一个联合挂载点&a…

【c++】深入剖析与动手实践:C++中Stack与Queue的艺术

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们来到STL新的内容&#xff0c;stack和queue 目录 1. stack的介绍与使用函数介绍例题一&#xff1a;最小栈例题二&#xff1a;栈的压入、弹出队列栈的模…

springcloud按版本发布微服务达到不停机更新的效果

本文基于以下环境完成 spring-boot 2.3.2.RELEASEspring-cloud Hoxton.SR9spring-cloud-alibaba 2.2.6.RELEASEspring-cloud-starter-gateway 2.2.6.RELEASEspring-cloud-starter-loadbalancer 2.2.6.RELEASEnacos 2.0.3 一、思路 实现思路&#xff1a; 前端项目在请求后端接…

VSCode搭建内核源码阅读开发环境

0. 参考链接 使用VSCode进行linux内核代码阅读和开发_vscode阅读linux内核-CSDN博客 Ubuntu下的内核编译&#xff08;打造最精确的编译步骤&#xff09;_ubuntu 内核编译-CSDN博客 【Linux】&#xff08;Ubuntu&#xff09;内核编译 && 镜像制作_ubuntu 内核编译-CS…

Ubuntu部署jmeter与ant

为了整合接口自动化的持续集成工具&#xff0c;我将jmeter与ant都部署在了Jenkins容器中&#xff0c;并配置了build.xml 一、ubuntu部署jdk 1&#xff1a;先下载jdk-8u74-linux-x64.tar.gz&#xff0c;上传到服务器&#xff0c;这里上传文件用到了ubuntu 下的 lrzsz。 ubunt…

基于jenkins+docker实现CI/CD实践

项目简介 利用 Jenkins、Docker、SonarQube 和 Harbor 技术&#xff0c;搭建一个完整的 CI/CD 管道&#xff0c;实现持续集成、持续交付和持续部署的流程。通过自动化构建、测试、代码质量检查和容器化部署&#xff0c;将开发人员从繁琐的手动操作中解放出来&#xff0c;提高团…

SQLite运行时可加载扩展(三十五)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite轻量级会话扩展&#xff08;三十四&#xff09; 下一篇:SQLite的DBSTAT 虚拟表&#xff08;三十六) 1. 概述 SQLite 能够在运行时加载扩展&#xff08;包括新的应用程序定义的 SQL 函数、整理序列、虚拟表和 VFS&…

【深度学习】烟雾和火焰数据集,野外数据集,超大量数据集,目标检测,YOLOv5

标注了2w张数据集&#xff0c;是目标检测yolo格式的&#xff0c;有火焰、烟雾两个目标&#xff0c;下图是训练时候的样子&#xff1a; 训练方法看这里&#xff1a; https://qq742971636.blog.csdn.net/article/details/138097481 数据集介绍 都是博主辛苦整理和标注的&…

C++必修:类与对象(一)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 面向过程与面向对象 1.1. 面向过程 我们之前学习的C语言就是一种面向过程的语…

SVN小乌龟汉化问题

1.首先确认中文语言包和SVN版本需要一致&#xff08;点击右键 选择最后一个选项即可查看&#xff09; 官网链接 点击这个官网链接可以下载对应版本的中文包 2.下载好之后直接无脑下一步安装即可 3.如果还是没有中文&#xff0c;找到这个文件夹&#xff0c;把里面的内容全部删…

【css】select实现placeholder效果

场景&#xff1a;使用select下拉选择框的时候&#xff0c;需要像其他控件一样提示默认信息。 问题&#xff1a;表单控件select没有placeholder属性。 解决方案&#xff1a;通过css实现&#xff0c;不需要js <style>select > option[disabled]{ color:#999;cursor: n…

VUE3 ref,props,生命周期

1.--ref属性 1.1代码 1.1.1子表 <template><div class"person"><h1>中国</h1><h2 ref"title2">北京</h2><h3>尚硅谷</h3><button click"showLog">点我输出h2这个元素</button>&l…

【软测学习笔记】Day01

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;前端 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、测试介绍 1、什么是软件测试&#xff1f; 2、测试主流技能 二、测试常用分…

unity cinemachine相机 (案例 跟随角色移动)

安装相机包 打开包管理工具 在 unity registry 搜索cinemachine 会在maincamera中生成一个组件cinemachineBrain 只能通过虚拟相机操控 主相机 虚拟相机的参数 案例 1.固定相机效果 位置 在固定的地方 默认的模式 2.相机跟随人物效果 焦距设置 20 跟随设置 把playere…

Django框架之python后端框架介绍

一、网络框架及MVC、MTV模型 1、网络框架 网络框架&#xff08;Web framework&#xff09;是一种软件框架&#xff0c;用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具&#xff0c;以简化开发过程并提高开发效率。网络框架通常包括以下功能…

Web前端框架/库/工具

前言 俗话说&#xff1a;前端从步枪&#xff08;原生js&#xff09;到了半自动武器&#xff08;jQuery&#xff09;并进化为全自动武器&#xff08;三大框架&#xff08;angular&#xff0c;react&#xff0c;vue及其生态链&#xff09;&#xff09;。 常说工欲善其事必先利其…

python作业 切片逆转

题目&#xff1a; &#xff08;反转显示一个整数&#xff09;编写下面的函数&#xff0c;反向显示一个整数。 列如&#xff1a;reserse(3456)。编写一个测试程序&#xff0c;提示用户输入一个整数&#xff0c;然后显示它的反向数。 第一步定义一个函数&#xff1a; def rev…

AUTOSAR-SD篇

1 概述 服务发现模块的主要任务是管理在车内通信中被称为服务的功能实体的可用性&#xff0c;以及控制事件消息的发送行为。只允许向需要这些事件消息的接收器发送事件消息&#xff08;发布/订阅&#xff09;。 这里描述的解决方案也被称为SOME/IP-SD&#xff08;基于IP -服务发…