Мы пытаемся написать правила для объектов одного типа. Существуют объекты типа A, имеющие свойство valid=true ,valid=false,valid=NA. Условие состоит в том, что мы хотим запускать правила в такой последовательности, чтобы
Facts valid=="true" && space=="true", если он не выдает вывод для всех предоставленных фактов, тогда он должен перейти к следующему правилу. при условии, что факты не дают вывода, тогда только мы хотим перейти к 3-м фактам правила valid=="false" && 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», поскольку один из фактов соответствует этому условию. но он возвращает вывод как «местоположение найдено в A», «местоположение найдено в B», «местоположение найдено в C»