开箱即用的轻量级组件式规则引擎LiteFlow

开箱即用的轻量级组件式规则引擎LiteFlow

2022-12-22 0 1,421
资源编号 50083 最近更新 2022-12-22
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的是一个轻量级的规则引擎框架——LiteFlow。

开箱即用的轻量级组件式规则引擎LiteFlow

在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,项目几经易手,维护的成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法。实时热变更业务流程,几乎很难实现。

如何打破僵局?LiteFlow为解耦逻辑而生,为编排而生,在使用LiteFlow之后,你会发现打造一个低耦合,灵活的系统会变得易如反掌!

功能特性

  • 组件定义统一: 所有的逻辑都是组件,为所有的逻辑提供统一化的组件实现方式,小身材,大能量。
  • 规则轻量: 基于规则文件来编排流程,学习规则入门只需要5分钟,一看即懂。
  • 规则多样化: 规则支持xml、json、yml三种规则文件写法方式,喜欢哪种用哪个。
  • 任意编排: 同步异步混编,再复杂的逻辑过程,利用LiteFlow的规则,都是很容易做到的,看规则文件就能知道逻辑是如何运转的。
  • 规则能从任意地方加载: 框架中提供本地文件配置源和zk配置源的实现,也提供了扩展接口,您可以把规则存储在任何地方。
  • 优雅热刷新机制: 规则变化,无需重启您的应用,即时改变应用的规则。高并发下不会因为刷新规则导致正在执行的规则有任何错乱。
  • 支持广泛: 不管你的项目是不是基于Springboot,Spring还是任何其他java框架构建,LiteFlow都能游刃有余。
  • JDK支持: 从JDK8到JDK17,统统支持。无需担心JDK版本。
  • 脚本语言支持: 可以定义脚本语言节点,支持QLExpress和Groovy两种脚本。未来还会支持更多的脚本语言。
  • 规则嵌套支持: 只要你想得出,你可以利用简单的表达式完成多重嵌套的复杂逻辑编排。
  • 组件重试支持: 组件可以支持重试,每个组件均可自定义重试配置和指定异常。
  • 上下文隔离机制: 可靠的上下文隔离机制,你无需担心高并发情况下的数据串流。
  • 声明式组件支持: 你可以让你的任意类秒变组件。
  • 详细的步骤信息: 你的链路如何执行的,每个组件耗时多少,报了什么错,一目了然。
  • 稳定可靠: 历时2年多的迭代,在各大公司的核心系统上稳定运行。
  • 性能卓越: 框架本身几乎不消耗额外的性能,性能取决你的组件执行效率。
  • 自带简单监控: 框架内自带一个命令行的监控,能够知道每个组件的运行耗时排行。

系统架构

开箱即用的轻量级组件式规则引擎LiteFlow

框架优势

如果你要对复杂业务逻辑进行新写或者重构,用LiteFlow最合适不过。它是一个轻量,快速的组件式规则引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件,并支持热加载规则配置,实现即时修改。

LiteFlow利用规则表达式为驱动引擎,去驱动你定义的组件。你有想过类似以下的多线程流程编排该如何写吗?

开箱即用的轻量级组件式规则引擎LiteFlow

开箱即用的轻量级组件式规则引擎LiteFlow

这一切利用LiteFlow轻而易举!框架的表达式语言学习门槛很低,但是却可以完成超高复杂度的编排。

适用场景

不适用于哪些场景:

LiteFlow只做基于逻辑的流转,而不做基于角色任务的流转。如果你想做基于角色任务的流转,推荐使用flowable,activiti这2个框架。

适用于哪些场景:

LiteFlow适用于拥有复杂逻辑的业务,比如说价格引擎,下单流程等,这些业务往往都拥有很多步骤,这些步骤完全可以按照业务粒度拆分成一个个独立的组件,进行装配复用变更。使用LiteFlow,你会得到一个灵活度高,扩展性很强的系统。因为组件之间相互独立,也可以避免改一处而动全身的这样的风险。

Springboot场景安装运行

依赖:

<dependency>
    <groupId>com.yomahub</groupId>
    <artifactId>liteflow-spring-boot-starter</artifactId>
    <version>2.8.2</version>
</dependency>

配置:

组件的定义:

1、在依赖了以上jar包后,你需要定义并实现一些组件,确保SpringBoot会扫描到这些组件并注册进上下文

@Component("a")
public class ACmp extends NodeComponent {

	@Override
	public void process() {
		//do your business
	}
}

2、以此类推再分别定义b,c组件

@Component("b")
public class BCmp extends NodeComponent {

	@Override
	public void process() {
		//do your business
	}
}
@Component("c")
public class CCmp extends NodeComponent {

	@Override
	public void process() {
		//do your business
	}
}

SpringBoot配置文件:

然后,在你的SpringBoot的application.properties或者application.yml里添加配置(这里以properties为例,yaml也是一样的)

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

规则文件的定义:

同时,你得在resources下的config/flow.el.xml中定义规则

<?xml version="1.0" encoding="UTF-8"?>
<flow>
    <chain name="chain1">
        THEN(a, b, c);
    </chain>
</flow>

SpringBoot在启动时会自动装载规则文件。

执行:

声明启动类:

@SpringBootApplication
//把你定义的组件扫入Spring上下文中
@ComponentScan({"com.xxx.xxx.cmp"})
public class LiteflowExampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(LiteflowExampleApplication.class, args);
    }
}

然后你就可以在Springboot任意被Spring托管的类中拿到flowExecutor,进行执行链路:

@Component
public class YourClass{
    
    @Resource
    private FlowExecutor flowExecutor;
    
    public void testConfig(){
        LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
    }
}

提示:

这个DefaultContext是默认的上下文,用户可以用最自己的任意Bean当做上下文传入,如果需要传入自己的上下文,则需要传用户Bean的Class属性,具体请看数据上下文这一章节。

示例

这个案例为一个价格计算引擎,其目的是模拟了电商中对订单价格的计算。

开箱即用的轻量级组件式规则引擎LiteFlow

—END—

开源协议:Apache2.0

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 开箱即用的轻量级组件式规则引擎LiteFlow https://www.7claw.com/50083.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务