流口水迭代以计算特定对象值
Iteration in drools to count specific object value
嗨,Drools 的新手,卡在我需要遍历对象列表并进行计数的地方,如果计数超出阈值,则分配一些值。
要求:计算其部门匹配“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 时,才会出现相同的结果,而我正在寻找是否有超过 10 名来自 HR 的员工只将乐队指定为“ABC”
您使用 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
,因为它是一个简单的“获取子集”。如果您想获得一组属性 average/max/mean 或更复杂的东西,您可以使用 accumulate
.
嗨,Drools 的新手,卡在我需要遍历对象列表并进行计数的地方,如果计数超出阈值,则分配一些值。
要求:计算其部门匹配“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 时,才会出现相同的结果,而我正在寻找是否有超过 10 名来自 HR 的员工只将乐队指定为“ABC”
您使用 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
,因为它是一个简单的“获取子集”。如果您想获得一组属性 average/max/mean 或更复杂的东西,您可以使用 accumulate
.