我的每个用户都有一套规则。现在,这些规则设置在一个文件中。但我想允许我的用户修改/添加规则。规则并不复杂。例如,下面是一些规则:
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。我知道这个问题有点模糊,但我不知道如何/从哪里开始,所以任何建议都表示赞赏。
感谢。
答案 0 :(得分:0)
如果修改现有规则意味着只有约束更改“带占位符的文本”可能是个好主意。
但是,我不会将整个DRL文件存储为数据库条目。可能是将各个规则存储为实体的系统最有效。属性将是名称,文本,“被选中”属性等。