drools noloop demo
程序员文章站
2022-05-07 21:54:34
...
public class Goods {
private int discount = 100;
private int type;
}
kmodule.xml
<kbase name="noLoop-kbase" packages="com.kq.noloop" >
<ksession name="noLoopSession"/>
</kbase>
noloop.drl
package com.kq.noloop
import com.kq.drools.entity.Goods
rule "updateDistcount"
// 设置为 true
no-loop true
when
productObj:Goods(discount > 0);
then
// 符合就将Discount自增1
productObj.setDiscount(productObj.getDiscount() + 1);
System.out.println("discount="+productObj.getDiscount());
update(productObj); //这个会导致死循环 要加no-loop true
end
NoLoopTest
public class NoLoopTest {
public static void main(String[] args) {
// 构建KieServices
KieServices ks = KieServices.Factory.get();
KieContainer kieContainer = ks.getKieClasspathContainer();
// 获取kmodule.xml中配置中名称为ksession-rule的session,默认为有状态的。
KieSession kSession = kieContainer.newKieSession("noLoopSession");
Goods product = new Goods();
product.setType(1);
product.setDiscount(10);
kSession.insert(product);
int count = kSession.fireAllRules();
System.out.println("命中了" + count + "条规则!");
System.out.println("商品" +product.getType() + "的商品折扣为" + product.getDiscount() + "%。");
kSession.dispose();
}
}
推荐阅读
-
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
-
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
-
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
-
Flash影片剪辑工具Tanida Demo Builder安装使用教程
-
Oracle Table Demo语句应用介绍
-
Android编程实现仿优酷圆盘旋转菜单效果的方法详解【附demo源码下载】
-
Python实现使用request模块下载图片demo示例
-
Django框架实现的分页demo示例
-
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
-
1+X学习日志——导航栏demo