流口水:如何比较两个列表中的属性的最佳实践



我有两个对象列表

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

b。建议:{字符串命令:字符串推荐集,字符串:风险}

使用流口水,我想检查任何设置对象是否与命令相等的建议匹配但设置!= pepusendedSetting。

我使用b的全局列表进行此工作,其中添加了对象作为事实和所有规则发射。

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

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

我希望这是否是最佳实践/最有效的方法。

如果您可以避免将列表作为事实并简单地将其元素插入您的会话,那么我建议您离开drools为您提供循环:

rule "Check Setting For Recommendation"
when
  $r: Recommendation();
  Setting(parameter == $r.parameter, setting != $r.setting)
then
  suggestedRecommendations.add($r);
end

希望它有帮助,

最新更新