允许最终用户修改规则文件

时间:2016-06-06 21:06:37

标签: drools

我的每个用户都有一套规则。现在,这些规则设置在一个文件中。但我想允许我的用户修改/添加规则。规则并不复杂。例如,下面是一些规则:

rule "Rule 1"
    when
        $order : OrderInfo(getOrderDate() < new Date(...)
    then
        $order.setReturnEligibility(false);
end

rule "Rule 2"
when
    $item : ItemInfo( nonReturnableCategory.contains(getItemCategory().toLowerCase()) )
then
    $item.setReturnEligibility(false);
end

rule "Rule 3"
    when
        $item : ItemInfo( isFinalSale())
    then
        $item.setReturnMethod(...);
end

我想构建一个类似于Drools工作台的UI。但这是针对最终客户的,所以我希望它是一个非常简单,用户友好的用户界面。我计划将规则存储在数据库中。

我想允许用户添加新规则并修改现有规则。例如,如果上面的规则3不可用,则用户将在UI中具有下拉列表,其中他们可以选择不可返回的项目类别。或者他们可以启用或禁用任何规则等。

我想知道的是,维护规则的最佳方法是什么?我是否应该将整个规则文件作为带有某种占位符的DB中的字符串,并在用户添加/更新规则时修改字符串?我使用的是Drools 6.2。我知道这个问题有点模糊,但我不知道如何/从哪里开始,所以任何建议都表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

如果修改现有规则意味着只有约束更改“带占位符的文本”可能是个好主意。

但是,我不会将整个DRL文件存储为数据库条目。可能是将各个规则存储为实体的系统最有效。属性将是名称,文本,“被选中”属性等。