LiteFlow并没有界面形态 。目前只能通过第三方的Nacos , Etcd提供的界面来辅助完成界面的规则修改 。
结论
Drools在UI形态生态上领先LiteFlow一截 。
框架的性能表现这里用Drools和LiteFlow实现了同样的一段逻辑Demo 。
根据订单金额来加积分的Demo案例 。
案例逻辑很简单 , 根据订单的金额来动态判断该加多少积分:
小于100元 , 不加积分 。
100到500元 , 加100积分 。
500到1000元 , 加500积分 。
1000元以上 , 加1000积分 。
其中Drools的规则如下:
package rules;import com.example.droolsdemo.entity.Order;rule "score_1"when $order:Order(amount<100)then $order.setScore(0); System.out.println("触发了规则1");endrule "score_2"when $order:Order(amount>=100 && amount < 500)then $order.setScore(100); System.out.println("触发了规则2");endrule "score_3"when $order:Order(amount>=500 && amount < 1000)then $order.setScore(500); System.out.println("触发了规则3");endrule "score_4"when $order:Order(amount>=1000)then $order.setScore(1000); System.out.println("触发了规则4");end其中等价的LiteFlow规则如下:
<?xml version="1.0" encoding="UTF-8"?><flow> <nodes> <node id="w" type="switch_script"> <![CDATA[ def amount = defaultContext.getData("order").getAmount(); if (amount < 100){ return "a"; }else if(amount >= 100 && amount < 500){ return "b"; }else if(amount >= 500 && amount < 1000){ return "c"; }else{ return "d"; } ]]> </node> <node id="a" type="script"> <![CDATA[ def order = defaultContext.getData("order"); order.setScore(0); println("执行规则a"); ]]> </node> <node id="b" type="script"> <![CDATA[ def order = defaultContext.getData("order"); order.setScore(100); println("执行规则b"); ]]> </node> <node id="c" type="script"> <![CDATA[ def order = defaultContext.getData("order"); order.setScore(500); println("执行规则c"); ]]> </node> <node id="d" type="script"> <![CDATA[ def order = defaultContext.getData("order"); order.setScore(1000); println("执行规则d"); ]]> </node> </nodes> <chain name="chain1"> SWITCH(w).TO(a, b, c, d); </chain></flow>
经验总结扩展阅读
- 跟爱人缺乏深度沟通,所以矛盾不断的星座男
- Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化
- 真心话大冒险六条规则(真心话大冒险一至六规则图)
- tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
- MYSQL-->InnoDB引擎底层原理
- 麻将玩法说明(南城麻将玩法规则)
- 使用开源计算引擎提升Excel格式文件处理效率
- 有深度有涵养的句子 静心养心修心十句话
- 学生票打折规则
- 会玩飞行棋怎么进房间(飞行棋的玩法和规则)