跳到主要内容

Flowable 引擎自定义配置

Flowable 的 Spring Boot 集成允许在引擎创建前取得对应的引擎配置对象,并在其上注册自定义扩展。本文介绍这种配置机制,并分别说明 BPMN、DMN 和 CMMN 引擎可以如何使用它。

这些配置示例展示的是扩展方式和职责边界,不依赖特定业务实现。选择扩展点时,应先确认需求属于引擎初始化、模型解析还是运行时执行,再将对应实现接入目标引擎。

配置执行时机​

在 Spring Boot 应用中,可以把 EngineConfigurationConfigurer<T> 的实现注册为 Spring Bean。Flowable 自动配置会把它应用到匹配的引擎配置对象上,然后继续创建引擎。

T 用来区分引擎配置类型:流程引擎的定制器接收 BPMN 流程配置对象,决策引擎接收 DMN 配置对象,案例引擎接收 CMMN 配置对象。这个类型边界让各引擎的扩展可以独立注册,也能让 Spring 注入的依赖参与定制实现的创建。

配置回调发生在引擎完成构建之前。因此,回调中注册的变量类型、解析处理器、执行器或校验器会成为引擎初始化的一部分,并供之后创建的服务使用。它适合设置启动时确定的引擎行为,不是对已运行引擎的即时热更新接口;修改配置后通常需要重新创建或重启引擎才能生效。

Spring Boot 配置示意​

下面的示例只说明 Bean 注册与回调的结构。扩展对象和配置项应按实际需求实现:

@Configuration
class WorkflowEngineExtensions {

@Bean
EngineConfigurationConfigurer<SpringProcessEngineConfiguration> processEngineConfigurer() {
return configuration -> {
// 在这里注册 BPMN 流程引擎扩展
};
}
}

若使用 Flowable 的独立引擎创建方式、XML 配置或自定义工厂,而不是 Spring Boot 自动配置,则应通过相应创建入口配置引擎;上述 Bean 回调不会自动应用到这些独立创建的引擎。

选择扩展点​

需求常见扩展方向
增加流程变量的存储、读取或序列化能力BPMN 自定义变量类型
在部署时识别或补充模型元素BPMN / CMMN 解析处理器
改变某类活动或任务的运行行为对应引擎的行为工厂或活动扩展
改变决策表达式或规则的求值方式DMN 规则引擎执行器
在模型部署时执行额外检查对应引擎的模型校验扩展

详情见 BPMN 自定义配置、DMN 自定义配置 和 CMMN 自定义配置。

设计与排查建议​

  • 将每个定制器绑定到它真正要修改的引擎配置类型,避免把流程、决策和案例配置混在一起。
  • 在回调中只做引擎构建所需的注册和设置;耗时的远程调用或持续运行的后台任务应由单独的 Spring 组件负责。
  • 对自定义执行器、工厂和解析器进行单元测试,并验证引擎启动时确实执行了对应的配置回调。
  • 如果多个配置器会修改同一配置项,应明确它们的执行次序,或合并为一个负责该配置项的定制器。
  • 检查所用 Flowable 版本及 starter 是否提供目标扩展点;不同引擎的 API 与可配置项并不完全相同。

参考资料​