所以我想尝试从我已经在.drl文件中创建的规则创建决策表。然后我想将它转换回.drl。没有看到从drl到xls / csv的任何漂亮的转换,jboss文档也不够全面。对于一个简单的决策表来说,规则太复杂了,但我希望这个社区可以帮助我。
这是drl:
rule "Patient: Compute BMI"
when
$basic : BasicInfoModel(
notPresent('bmi'),
isPresent('height'),
isPresent('weight'),
$height : value('height', 0.0),
$weight : value('weight', 0.0))
then
modify($basic){
put('bmi', $weight / Math.pow($height,2))
};
end
因此,此规则基本上是查看对象的权重和高度字段,然后计算bmi。我已经尝试过基本上把我所拥有的东西放到决策表格式中,但收效甚微。没有什么真正解析(我只是使用droolsSpreadSheet.compile并打印出我得到的,这是一整套空的规则)。任何帮助,将不胜感激!
更新: This is what my excel sheet looks like 这就是我的规则解析的内容:
package DROOLS;
//generated from Decision Table
import basic.BasicInfoModel;
// rule values at A11, header at A6
rule "Computing BMI"
when
$patient:BasicInfoModel(notPresent('bmi'), isPresent('height'),isPresent('weight'), $height:value('height', 0.0), $weight:value('weight',0.0) == "20,4")
then
end
更新#2:我想我弄清楚了我的解析问题。 Here is my new and improved spreadsheet.,基本上发现我没有计算BMI:数据空白,必须有一些东西才能让规则解析(在我读过的文档中并不完全清楚,尽管可能是因为我对决策表的体验是新手轻描淡写的。)
所以现在编译看起来更像我想要的东西:
// rule values at A11, header at A6
rule "Computing BMI"
when
$patient:BasicInfoModel(notPresent('bmi'), isPresent('height'), isPresent('weight') == "TRUE")
$weight:value('weight',0.0), $height:value('height', 0.0)
then
modify($patient){put('bmi', $weight / Math.pow($height,2))};
end
有人可以确认我必须在规则中包含真实的特定数据才能进行解析吗?我可以在其他地方使用注射吗?也许我应该就此问一个新问题。
答案 0 :(得分:0)
所以答案是肯定的,你确实需要参数,但我不知道的是数据并不像我遇到的每个例子那样都是硬编码的。感谢绊到this answer。所以现在这个表看起来像this。我希望这可以帮助那些遇到过这个问题的人。另外我的建议是只在.drl中制作你的drools,而不是通过电子表格,除非你有一堆规则,几乎是复制和粘贴副本。不管怎样,这是我的两分钱。