2012-02-17 2 views
0

В нашей компании мы оцениваем Drools как основу для наших продуктов. Для этого я пытаюсь провести несколько экспериментов и очевидно Я сейчас перегружен по множеству проблем. Например, я не знаю, как сделать условие продолжительности события. я не знаю, есть ли что-то похожее наУсловия LHS о продолжительности, как я могу

.. 
when 
Event(some conditions, duration > 1h) 
then 
... 

Спасибо очень много продвинутых

+0

Опишите класс 'Event' и что он должен делать. – aitchnyu

+0

Он будет использоваться для обозначения изменений в среде, например, «обнаружение присутствия» или подобное. Некоторые из этих событий должны быть убраны, когда продолжительность события превышает определенное количество времени. В следующем классе событий вкратце '// .. jAXB annotationspublic class Событие реализует Serializable, Equals, HashCode, ToString {... {... protected Тип типа события; //i.e. PRESSURE_ACTIVATED, PRESENCE ... защищенный список темы; //i.e. ERSON, ROOM ... защищено Длительное время; защищено Длительное время; ... get и setter возвращают значения по умолчанию в случае ошибки null. –

ответ

0

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

declare VoiceCall 
    @role(event) 
    @timestamp(callDateTime) 
    @duration(callDuration) 
end 

Продолжительность в миллисекундах, так что вы рассуждал бы против него в правиле так:

rule "Call Longer Than One Hour" 
    when 
    VoiceCall(callDuration > 3600000) // 1000*60*60 
    then 
    ... 
end 

В Drools Fusion manual описывает это довольно ясно (на самом деле, моя примерная декларация события берется непосредственно из нее).