Solon 集成 LiteFlow:轻量级工作流引擎的极简实践指南

Solon 集成 LiteFlow:轻量级工作流引擎的极简实践指南

一言准备中...

Solon 集成 LiteFlow:轻量级工作流引擎的极简实践指南

在复杂的业务场景中,工作流引擎是解耦业务逻辑、提升可维护性的核心组件。传统的BPM引擎(如 Activiti、Flowable)虽功能强大,但学习曲线陡峭且资源消耗较大。LiteFlow 作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择。本文将详细讲解 Solon 集成 LiteFlow 的全过程,助你轻松驾驭轻量级流程编排。

一、LiteFlow核心优势

  • 轻量嵌入:仅需2个核心JAR包,无数据库依赖
  • 规则驱动:基于EL表达式的链式规则配置,变更实时生效
  • 组件化设计:业务逻辑封装为可复用组件,支持热插拔
  • 高性能:无反射执行,单线程每秒可处理万级任务
  • 多类型支持:顺序流、条件分支、循环、嵌套、异步并行

二、Solon 集成实战

准备:添加依赖包

<!-- pom.xml 依赖 --> <dependencies> <dependency> <groupId>com.yomahub</groupId> <artifactId>liteflow-solon-plugin</artifactId> <version>最新版</version> </dependency> </dependencies> 

步骤1:定义流程组件

import com.yomahub.liteflow.core.NodeComponent; import org.noear.solon.annotation.Managed; // 普通组件示例 @Managed("paymentAction") public class PaymentAction extends NodeComponent { @Override public void process() { PaymentContext context = this.getContextBean(PaymentContext.class); // 执行支付逻辑 System.out.println("处理支付, 订单:" + context.getOrderId()); } } // 条件组件示例(用于分支判断) @Managed("userCheck") public class UserCheck extends NodeComponent { @Override public void process() { UserContext context = this.getContextBean(UserContext.class); if(context.isVip()) { this.setIsEnd(true); // 终止流程 } } } 

步骤2:配置流程规则

resources/flow.yml 配置EL表达式规则:

liteflow: rule-source: config/flow.el.xml 

resources/config/flow.el.xml

<?xml version="1.0" encoding="UTF-8"?> <flow> <chain name="orderProcess"> THEN( initOrder, WHEN( checkInventory, checkUserCredit ), SWITCH(choosePayWay).TO( CASE(aliPay).DO(aliPayAction), CASE(wechatPay).DO(wechatPayAction) ), AFTER(paymentAction).WHEN(userCheck) ); </chain> </flow> 

步骤3:初始化上下文并执行流程

import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.flow.LiteflowResponse; import org.noear.solon.annotation.*; @Controller public class OrderController { @Inject private FlowExecutor flowExecutor; @Post @Mapping("/submitOrder") public String submitOrder(@Body OrderDTO order) { OrderContext context = new OrderContext(); context.setOrderId(order.getId()); context.setAmount(order.getAmount()); LiteflowResponse response = flowExecutor.execute2Resp( "orderProcess", context, OrderContext.class ); return response.isSuccess() ? "订单成功" : "流程失败"; } } 

三、高级特性应用

异步并行执行

<!-- 配置并行节点 --> <chain name="parallelChain"> THEN( a, WHEN(b, c, d), <!-- b,c,d并行执行 --> e ); </chain> 

嵌套子流程

<chain name="mainFlow"> THEN(prepare, SUB(orderProcess), notify); </chain> 

组件降级处理

import com.yomahub.liteflow.core.NodeComponent; import org.noear.solon.annotation.Managed; @Managed("paymentAction") public class PaymentAction extends NodeComponent { @Inject FallbackService fallbackService; @Override public void process() {...} @Override public void onError() { // 支付失败时执行补偿逻辑 fallbackService.compensate(); } } 

规则热更新

import com.yomahub.liteflow.flow.FlowBus; import org.noear.solon.annotation.Managed; import org.noear.solon.core.bean.LifecycleBean; // 动态添加规则 FlowBus.addChain("newChain", "THEN(a,b,c)"); // 监听规则变化 @Managed public class FlowConfig implements LifecycleBean { @Override public void postStart() throws Throwable { FileWatcher.watch(Paths.get("config/flow"), () -> FlowBus.reloadRule()); } } 

四、监控与调试

流程跟踪

LiteflowResponse response = flowExecutor.execute2Resp( "orderProcess", context, OrderContext.class, // 开启执行链路跟踪 SlotCallbackBuilder.builder().build() ); System.out.println(response.getExecuteStepStr()); 

输出示例:initOrder[✓] => checkInventory[✓] => checkUserCredit[✓] => ...

可视化监控(需企业版)

liteflow: monitor: enable-log: true queue-limit: 200 delay: 30 period: 120 

五、最佳实践建议

上下文设计原则

  • 使用独立Context对象传递流程数据
  • 避免在组件中操作数据库事务(应在Service层控制)

组件规范

  • 单个组件代码不超过200行
  • 组件命名采用"业务域+操作"格式(如:stockDeduct)

异常处理

  • 业务异常通过 throw BusinessException 中断流程
  • 系统异常自动触发 onError 回调

规则管理进阶

// 从数据库加载规则 @Managed public class DBRuleLoader implements RuleSource { @Override public String loadRules() { return ruleMapper.selectByApp("order-service"); } } 

结语

通过 Solon 集成 LiteFlow,我们实现了:

  • 业务可视化编排:复杂流程通过EL表达式清晰定义
  • 组件热插拔:新增业务节点无需停服
  • 极致性能:单机万级TPS满足高并发场景
  • 灵活扩展:支持自定义节点、拦截器、上下文

在微服务架构下,LiteFlow 的轻量级特性使其成为业务流程编排的理想选择。其简洁的API设计让开发者能快速上手,而强大的异步并行、嵌套流程等特性又能支撑复杂业务场景。

  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-27162.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.7W+
9
1
2
WAP站长官方

使用 Kiro AI IDE 3小时实现全栈应用Admin系统

上一篇

开源新旗舰 GLM

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单