MVEL或Drools无法解析其类型为Map <string,list <object>&gt;?的事实

时间:2016-07-19 14:24:02

标签: java drools mvel

我的规则是这样的:

Range(Cells(2, LastRow2 + 1).Address).Select

但它始终构建错误:

   rule "calcitonin evaluation"
     lock-on-active true
     salience 0
   when
     $p : Patient($labtestItem : labtests.get("calcitonin").get("0"))
     LabTestItem($result : result.substring(1,(result.length)-1), parseFloat($result) > 8.4) from $labtestItem
   then
     $labtestItem.setAbnormalIndicator("high");
     $labtestItem.setAttentionLevel("important");
     modify($p){}
   end

如果我写这样的规则,它会运行:

Unable to Analyse Expression labtests.get("calcitonin").get(0):
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class

1 个答案:

答案 0 :(得分:0)

.get("0")没有意义 - List.get需要一个整数。但这不会让问题消失。如果它不是一个简单的绑定,你需要一个布尔表达式。

我写这样的规则:

rule "calcitonin evaluation"
when
  $p : Patient($labtestItem : labtests)
  $lti: LabTestItem($result : result, parseFloat($result.substring(1,(result.length)-1)) > 8.4) from $labtestItem.get("calcitonin").get(0)
then
  $lti.setAbnormalIndicator("high");
  $lti.setAttentionLevel("important");
  modify($p){}
end

编辑:为避免$labtestItem.get("calcitonin")的空结果,请将警卫添加为约束:

   $p : Patient($labtestItem : labtests, 
                labtests.get("calcitonin") != null)