Я использую Drools Fusion для обработки событий в реальном времени. Каждое событие имеет поле метки времени. Проблема в том, что иногда события могут идти не по порядку. Может ли drools fusion справиться с этой ситуацией, и если да, то как?
Спасибо
Я использую Drools Fusion для обработки событий в реальном времени. Каждое событие имеет поле метки времени. Проблема в том, что иногда события могут идти не по порядку. Может ли drools fusion справиться с этой ситуацией, и если да, то как?
Спасибо
Если A проштамповано 0:00:00, а B проштамповано 0:01:00 и B прибывает, и у вас есть правило
rule "A before B"
when
$b: B()
not A( this before $b )
then ... end
он будет стрелять.
Вы можете использовать время вставки фактов в качестве метки времени.
Сохраните исходную метку времени как свойство. Возможно, вы захотите взглянуть на него, если возникнет «ситуация». Это зависит.
Дополнение Если у вас есть максимальная задержка dt, вы можете поместить все поступающие события в "карантин" на эту задержку. Прежде чем вставлять A, проверьте все остальные потоки (источники) на наличие события B, предшествующего A, и отреагируйте соответствующим образом. Все будет реагировать как минимум с задержкой на дт.