我刚开始在一个小项目中使用Drools,现在我需要编写一个有点复杂的规则,我真的不知道最好的方法是什么。
我将此规则应用于相同类型的对象列表(此类具有名为 numberOfExecutions 的字段)。对于列表中的每个元素,我需要选择 numberOfExecutions total numberOfExecutions 5%的数字(numberOfExecutions的总和)列表中的所有元素。)
到目前为止,我想不出一个在drools中实现这个的好方法,有没有人有建议?
EDIT1: 到目前为止,我能想到的最好的方法是在应用规则之前预先计算numberOfExecutions的总和,并使这个值以某种方式用于drools规则。
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用“Java”规则方言。创建一个函数来执行numberOfExecutions的逻辑并设置适当的标志。您可以逐个传递对象列表或单个对象,以检查numberOfExecutions条件。此方法将像任何常规java方法一样工作。以下是调用函数的小样本。它可能有所帮助。
rule "numberOfExecutions "
dialect "java"
salience -1
when
$obj : yourObject()
eval(if not counted)
then
checkNumberOfExecution($obj);
end
function void checkNumberOfExecution(com.test.YourObject obj) {
//Your logic
}
这只是一个暗示。你可以随意使用它。
感谢。