Слюни: лучшая практика, как сравнивать свойства в двух списках - PullRequest
0 голосов
/ 05 мая 2019

У меня есть два списка объектов

A.Настройка: {Строковая команда, Строковая настройка}

B.Рекомендация: {String command: String рекомендованоSetting, String: risk}

Используя слюни, я хочу проверить, не совпадают ли какие-либо объекты настроек с рекомендациями, где команды равны, но настройка! = Рекомендуемые настройки.

У меня это работает, используя глобальный список для 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 голосов
/ 05 мая 2019

Если бы вы могли избежать использования списка в качестве фактов и просто вставить их элементы в вашу сессию, то я бы посоветовал вам оставить Drools для вас:

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

Надеюсь, это поможет,

...