资讯动态

Flowable 引擎入门指南:Java 工作流、BPMN/CMMN/DMN 三引擎与部署形态全解析

发布时间:2026/9/15 22:30:12 来源:尧图企业网站定制
Flowable 引擎入门指南Java 工作流、BPMN/CMMN/DMN 三引擎与部署形态全解析【免费下载链接】flowable-engineA compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.项目地址: https://gitcode.com/GitHub_Trending/fl/flowable-engineFlowable 是一个紧凑、高效的工作流与业务流程管理BPM平台面向开发者、系统管理员与业务用户本指南围绕其官方 README 展开系统梳理它的核心定位、Apache 2.0 许可、JDK 17 运行环境、源码结构、嵌入式/服务化/云端等多种部署形态以及 Spring 集成与 REST API并深入仓库源码印证引擎的初始化原理。读完本文你将掌握 Flowable 的选型依据、环境准备、引擎构建与启动方式以及如何在本地通过 Docker 快速拉起一套可用的 REST 服务。Flowable 是什么三大引擎与平台定位Flowable读作 /flowəb(ə)l/在 README 中被定义为a compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.它是一套用 Java 编写、经长期生产验证的轻量级流程引擎组合具体包含BPMN 流程引擎Process Engine用于编排以人机交互或系统任务为核心的工作流CMMN 案例引擎Case Engine用于面向目标、可动态演进的案例管理场景DMN 规则引擎Decision Engine用于将决策逻辑从流程中剥离以决策表/决策需求图方式集中管理。三大引擎在仓库中均有独立模块承载例如 flowable-engine、flowable-cmmn-engine 与 flowable-dmn-engine并各自配套了 model、converter、image-generator、rest、spring 等子模块。此外仓库还包含 app 应用引擎flowable-app-engine、事件注册flowable-event-registry、批处理服务、任务服务、作业服务等模块整体模块化程度很高可按需组合引入。许可证与获取方式Flowable 采用Apache V2 许可证Apache License 2.0发布允许自由使用、修改与商用分发。仓库根目录的 LICENSE 文件即为许可证全文。获取 Flowable 的途径主要有两条下载发行包官方下载页面提供包含预构建 jar、war 与文档的发行包获取源码README 说明发行包中大部分源码以 jar 形式附带完整源码则托管在 Flowable 官方 GitHub 仓库flowable-engine。对当前仓库而言它就是一个完整的源码工程根目录 pom.xml 以org.flowable:flowable-root作为聚合 POM当前版本号为8.1.0-SNAPSHOT通过modules依次聚合了modules/flowable-bom、modules/flowable-parent、modules/flowable-dependencies以及 bpmn-model、engine-common、variable-service、task-service、job-service、idm-engine、dmn-engine、cmmn-engine、engine、spring-security、mail 等全部子模块可以基于根 POM 一键构建整个工程。运行环境要求JDK 17README 明确给出了版本与运行时的对应关系Flowable V7含当前主分支要求 JDK 17 或更高版本。可以直接使用 Linux 发行版自带的 JDK或前往 Adoptium 网站下载Latest LTS Release安装包按页面指引完成安装Flowable V6 仍在维护中其flowable6.x分支支持 Java 8。安装完成后在命令行执行以下命令验证 JDK 是否就绪java -version命令应输出当前安装的 JDK 版本号。仓库根 pom.xml 中也定义了jdk.version17/jdk.version与 README 的 JDK 17 要求完全一致。从零构建一个流程引擎源码级初始化原理三种标准构建方式引擎的构建入口是 ProcessEngineConfiguration其类注释给出了三种最常用的创建方式方式一基于默认配置文件flowable.cfg.xml生产常用ProcessEngine processEngine ProcessEngineConfiguration .createProcessEngineConfigurationFromResourceDefault() .buildProcessEngine();createProcessEngineConfigurationFromResourceDefault()内部实际调用createProcessEngineConfigurationFromResource(flowable.cfg.xml, processEngineConfiguration)即从 classpath 根目录读取名为flowable.cfg.xml的配置文件并定位其中 id 为processEngineConfiguration的 bean。方式二纯编程式独立配置无需配置文件ProcessEngine processEngine ProcessEngineConfiguration .createStandaloneProcessEngineConfiguration() .buildProcessEngine();这会创建一个独立模式Standalone引擎默认连接远程 H2 数据库jdbc:h2:tcp://localhost/flowable。独立模式意味着引擎自己管理 JDBC 连接上的事务每个服务方法一个事务。方式三内存数据库配置测试首选ProcessEngine processEngine ProcessEngineConfiguration .createStandaloneInMemProcessEngineConfiguration() .buildProcessEngine();此方式创建连接内存 H2 数据库的引擎默认数据库 schema 策略为create-drop非常适合单元测试场景。自定义配置无论哪种方式都可以在调用buildProcessEngine()之前通过 setter 链调整参数例如ProcessEngine processEngine ProcessEngineConfiguration .createProcessEngineConfigurationFromResourceDefault() .setMailServerHost(gmail.com) .setJdbcUsername(mickey) .setJdbcPassword(mouse) .buildProcessEngine();从源码看ProcessEngineConfiguration 还内置了大量可配置项的默认值例如processEngineName默认defaulthistory默认级别为HistoryLevel.AUDIT.getKey()审计级别idBlockSize默认 2500ID 块大小减少数据库序列访问defaultFailedJobWaitTime与asyncFailedJobWaitTime默认 10 秒失败作业重试等待时间isCreateDiagramOnDeploy默认true部署时自动生成流程示意图历史清理相关enableHistoryCleaning默认关闭cleanInstancesEndedAfter默认 365 天cleanInstancesBatchSize默认 100。ProcessEngines服务器环境下的引擎注册表在应用服务器Servlet 容器环境中通常使用 ProcessEngines 这个辅助类统一管理引擎生命周期init()扫描 classpath 上的flowable.cfg.xml纯 Flowable 风格配置与flowable-context.xmlSpring 风格配置为每一份配置构建一个 ProcessEngine 并注册到内部 Map 中同时记录EngineInfo。源码注释特别提示不存在懒加载必须确保 context-listener 已配置或引擎已显式创建注册getDefaultProcessEngine()/getProcessEngine(name)按名称获取引擎未初始化时会自动触发init()registerProcessEngine()/unregister()编程式注册与注销引擎destroy()关闭全部已注册引擎应在服务器关闭时调用retry(resourceUrl)对先前初始化失败的配置进行重试。init()的查找逻辑会先通过classLoader.getResources(flowable.cfg.xml)收集所有匹配资源并用SetURL去重防止类加载器返回重复 URL 导致重复启动再逐个调用initProcessEngineFromResource随后再查找flowable-context.xml并通过反射调用org.flowable.spring.SpringConfigurationHelper.buildProcessEngine完成 Spring 风格引擎的构建。ProcessEngine 暴露的核心服务构建完成后ProcessEngine 接口提供了访问全部 BPM/工作流能力服务的入口服务职责RepositoryService部署管理Deployment与流程定义ProcessDefinition的查询与维护RuntimeService启动流程实例ProcessInstance、运行时流程实例搜索TaskService人工任务管理认领claim、完成complete、指派assign等IdentityService管理用户、用户组及其关系ManagementService引擎管理、运维操作HistoryService查询进行中与已结束流程实例的历史信息FormService表单数据服务DynamicBpmnService运行时动态修改 BPMN 元素ProcessMigrationService流程实例跨版本迁移类注释强调通常一个最终用户应用只需要一个中心 ProcessEngine 实例构建引擎是开销较大的操作应当避免重复执行建议存放在静态字段或 JNDI 中ProcessEngine 本身是线程安全对象无需额外加锁。部署形态从嵌入式到云原生README 明确指出 Flowable 可以嵌入式运行在 Java 应用中把引擎 jar 直接加入依赖通过ProcessEngineConfiguration构建引擎与应用共享进程与事务作为服务运行在服务器上例如打包为 Web 应用部署到 Servlet 容器或使用官方flowable-rest应用提供 REST 服务集群与云端运行引擎本身支持多实例部署配合消息队列等外部组件实现分布式执行。用 Docker 快速体验 REST 服务仓库的 docker 目录提供了预配置的Flowable REST运行方案基于 Docker Compose。以 REST PostgreSQL 为例启动脚本为./rest-postgres.sh start|stop|info服务地址http://localhost:8080/flowable-rest/Swagger 文档http://localhost:8080/flowable-rest/docs/默认登录rest-admin/test对应的组合编排文件 docker/config/rest-postgres.yml 展示了关键配置services: flowable-rest-app: image: flowable/flowable-rest depends_on: - flowable-rest-db environment: - SERVER_PORT8080 - SPRING_DATASOURCE_DRIVER-CLASS-NAMEorg.postgresql.Driver - SPRING_DATASOURCE_URLjdbc:postgresql://flowable-rest-db:5432/flowable - SPRING_DATASOURCE_USERNAMEflowable - SPRING_DATASOURCE_PASSWORDflowable - FLOWABLE_COMMON_APP_IDM-ADMIN_USERadmin - FLOWABLE_COMMON_APP_IDM-ADMIN_PASSWORDtest ports: - 8080:8080 entrypoint: [./wait-for-something.sh, flowable-rest-db, 5432, PostgreSQL, /flowable-entrypoint.sh] flowable-rest-db: image: postgres:9.6-alpine environment: - POSTGRES_PASSWORDflowable - POSTGRES_USERflowable - POSTGRES_DBflowable该编排会先通过wait-for-something.sh等待 PostgreSQL 就绪再启动 REST 应用并将8080端口映射到宿主机。若需要高可用/负载均衡场景仓库还提供了 HAProxy PostgreSQL 的rest-loadbalancer-postgres.sh start|stop|scale|info方案。此外docker/README.md 提到自 6.7.3 起 Docker 镜像使用 cosign 签名可用仓库根目录的docker/cosign.pub公钥执行cosign verify -key cosign.pub flowable/flowable-rest:6.7.3进行校验。数据库初始化引擎在首次启动时会根据配置的 schema 策略自动创建所需表结构。仓库在 distro/sql/create/all 目录下提供了 MySQL、PostgreSQL、Oracle、DB2、MSSQL 五种数据库的建表脚本如flowable.mysql.all.create.sql同时 distro/sql/upgrade/all 目录按版本序列存放了从 5.99.0 到 8.0.0 的增量升级脚本便于在升级引擎时同步演进数据库。Spring 与 Spring Boot 集成README 强调 Flowable 与 Spring 的完美集成integrates perfectly with Spring这在仓库模块结构中得到了充分体现flowable-springSpring 集成核心模块ProcessEngines 中的init()会通过org.flowable.spring.SpringConfigurationHelper解析flowable-context.xml并构建引擎因此可以在 Spring 容器中以声明式方式配置引擎、事务管理器与服务 Beanflowable-spring-boot/flowable-spring-boot-starters/flowable-spring-boot-autoconfigure提供 Spring Boot 自动配置共 89 个 Java 源文件配合flowable-spring-boot-starter-process、-cmmn、-dmn、-rest、-actuator等 starter可在 Spring Boot 应用中通过属性文件如spring.datasource.*、flowable.*完成零 XML 配置仓库还包含 flowable-spring-security 用于与 Spring Security 集成以及 flowable-cdi 支持 CDI 环境。flowable-spring-boot-samples目录下提供了 sample-app、sample-process、sample-cmmn、sample-dmn、sample-ldap、sample-jpa、sample-rest-api 等大量可运行示例是学习集成的首选参考。丰富的 Java 与 REST APIREADME 将丰富的 Java 和 REST API作为引擎编排人工或系统活动的理想能力来源Java API即上文介绍的ProcessEngine各服务接口RuntimeService、TaskService、HistoryService等可在嵌入式应用中直接调用REST API由 flowable-rest219 个 Java 源文件与 flowable-app-rest 模块实现支持通过 HTTP 完成部署、启动流程、任务办理、查询历史等操作REST 模块自带 106 个测试类验证接口行为。仓库 public-api/references 目录还维护了 OpenAPIYAML与 Swagger 规范文档覆盖 process、decision、cmmn、app、eventregistry 等子系统的接口定义方便生成客户端与在线调试。建模工具Flowable Design流程定义BPMN、CMMN、DMN 等模型需要使用建模工具绘制。README 说明 Flowable 提供Flowable Cloud Design免费在线建模应用支持 CMMN、BPMN、DMN 及其他模型类型注册 Flowable 账户即可开始使用。仓库内的 docs/docusaurus/docs/assets/bpmn、docs/docusaurus/docs/assets/cmmn、docs/docusaurus/docs/assets/dmn 目录存放了大量示例模型图片与文档可直观了解 BPMN/CMMN/DMN 图形的呈现效果模型文件经 flowable-bpmn-converter、flowable-cmmn-converter、flowable-dmn-xml-converter 解析后交给对应引擎执行。参与贡献与问题反馈README 对社区协作给出了明确指引贡献代码Flowable 的贡献流程与开发规范记录在其官方 Wiki 中参与前应先阅读报告问题README 引用了一篇经典的《提问的智慧》How To Ask Questions The Smart Way建议开发者在提问前先自行排查、提供可复现信息问题与讨论可以发布到 Flowable 官方论坛缺陷则提交到官方 issue 跟踪系统。从仓库结构看本仓库也具备完整的质量保障体系各模块均带测试目录如 flowable-engine 有 639 个测试类、flowable-cmmn-engine 有 225 个测试类、flowable5-test 有 439 个测试类scripts 目录提供run-compatibility-tests.sh、run-flowable5-tests.sh等测试运行脚本顶层还有 mvnw Maven Wrapper 便于无本地 Maven 环境下执行构建。小结本文以仓库 README.md 为主线系统梳理了 Flowable 的三引擎定位、Apache 2.0 许可、JDK 17 环境要求、flowable.cfg.xml/Spring 配置下的引擎构建与ProcessEngines初始化机制、嵌入式/服务化/Docker 容器/集群云端四种部署形态以及 Spring 生态、REST API 与 Flowable Design 建模工具。无论你是要在 Java 应用中嵌入式编排业务流还是以服务化方式为团队提供流程平台都可以从本文的源码路径与配置文件出发在仓库内继续深入对应的模块与示例代码。【免费下载链接】flowable-engineA compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.项目地址: https://gitcode.com/GitHub_Trending/fl/flowable-engine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价