我有两个对象列表
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
希望它有帮助,