drools - arraylist访问多个条件

时间:2016-02-02 05:02:04

标签: java drools

我有一个对象A,其中包含对象B的列表。

rule "validateQuestions"
ruleflow-group "validate"
dialect "mvel"
when
    $a : A(bList.empty == false)
    B(code == "QT1",answer == true) from $a.bList
    B(code == "QT2",answer == true) from $a.bList
    B(code == "QT3",answer == null) from $a.bList
    B(code == "QT4",answer == null) from $a.bList
    B(code == "QT5",answer == null) from $a.bList
then
    //("Logic Here")

B就像问卷调查对象。保留所有问题,总会有5个问题(可能会在将来添加)QT1到QT5,答案为true,false或null。 当任何QTx答案为空或QT1时,我需要触发逻辑,QT2为真。我已经实现如下,但它不起作用。这有什么问题?

<uses-permission android:name="android.permission.INTERNET" />

总会有5个QTx,这可以是真假或空的答案的任意组合。

1 个答案:

答案 0 :(得分:0)

rule "validateQuestions"
when
    $a: A()
    B( code in ("QT1", "QT2") && answer == true ||
       code in ("QT3", "QT4", "QT5") && answer == null ) from $a.bList
then

您无需测试List.empty。

确保在规则的when部分阅读有关“模式”语义的文档 - 我不打算在此重复所有内容(绑定到事实,隐含连接,......)。另外,请查看有关约束运算符的文档(&amp;&amp;,||,in,not in,...)。