Drools:如何比较两个列表中的属性的最佳做法

时间:2019-05-05 15:53:51

标签: drools

我有两个对象列表

A。设置:{字符串命令,字符串设置}

B。建议:{字符串命令:推荐字符串设置,字符串:风险}

使用流口水,我想检查是否有任何设置对象与命令相等但建议设置不等于建议,但设置!= RecommendationSetting。

我使用B的全局列表来工作,其中将A对象作为事实添加,并且触发了所有规则。

我还可以将两个列表作为事实输入并进行嵌套循环,但这似乎不是正确的方法。

import com.demo.drools.model.Setting;
import com.demo.drools.model.Recommendation;
import java.util.List;

global List<Recommendation> recommendations;
global List<Recommendation> suggestedRecommendations;

dialect  "mvel"

rule "Check Setting For Recommendation"
    when
        $recommendation : Recommendation() from recommendations;
        $setting: Setting(parameter == $recommendation.parameter && setting != $recommendation.setting)
    then
        suggestedRecommendations.add($recommendation);
end

我希望就这是否是最佳实践/最有效方法提供一些指导。

1 个答案:

答案 0 :(得分:0)

如果您可以避免将列表作为事实,而只需将其元素插入会话中,那么我建议您离开Drools为您创建循环:

datetime.time

希望有帮助,