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)机制。基于此,intellj预览显示源码我们可以通过在程序启动时,修改SPI机制默认数据源的方式来解决这一问题。
为此,我们编写了一个实现类,用于在程序启动阶段将flowable的数据源进行替换,确保flowable数据库能够正确加载。
同时,为避免对程序正常运行产生不必要的干扰,我们编写了清除类,用于在程序启动完成后清除flowable数据源,恢复原设置。
最后,通过在SPI机制中指定EngineConfigurator实现类的路径,我们实现了在程序启动时,根据需要动态切换数据源,从而解决了flowable数据库启动时的问题。
启动程序后,一切顺利,flowable工作流得以在独立的数据源环境中正常运行,满足了项目需求。
springboot开源项目 (4)--Flowable 流程
在gitee.com/luozijing/...开源项目中,集成了activity和Flowable工作流,c语言源码购买可以快速从页面建立一个流程,完成对应节点的任务。流程全程自动化和可视化,体验较好。下面将介绍项目中如何集成以及Flowable流程是如何工作的。activity流程存在较多缺陷,暂时不研究。源项目在线体验地址为dashboard.yudao.iocoder.cn...
对于不了解Flowable的读者,可以查阅相关资料。本文主要介绍开源项目。
Flowable运作流程及对象模型:根据流程规范bpmn2.0构建流程图,建立bpmn模型,对应ACT_RE_MODEL表,存储bpmn.xml到ACT_GE_BYTEARRAY表,形成模型存储对象。后续绑定流程规则,部署流程,流程任务。这些操作都是基于bpmn保存的模型对象。项目中对应的流程设计页面如下,可亲自体验设计流程,导出bpmn.xml的交易所源码、流程图。
流程设计完成后,开始部署流程以及发起流程任务。在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的增删查改,流程的delphi+网络+源码创建、增删查改、部署以及任务的查看、审批等。都是基于原有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的集成应用。