如何在Drools规则引擎中动态更新规则 [英] how to update rules dynamically in drools rule engine

查看:18
本文介绍了如何在Drools规则引擎中动态更新规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Drools规则引擎上工作,我在这个场景中将When块中的值从1000更改为2000,将符号从>更改为<;,我们是否可以使用表单编辑值

rule "payment"

when 
   account:Paymentinfo(transaction < 1000)
then

推荐答案

规则模板 第二种解决方案是使用规则模板(指向Drools文档的链接)。其基本思想是,您提供一个数据表和一个DRL模板,Drools框架将把数据转换为模板并为您生成DRL。当您有非常重复的规则(如您的规则)时,这很有用--在这种情况下,其他人基本上是用不同的约束应用相同的规则。

与其他方案类似,您的工作流程如下:

用户在UI/前端创建约束,指定所需信息(卡类型、最低价格、折扣)。 用户的约束被发送到服务器。 服务器将请求重新格式化为表格形式(而不是JSON或任何原始格式)。 服务器使用带有模板的数据表(步骤3)来生成规则。 您的模板可能如下所示,假定列标记为";cardType";、";minPrice";和";discount";):

template header
cardType
minPrice
discount

package com.example.template;
import com.example.Order;

template "orderdiscounts"

rule "Apply order discount for @{cardType}"
when
  $order: Order( cardType == "@{cardType}",
                 price > @{minPrice} )
then
  $order.setDiscount(@{discount});
end

end template

格式非常简单。首先是标题,我们在其中按顺序定义列。第一个空白行表示页眉的结尾。接下来是包声明和导入,因为它们对于文件是静态的。然后是模板。列值是使用@{Column name}模式插入的;请注意,您需要将其括在字符串的引号中。

Drools文档非常好,所以我不打算过多地讨论细节,但您应该能够理解这一点的要点。

这篇关于如何在Drools规则引擎中动态更新规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆