Мы пытаемся написать правила для однотипных объектов.
Существуют объекты типа A, имеющие свойство valid = true, valid = false, valid = NA. Условие - мы хотим запускать правила в такой последовательности, чтобы
факты действительны == "истина" && пробел == "истина", если он не дает вывод для всех предоставленных фактов, тогда он должен перейти к следующему правилу
факты действительны == "NA" && space == "true", если какой-либо из предоставленных фактов не дает вывод, тогда только мы хотим перейти к третьему правилу
факты действительны == "ложь" && space == "true".
Если первое правило само выдает результат, то мы не хотим переходить к следующему правилу.
наш фрагмент кода выглядит так:
**TypeA a =new TypeA();
a.setValid("true");
a.setSpace("false");
TypeA b = new TypeA();
b.setValid("true");
b.setSpace("true");
TypeA c=new TypeC();
b.setValid("NA");
b.setSpace("true");
TypeA d=new TypeC();
d.setValid("false");
d.setSpace("true");
List<TypeA> typeAList=new ArrayList<>();
typeAList.add(a);
typeAList.add(b);
typeAList.add(c);
typeAList.add(d);**
// код для создания KieBase
**kieBase.newStatelessKieSession().execute(typeAList);**
**rule "5"
salience 5
when
$typeA: TypeA(valid=="true" && space=="true")
then
System.out.println("location found at A");
end
rule "4"
salience 4
when
$typeA: TypeA(valid=="NA" && space=="true")
then
System.out.println("location found at B");
end
rule "3"
salience 3
when
$typeA: TypeA(valid=="false" && space=="true")
then
System.out.println("location found at C");
end**
Мы хотим выводить только как «местоположение, найденное в А», поскольку один из фактов проходит это условие но он возвращает выходные данные как «местоположение, найденное в A», «местоположение, найденное в B», «местоположение, найденное в C»