集合中不存在drools
如果集合没有特定对象,我需要触发规则 AuditAssignment作为问题事实提供 AuditAssignment具有requiredSkill属性 审计任务有一名财产审计员 审核员对象有一个资格列表,它是所需技能的集合 现在,我需要检查auditassignment对象中审计员的资格是否具备所需的技能 下面是我尝试过但不起作用的示例规则集合中不存在drools,drools,optaplanner,drools-planner,Drools,Optaplanner,Drools Planner,如果集合没有特定对象,我需要触发规则 AuditAssignment作为问题事实提供 AuditAssignment具有requiredSkill属性 审计任务有一名财产审计员 审核员对象有一个资格列表,它是所需技能的集合 现在,我需要检查auditassignment对象中审计员的资格是否具备所需的技能 下面是我尝试过但不起作用的示例规则 rule "checkIfAuditSkillIsMatching" when $auditAssignment : AuditAs
rule "checkIfAuditSkillIsMatching"
when
$auditAssignment : AuditAssignment( $neededSkill : requiredSkill.getSkillCode())
$auditor : Auditor( $auditorSkills : qualifications)
not exists ( Skill ( skillCode == $neededSkill ) from $auditorSkills )
then
System.out.println( " **** " + $neededSkill);
scoreHolder.addHardConstraintMatch(kcontext, -1 );
end
我也试过下面这个
rule "checkIfAuditSkillIsMatching"
when
$validAuditorCount : Number ( intValue < 1 ) from accumulate (
$auditor : Auditor( $auditorSkills: qualifications )
and exists AuditAssignment( auditor == $auditor ,
$auditorSkills.contains(requiredSkill) ) ,
count($auditor)
)
then
scoreHolder.addHardConstraintMatch(kcontext, -1 );
end
在这里,建议使用集合的属性方法来获取所需的逻辑值
rule "checkIfAuditSkillIsMatching"
when
$auditAssignment: AuditAssignment( $neededSkill: requiredSkill.getSkillCode() )
$auditor: Auditor( $auditorSkills: qualifications,
! $auditorSkills.contains( $neededSkill ) )
then
//...no suitably qualified auditor
end
下面的配置工作正常
rule "checkIfAuditSkillIsMatching"
when
$auditAssignment : AuditAssignment( $neededSkill : requiredSkill ,
$assignedAuditor : auditor )
$auditor : Auditor( this == $assignedAuditor , !qualifications.contains($neededSkill) )
then
scoreHolder.addHardConstraintMatch(kcontext, -1 );
end
谢谢我将尝试这个。对不起-我觉得我没有正确地说明问题。我已经改写了这个问题