1.springboot+ flowable 配置动态数据源(程序启动时进行指定flowable数据库启动)
2.springboot开源项目 (4)--Flowable 流程
3.Flowable工作流入门看这篇就够了
4.Flowable&springbootä¹RepositoryServiceç使ç¨
5.Flowable实战(二)集成Springboot
springboot+ flowable 配置动态数据源(程序启动时进行指定flowable数据库启动)
在项目中整合了flowable工作流后,源码为了避免数据库表混淆,源码决定将flowable数据库与原项目数据库进行分离,源码实施多数据源配置策略。源码
通过引入mybatis-plus提供的源码dynamic工具包及相应的jar包,我们可以在项目配置文件中进行多数据源的源码现场云 源码配置,实现资源的源码合理分配。
配置完成后,源码使用DS注解实现数据源的源码切换,从而避免了数据混淆的源码问题。
然而,源码在项目启动时,源码遇到了问题。源码默认使用的源码是原项目数据源,因此在创建AppEngineFactoryBean这个bean时,源码系统提示找不到相关表,因为flowable数据库尚未建立。
问题在于启动时默认数据源为原项目数据库,而该数据库中并未包含flowable的表结构,导致flowable启动失败。
通过分析错误信息,我们了解到底层使用了SPI(Service Provider Interface)机制。基于此,iwebmall 源码我们可以通过在程序启动时,修改SPI机制默认数据源的方式来解决这一问题。
为此,我们编写了一个实现类,用于在程序启动阶段将flowable的数据源进行替换,确保flowable数据库能够正确加载。
同时,为避免对程序正常运行产生不必要的干扰,我们编写了清除类,用于在程序启动完成后清除flowable数据源,恢复原设置。
最后,通过在SPI机制中指定EngineConfigurator实现类的路径,我们实现了在程序启动时,根据需要动态切换数据源,从而解决了flowable数据库启动时的问题。
启动程序后,一切顺利,flowable工作流得以在独立的数据源环境中正常运行,满足了项目需求。
springboot开源项目 (4)--Flowable 流程
在gitee.com/luozijing/...开源项目中,集成了activity和Flowable工作流,anyq 源码可以快速从页面建立一个流程,完成对应节点的任务。流程全程自动化和可视化,体验较好。下面将介绍项目中如何集成以及Flowable流程是如何工作的。activity流程存在较多缺陷,暂时不研究。源项目在线体验地址为dashboard.yudao.iocoder.cn...
对于不了解Flowable的读者,可以查阅相关资料。本文主要介绍开源项目。
Flowable运作流程及对象模型:根据流程规范bpmn2.0构建流程图,建立bpmn模型,对应ACT_RE_MODEL表,存储bpmn.xml到ACT_GE_BYTEARRAY表,形成模型存储对象。后续绑定流程规则,部署流程,流程任务。这些操作都是基于bpmn保存的模型对象。项目中对应的流程设计页面如下,可亲自体验设计流程,导出bpmn.xml的itoa 源码流程图。
流程设计完成后,开始部署流程以及发起流程任务。在ACT_RU_EXECUTION表中创建新的流程id,ACT_RU_TASK表记录当前的任务状态以及任务处理人。它们都是基于ACT_RE_PROCDEF一开始定义的流程图,以及相应的流程规则等。在整个流程实施过程中,对于各个不同的任务参与者都是可视化的。
Spring Boot集成Flowable:新建了一个单独的模块yudao-spring-boot-starter-flowable承载Flowable的引入,设置Flowable引擎的用户上下文为org.flowable.common.engine.impl.identity.Authentication;设置用户ID。
具体的Flowable二次开发放在yudao-module-bpm-impl-flowable中,引入上述模块,即可使用Flowable功能。
项目中对Flowable进行了配置,实现流程变更、任务变更时的监听器,以及根据任务分配的规则在任务创建时进行任务分配。监听器在项目中主要作用是更新对应的业务拓展表。
项目中,对应Flowable的api建立了不同的controller来开放功能,包括model的增删查改,流程的mobiscroll 源码创建、增删查改、部署以及任务的查看、审批等。都是基于原有Flowable功能做的。较大区别是增加了任务自动分配审批角色的功能,在流程定义中,可以给不同的任务分配审批人,建立分配规则,映射相应符合规则的账号,同时规则也能自定义,在代码中实现规则的寻找。这样不用人工输入确定审批人,确实比较方便。
项目中介绍的具体步骤如下:
对应不同分配规则策略,包含角色、部门、一级领导、自定义脚本等。
开源项目实现的Flowable结合前端使用体验还是不错的,二次开发使用起来的说明也较为不错。不过还有许多Flowable的功能没有进行整合暴露出来,许多功能特性很难了解到。
Flowable工作流入门看这篇就够了
大家好,我是沙师弟,一名热爱探索和分享的程序员。
多年的程序员生涯让我对工作流有了深入了解。Java语言支持的工作流选择众多,从早期的JBPM到现在的Activiti、Camunda、Flowable等,都是常见的开源产品。
许多公司会选择开源产品进行个性化开发,以节省成本。今天我将为大家介绍Flowable,解决如何入手的问题。
Flowable基于Apache V2 license协议开源,支持BPMN 2.0行业标准。让我们用三十分钟的时间,了解Flowable的安装、建表、设计器、API等常见问题。
0. 安装须知:本文基于Spring Boot集成方式进行介绍
官方网址:flowable.com/
Github:github.com/flowable/
开源协议Apache-2.0
基础软件及版本:1. Maven
创建Spring Boot项目,pom中加入依赖
1.1 建表
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个包。
访问地址:/post/
Flowable实战(二)集成Springboot
打开IDEA,创建名为Springboot项目的空Springboot新项目,选择Springboot 2.6.2,JDK为8。生成后,pom.xml文件包含Springboot版本相关依赖。
修改pom.xml,加入Flowable依赖包,确保与Springboot版本兼容,否则项目可能无法启动。检查Flowable不同版本对应的springboot版本,如有必要手动刷新Maven项目以获取依赖。
编写Spring Boot应用,需要数据库支持。运行代码时,会提示需要添加数据库驱动依赖。添加MySQL数据库依赖,根据连接数据库版本修改依赖包版本,确保匹配。
在application.properties文件中配置数据源。应用成功启动后,查看数据库,确认已自动创建Flowable表。若出现数据库连接异常,检查数据源配置与MySQL依赖包版本。
应用集成REST支持,添加REST依赖。创建Controller和Service层,简单使用示例遵循Flowable官方文档。在resources/processes目录下创建BPMN 2.0流程定义文件,自动部署流程。
编写Service层代码,实现流程启动和任务列表获取功能。Controller层代码通过Spring Boot自动扫描并发现服务类。运行应用后,使用cURL等工具与REST API进行交互。
总结,本篇介绍了Springboot与Flowable的基本集成。后续章节将涉及Springboot其他特性,如打包WAR文件、Spring Security支持等,进一步深化Springboot与Flowable的集成应用。