0

Я использую drools для проверки уровня бизнеса. Можно ли загрузить два объекта в рабочей памяти и сравнить их значения? Допустим, у меня есть 2 объекта:Drools: Как сравнить атрибуты двух разных объектов в слюни?

Object1{ 
String name; 
} 

Object2{ 
String sname; 
} 

Могу ли я сравнить имя (Object1) с SNAME (Object2) в файле DRL?

Object1(name)==Object(name) 

Я пытался добавить эту строку в файле DRL, но он дает ошибку «Неожиданный маркер имя»

Также Помоги мне вставить эти объекты в рабочей памяти. Я получаю сеанс kie, используя следующие шаги:

KieContainer container=KieServices.Factory.get().getKieClasspathContainer(); 

KieSession kieSession = container.newKieSession("SampleSession"); 

Теперь можно вставить объект1 и Object2 одновременно с помощью метода вставки?

kieSession.insert(object); 

ответ

0

Как вставить объекты:

Object1 o1 = ...; 
Object2 o2 = ...; 
kieSession.insert(o1); 
kieSession.insert(o2); 

Как сравнить их атрибуты:

rule namecomp 
when 
    Object1($n1: name) 
    Object2(sname == $n1) 
then 
    System.out.println("Names are equal"); 
end 

Это элементарные вопросы. Обязательно прочитайте документацию Drools.

+0

Спасибо за помощь. Я собираюсь добавить другие правила в файл drl. Есть ли способ ограничить увольнение вышеуказанного правила только для первых двух фактов? Я собираюсь вставить 4 факта в сессию, и вышеприведенное правило должно быть уволено только за первые два факта. –

+0

«Первый» и «второй» определяется порядком вставки? Вам нужно будет сохранить атрибут для этих ординалов и написать некоторые ограничения на основе этого. Но это странное требование. - Возможно, вы напишете еще один вопрос, предоставляя весь фон, почему 4 за раз, почему только # 1 и # 2 должны совпадать и т. Д. – laune

Смежные вопросы