Turbo插件开发指南:从零构建自定义流程节点与扩展能力

发布时间:2026/5/20 12:42:47

Turbo插件开发指南:从零构建自定义流程节点与扩展能力 Turbo插件开发指南从零构建自定义流程节点与扩展能力【免费下载链接】turboTurbo is a light-weight flow engine framework, support BPMN2.0. 一款轻量级流程引擎服务框架可作为底层服务支持各类流程设计、低代码设计、工作流、服务编排等场景项目地址: https://gitcode.com/gh_mirrors/turb/turboTurbo是一款轻量级流程引擎服务框架支持BPMN2.0规范可作为底层服务支持各类流程设计、低代码设计、工作流、服务编排等场景。本文将带你从零开始学习如何开发Turbo插件构建自定义流程节点与扩展能力轻松扩展Turbo框架的功能。为什么选择Turbo插件开发Turbo插件开发是扩展Turbo流程引擎功能的最佳方式它具有以下优势无需修改主框架代码通过插件机制开发者可以在不改动Turbo核心代码的情况下扩展功能灵活的SPI加载机制支持在运行时动态发现和加载插件多种扩展场景可增加新的元素节点处理能力、使用自定义的ID生成器、自定义表达式计算器等松耦合架构插件与主框架分离便于维护和升级图Turbo流程引擎支持的节点类型示例展示了流程节点的多样化应用场景插件结构和要求插件目录结构一个标准的Turbo插件项目应包含以下目录结构src/ └── main/ └── resources/ ├── plugin.properties └── META-INF/ └── services/ ├── com.didiglobal.turbo.engine.plugin.ElementPlugin ├── com.didiglobal.turbo.engine.plugin.ExpressionCalculatorPlugin └── com.didiglobal.turbo.engine.plugin.IdGeneratorPlugin插件类型与接口Turbo提供了三种主要的插件接口开发者可根据需求选择实现ElementPlugin扩展新的元素节点处理能力public interface ElementPlugin extends Plugin{ String ELEMENT_TYPE_PREFIX turbo.plugin.element_type.; ElementExecutor getElementExecutor(); ElementValidator getElementValidator(); Integer getFlowElementType(); }ExpressionCalculatorPlugin自定义表达式计算器public interface ExpressionCalculatorPlugin extends Plugin{ ExpressionCalculator getExpressionCalculator(); }IdGeneratorPlugin自定义ID生成器public interface IdGeneratorPlugin extends Plugin{ IdGenerator getIdGenerator(); }所有插件都需要实现顶层Plugin接口该接口定义了插件的基本规范public interface Plugin { String PLUGIN_SUPPORT_PREFIX turbo.plugin.support.; String PLUGIN_INIT_SQL_FILE_PREFIX turbo.plugin.init_sql.; String getName(); Boolean support(); Boolean init(); }从零开始的插件开发流程 步骤1创建插件项目使用Maven构建插件项目mvn archetype:generate -DgroupIdcom.example.plugin -DartifactIdMyPlugin步骤2实现插件功能以自定义ID生成器插件为例实现IdGeneratorPlugin接口public class MyPlugin implements IdGeneratorPlugin { Override public String getName() { return MyPluginName; } Override public Boolean support() { return true; } Override public Boolean init() { System.out.println(MyPlugin initialized); return true; } Override public IdGenerator getIdGenerator() { return new MyDefinedIdGenerator(); } }步骤3添加配置文件在src/main/resources/plugin.properties中定义插件必要信息turbo.plugin.init_sql.MyPluginsql/myplugin.sql在src/main/resources/META-INF/services/文件夹下创建接口全路径文件并指定插件实现类创建com.didiglobal.turbo.engine.plugin.IdGeneratorPlugin文件内容为com.example.plugin.MyPlugin步骤4测试插件功能插件开发完成后需要进行全面测试初始化测试检查插件的初始化逻辑是否正确执行功能点测试验证插件主要功能是否符合预期兼容性测试确保插件与Turbo框架版本兼容插件加载机制详解Turbo采用SPIService Provider Interface机制加载插件整个过程如下通过ServiceLoader加载所有插件调用插件的getName方法检查是否存在名称冲突调用插件的support方法判断是否启用该插件对于元素节点插件调用getFlowElementType检查元素类型冲突调用插件的init方法完成初始化确保以下条件满足插件才能被正确加载META-INF/services/目录下存在对应插件类型的接口全路径文件文件中正确指定了插件实现类的全路径插件DAO扩展技巧Turbo通过MyBatis拦截器的方式支持DAO层扩展步骤如下步骤1实现CustomOperationHandler接口public class ParallelNodeInstanceHandler implements CustomOperationHandler { private static final Logger LOGGER LoggerFactory.getLogger(ParallelNodeInstanceHandler.class); Override public void handle(SqlCommandType commandType, MappedStatement mappedStatement, Object parameterObject, Object originalResult, SqlSessionFactory sqlSessionFactory) { // 实现自定义数据库操作逻辑 } }步骤2注册自定义操作处理器Configuration public class ParallelPluginConfig { PostConstruct public void init() { CustomOperationHandlerRegistry.registerHandler(EntityPOEnum.NODE_INSTANCE, new ParallelNodeInstanceHandler()); CustomOperationHandlerRegistry.registerHandler(EntityPOEnum.NODE_INSTANCE_LOG, new ParallelNodeInstanceLogHandler()); } }插件配置规范为确保插件的兼容性和可维护性请遵循以下配置规范配置项配置名称示例配置说明turbo.plugin.support.${pluginName}插件开关配置turbo.plugin.support.ParallelGatewayElementPluginfalse控制插件是否启用turbo.plugin.init_sql.${pluginName}数据库初始化脚本路径turbo.plugin.init_sql.ParallelGatewayElementPluginsql/parallelGateway.sql指定初始化脚本位置turbo.plugin.element_type.${pluginName}元素节点类型turbo.plugin.element_type.ParallelGatewayElementPlugin9指定元素节点类型避免冲突示例插件参考Turbo项目中提供了并行网关插件作为参考示例 并行网关插件总结通过本文的指南你已经了解了Turbo插件开发的基本流程和核心概念。现在你可以开始开发自己的插件扩展Turbo流程引擎的功能满足特定业务需求。无论是自定义流程节点、表达式计算器还是ID生成器Turbo的插件机制都能让你轻松实现功能扩展。开始你的Turbo插件开发之旅吧如有疑问可以参考官方文档PluginDevelopGuide.md获取更多详细信息。【免费下载链接】turboTurbo is a light-weight flow engine framework, support BPMN2.0. 一款轻量级流程引擎服务框架可作为底层服务支持各类流程设计、低代码设计、工作流、服务编排等场景项目地址: https://gitcode.com/gh_mirrors/turb/turbo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻