开箱即用的轻量级组件式规则引擎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 {@Overridepublic void process() {//do your business}}2、以此类推再分别定义b,c组件
@Component("b")public class BCmp extends NodeComponent {@Overridepublic void process() {//do your business}}@Component("c")public class CCmp extends NodeComponent {@Overridepublic 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,进行执行链路:
@Componentpublic class YourClass{@Resourceprivate FlowExecutor flowExecutor;public void testConfig(){LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");}}

提示:
这个DefaultContext是默认的上下文,用户可以用最自己的任意Bean当做上下文传入,如果需要传入自己的上下文,则需要传用户Bean的Class属性,具体请看数据上下文这一章节 。
 
示例这个案例为一个价格计算引擎,其目的是模拟了电商中对订单价格的计算 。
开箱即用的轻量级组件式规则引擎LiteFlow

文章插图
 
 
—END—
开源协议:Apache2.0
开源地址:
https://github.com/dromara/liteflow

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


推荐阅读