嗨,新手Drools and stuck,在这里我需要迭代对象列表并进行计数,如果计数超过阈值数字,则分配一些值。
要求:计算部门与"HR“匹配的员工数量,如果超过数字10,则将特定的范围分配给部门。我使用了下面的代码,但是它只给出了匹配,不确定如何检查计数,然后分配标签。
rule "Less Than or Equal 10 Employee" dialect "mvel" when company : CompanyFact($listOfEmployees: employees) employee : EmployeeFact(departmentType == "HR") from $listOfEmployees then company.setDepartmentBand("ABC"); end
同样的结果只有在部门是HR的情况下才会产生,而我正在寻找的是,如果HR的员工超过10人,那么只给出"ABC“。
发布于 2021-10-13 14:25:49
您可以使用accumulate或collect,这取决于您的条件有多复杂。
rule "More than 10 HR employees"
when
company: CompanyFact($listOfEmployees: employees)
List(size > 10) from collect(EmployeeFact(departmentType == "HR") from $listOfEmployees)
then
company.setDepartmentBand("ABC");
end我在这个例子中使用了collect,因为它是一个简单的“获取子集”。如果你想得到一个属性的集合,平均值/最大值/平均值,或者更复杂的东西,你可以使用accumulate。
https://stackoverflow.com/questions/69557077
复制相似问题