Как проверить эквивалентность в таблице веб-решений guvnor?
У меня есть два факта, которые я вставляю в сессию слюни. Я хочу проверить следующее:
(shipment1! = null && shipment1.shipToCustomerNo == waypoint1.shipToNumber) || shipment1 == ноль
Как мне добавить это условие в таблицу решений на основе веб-сайта guvnor? Я попытался использовать предикат, а waypoint1 и shipment1 являются связанными переменными, которые успешно вставляются в сеанс. Если я использую предикат и добавляю то, что у меня есть выше, мои тестовые случаи работают нормально, но когда я фактически запускаю эти правила в своем java-приложении, условия никогда не оцениваются как истинные, даже если данные эквивалентны. Я пробовал много разных способов структурировать этот запрос. Ниже сгенерированный источник:
//from row number: 1
rule "Row 1 Arrive Destination"
salience 3
activation-group "arrive-destination"
dialect "mvel"
when
waypoint1 : Waypoint( type == "Destination" )
clm1 : CarLocationMessage( sightCode == "Z" , loaded == true )
shipment1 : Shipment( eval( (shipment1 != null && shipment1.shipToCustomerNo == waypoint1.shipToNumber) || shipment1 == null ))
then
TripEventRuleResult tripEventRuleResult1 = new TripEventRuleResult();
tripEventRuleResult1.setEventType( "Arrive" );
insert( tripEventRuleResult1 );
end
1 ответ
Если я правильно понял ваш домен и описание проблемы, вы сможете выполнить такое правило.
//from row number: 1
rule "Row 1 Arrive Destination"
salience 3
activation-group "arrive-destination"
dialect "mvel"
when
waypoint1 : Waypoint( type == "Destination" )
clm1 : CarLocationMessage( sightCode == "Z" , loaded == true )
Shipment( shipToCustomerNo == waypoint1.shipToNumber) or
not Shipment()
then
TripEventRuleResult tripEventRuleResult1 = new TripEventRuleResult();
tripEventRuleResult1.setEventType( "Arrive" );
insert( tripEventRuleResult1 );
end
Короче говоря, вам не нужно иметь нулевую проверку для объекта отгрузки. Это либо есть, либо нет в рабочей памяти