2013-11-21 5 views
0

У меня есть два факта, которые я вставляю в свою сессию слюни. Я хочу проверить следующее:Как проверить эквивалентность в таблице решений guvnor?

(отгрузка1! = Null & & shipment1.shipToCustomerNo == waypoint1.shipToNumber) || shipment1 == null

Как мне добавить это условие в таблицу принятия решений на основе guvnor? Я попытался использовать предикат, а waypoint1 и shipment1 - связанные переменные, которые вставляются в сеанс успешно. Если я использую предикат и добавляю то, что у меня выше, мои тестовые примеры работают нормально, но когда я действительно запускаю эти правила в своем приложении java, условия никогда не оценивают true, даже если данные эквивалентны. Я пробовал много разных способов структурирования этого запроса. Ниже приводится сгенерированный источник:

//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 

Короче говоря, вам не нужно иметь нулевую проверку для объекта Отгрузка. Он либо находится, либо не находится в рабочей памяти

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

  • Нет связанных вопросов^_^