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 与可配置项并不完全相同。