我有一种情况我需要在运行时忽略任何属性值。
$applicant : Applicant ($age : age, $gender : gender, $income : income)
$person : Person( age == $age, gender == $gender, income == $income )
在收入属性中说,我说的是任何值;这意味着如果der是应用程序收入属性中指定的任何值,那么它也可以,否则它应该执行规则,因为任何值都是可接受的。
请帮助实现此目的。
由于
答案 0 :(得分:1)
对于动态切换,您需要另一个具有布尔属性的对象PersonControl
:
$applicant : Applicant ($age : age, $gender : gender, $income : income)
PersonControl( $igAge: igAge, $igGender: ifGender, $igIncome: igIncome)
$person : Person( age == $age || $igAge,
gender == $gender || $igGender,
income == $income || $igIncome )
如果需要单独完成这些评估,您可能必须为每个申请人评估插入/撤消(或修改)PersonControl。
如果您想要声明任何值,您必须考虑可以使用的值,例如-1表示数值:
$applicant : Applicant ($age : age, $gender : gender, $income : income)
$person : Person( age == $age ,
gender == $gender,
income == $income || == -1 )
答案 1 :(得分:0)
$applicant : Applicant ($age : age, $gender : gender, $income : income)
$age : age
是一项任务,以便稍后可以提及$age
。同样具有性别和收入。
$person : Person( age == $age, gender == $gender, income == $income )
在这里,您要检查每个人对象的年龄,以及性别和收入。所以只是忽略它们中的任何一个,只需将它们从等式检查中删除即可。
即。因此,删除您不想比较相等的条件,例如忽视收入:
rule "Compare Applicants"
salience 155
when
$applicant : Applicant ($age : age, $gender : gender)
$person : Person( age == $age, gender == $gender )
then
// do stuff
end
忽略所有内容,即将每个申请人与每个人进行比较并执行then
条款
when
$applicant : Applicant ()
$person : Person()
then
// do your stuff
end
答案 2 :(得分:-1)
您是否可以将申请人分配到$applicant
,然后在$age
子句中设置$gender
和then
:
rule "do application"
when
$applicant : Applicant()
$person : Person( age == $age, gender == $gender, income == $income )
then
$age = $applicant.getAge()
// do more stuff
end