drools动态添加和删除规则(即动态修改KieBase)

本文介绍如何在Drools中动态更新规则,使得规则修改后无需重建KieBase或KieSession即可生效。通过具体示例展示了从移除旧规则到添加新规则的过程,并最终触发所有规则的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这种做法,可以实现当规则修改后不用重新创建KieBase,甚至不重新创建session,规则都会生效。
下面例子drools版本是6.4
@Test
public void test117() throws Exception {
   String drlStr="package rules;"
         + "\n"
         + "rule \"test\"\n"
         + "when\n"
         + "eval(true)\n"
         + "then \n"
         + " System.out.println(\"----------nihao\");\n"
         + "end";
   KieHelper helper=new KieHelper();
   helper.addContent(drlStr,ResourceType.DRL);
   KnowledgeBaseImpl kieBase =(KnowledgeBaseImpl) helper.build();
   KieSession session = kieBase.newKieSession();

   //移除规则
   kieBase.removeRule("rules","test");
   //重新添加规则
   KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
   //装入规则,可以装入多个
   kb.add(ResourceFactory.newByteArrayResource(drlStr.getBytes("utf-8")), ResourceType.DRL);
   kieBase.addKnowledgePackages(kb.getKnowledgePackages());

   session.fireAllRules();

}
扫码加drools技术交流群
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值