创建流口水决策表

时间:2016-08-10 14:40:39

标签: drools

所以我想尝试从我已经在.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

有人可以确认我必须在规则中包含真实的特定数据才能进行解析吗?我可以在其他地方使用注射吗?也许我应该就此问一个新问题。

1 个答案:

答案 0 :(得分:0)

所以答案是肯定的,你确实需要参数,但我不知道的是数据并不像我遇到的每个例子那样都是硬编码的。感谢绊到this answer。所以现在这个表看起来像this。我希望这可以帮助那些遇到过这个问题的人。另外我的建议是只在.drl中制作你的drools,而不是通过电子表格,除非你有一堆规则,几乎是复制和粘贴副本。不管怎样,这是我的两分钱。