我有一个对象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,这可以是真假或空的答案的任意组合。
答案 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,...)。