您当前的位置:首页 > 互联网教程

Flowable工作流入门看这篇就够了

发布时间:2025-05-22 00:14:16    发布人:远客网络

Flowable工作流入门看这篇就够了

一、Flowable工作流入门看这篇就够了

大家好,我是沙师弟,一名热爱探索和分享的程序员。

多年的程序员生涯让我对工作流有了深入了解。Java语言支持的工作流选择众多,从早期的JBPM到现在的Activiti、Camunda、Flowable等,都是常见的开源产品。

许多公司会选择开源产品进行个性化开发,以节省成本。今天我将为大家介绍Flowable,解决如何入手的问题。

Flowable基于Apache V2 license协议开源,支持BPMN 2.0行业标准。让我们用三十分钟的时间,了解Flowable的安装、建表、设计器、API等常见问题。

0.安装须知:本文基于Spring Boot集成方式进行介绍

创建Spring Boot项目,pom中加入依赖

1.1.1 MySQL:由于需要支持TIMESTAMP(6)类型,5.6.4及以下版本无法使用,5.7或8.0安装成功。两种初始化建表方式:sql脚本,或是boot自动。

按以下方法启动Spring Boot项目,可自动建表:建表时,连接串需要&nullCatalogMeansCurrent=true。建表后可关闭,下次启动不会再次建表。默认会启动liquibase,可关闭。

1.1.2 Oracle等其他数据库:据多个朋友反馈,Oracle建库可能出现建表语句不全的问题,推荐大家从github下载发布包,执行内部的建表语句,包括mysql也可以采用这种方式。

下载地址:github.com/flowable/flo...

下载后,执行里面的database脚本即可。初次使用,可以选择create- all的脚本执行。常用的db2、mssql、mysql、oracle、postgresql都有,还有一个奇怪的h2混了进来。

h2是演示版系统默认的库,但我没实际用过。

1.1.3国产数据库:默认情况下不支持国产脚本,经测试达梦可以成功使用,需要人工按照Oracle的库表调整。

2.设计器:各大开源流程工具都遵从BPM标准,一般流程设计都是以BPM格式的XML文件进行定义。但我们不可能去手写配置文件,一般都借助于可视化设计器。

官方给的Web设计器大致分两个版本,需要自行部署到Tomcat运行,并且需要连接到前面建的数据库。

2.1 Flowable 6.5版本以前的:6.5版本的方法仅供参考,本文使用2.2的设计器。

2.2 Flowable 6.6版本以后的:推荐使用。官网下载,只有2个包。

访问地址:(login/password: rest-admin/test)

(login/password: admin/test)

修改数据源:打开/WEB-INF/classes/flowable-default.properties,搜索spring.datasource相关配置,改为步骤1中的数据库地址即可。

2.3 Eclipse设计器插件:Eclipse设计器属于离线设计器,无需连库,成果以xml文件方式保存,可以通过发布程序发送至流程引擎。

2.4设计器说明:2.4.1启动事件、2.4.2结束事件、2.4.3用户任务、2.4.4服务任务、2.4.5脚本任务、2.4.6排他网关、2.4.7并行网关、2.4.8包容网关

3.表说明:自动生成的表中,有很多是支持流程设计器的表,真正流程运行所需的表并没有那么多。

3.1 ACT_RE_*、3.2 ACT_RU_*、3.3 ACT_ID_*、3.4 ACT_HI_*、3.5 ACT_GE_*

4.自定义表单:内置自定义表单功能,可以实现一些简单的表单定义,但真正业务开展时,很难对复杂多变的情况进行支撑,不建议使用。

5.流程版本:流程定义文件是xml格式,交由流程引擎的ProcessDefinition服务进行发布。

6. API:引擎API是与Flowable交互的最常用手段。总入口点是ProcessEngine。

6.1 ProcessEngines、6.2 RepositoryService、6.3 TaskService、6.4 IdentityService、6.5 FormService、6.6 HistoryService、6.7 ManagementService、6.8 DynamicBpmnService

7.设计器整合:在开发自己的系统时,整合工作流,我们往往需要程序里提供一个菜单,实现流程的可视化配置、拖拽、保存、版本管理等工作,利用官方的设计器,我们可以快速构造一个独立的Spring Boot工程,提供设计器界面,通过Url集成的方式加入我们的项目当中。

8.汉化:使用中,会遇到设计器汉化不完整的情况,可以在改造项目中,自行创建目录 resource/static/modeler/i18n/zh-CN.json,进行汉化。

以上就是对Flowable工作流的简单介绍,希望大家能顺利使用。

二、Flowable 工作流

本文旨在介绍如何在OA系统中应用开源工作流框架Flowable,以及如何通过Spring Boot集成Flowable实现请假流程的自动化处理。Flowable是一个轻量级的业务流程引擎,其支持BPMN 2.0流程定义标准,可用于定义、执行、查询流程实例以及管理流程相关数据。

在Spring Boot框架下使用Flowable,首先创建项目并使用Gradle进行依赖管理。项目可通过Github查看源代码。项目结构主要包括以下几个关键部分:

1.**构建文件**:使用`build.gradle`文件引入`flowable-spring-boot-starter`依赖,同时集成`h2`和`spring-boot-starter-data-jpa`用于内存数据库的管理,以及`spring-boot-starter-web`以支持基于REST的API接口。

2.**配置文件**:在`application.properties`中进行项目、数据库和Flowable的基本配置。

3.**主程序**:采用Spring Boot风格进行初始化,无需特殊设置。

4.**流程定义文件**:在`resource/processes`目录下,定义如`holiday-request.bpmn20.xml`的流程文件,其中包含用户任务审批、服务任务处理等。

5.**服务接口**:实现`ProcessService`和`ProcessServiceImpl`来提供通用的增删改查操作,具体操作通过`RuntimeService`、`HistoryService`和`TaskService`等实现。

6.**控制器和实现类**:通过`HolidayRequestController`和`HolidayRequestServiceImpl`进行流程实例的管理,后者继承自`ProcessServiceImpl`,并针对请假流程增加特定信息。

7.**动作实现**:利用`HolidayRequestApproveAction`和`HolidayRequestRejectAction`处理审批通过或拒绝,实现`JavaDelegate`接口。

完成上述步骤后,项目即具备了运行能力。使用PostMan等工具访问服务接口,即可进行流程创建、任务获取、审批等操作。例如,审批流程通过后,系统会执行指定的动作,并打印相关日志信息。

通过上述集成与应用,Flowable在OA系统中的使用不仅简化了请假流程的管理,也提升了流程处理的自动化水平,增强了系统效率与用户体验。

三、工作流flowable,activiti。如何做选择

工作流是一种用于抽象、描述和执行业务流程的技术,它通过特定语言构建流程模型,实现流程在计算机上的自动执行。工作流解决的问题主要在于业务流程的宏观与微观逻辑解耦,允许熟悉流程的人制定逻辑,而专业人士专注于流程的特定节点,简化了协同工作。

工作流提供了一个固定的框架来执行流程,但对某些没有特定顺序要求的情况,如每天完成作业、运动和游戏的序列,工作流无法解决,这类流程需要使用CMMN建模。

BPMN2.0协议是国际通用的业务建模语言,使流程设计清晰、易于理解和实现。协议主要包含事件、任务、连线和网关。一个流程至少包括一个事件和一个结束事件,网关用于控制流程逻辑,任务则分为人工任务、服务任务、接受任务和调用活动等类型。

互斥网关允许在满足条件的出口执行任务;并行网关允许所有出口任务同时执行;包容性网关满足任一条件即执行。

Flowable是BPMN2.0协议的Java实现,提供紧凑、高效的核心业务流程引擎,支持广泛的功能扩展,如Camel节点、Mule节点等。Activiti则专注于bpmn处理,设计与云服务兼容,如Spring Cloud、Docker、K8S。

Flowable的数据处理采用冷热分离,热数据在ACT_RU_系列表中,历史数据在ACT_HI_系列表中,定义数据在ACT_RE_系列表中。异步执行器(ASYNC EXECUTOR)用于处理定时事件与消息事件,通过冷热数据分离优化性能,显著提升并发处理能力。

云环境下,工作流设计应关注用户生命周期管理,简化API设计,明确角色划分,如启动、流转、结束流程等。用户角色分类为与流程沟通、服务提供和消息处理,确保不同部门和系统能够专注于自身职责,提高协作效率。