Я ищу двигатель CEP, но я не знаю, соответствует ли какой-либо двигатель моим требованиям.
Моя система должна обрабатывать несколько потоков данных о событиях и генерировать сложные события, и это именно то, что идеально подходит для любого механизма CEP (ESPER, Drools).
Я храню все необработанные события в базе данных (это не часть CEP, но я делаю это) и использую правила (или непрерывные запросы или что-то в этом роде) для генерации пользовательских действий над сложными событиями. Но некоторые из моих правил зависят от событий в прошлом.
Например: у меня может быть событие отправки датчика каждый раз, когда мой супруг приходит или уходит из дома, и если моя машина и машина моей модной женщины находятся рядом с домом, я получаю SMS «Опасно».
Проблема в том, что при перезапуске службы обработки событий я теряю всю информацию о состоянии системы (моя жена дома?), И для ее восстановления мне нужно воспроизвести события в течение неизвестного периода времени. Состояние системы может зависеть не только от необработанных событий, но и от сложных событий.
Та же проблема возникает, когда мне нужен отчет о сложных событиях в прошлом. У меня есть необработанные данные о событиях, хранящиеся в базе данных, и я могу сгенерировать эти сложные события, воспроизводя необработанные события, но я не знаю, для какого именно периода мне нужно их воспроизвести.
В то же время ясно, что для большинства правил можно автоматически найти количество событий, которые должны быть обработаны из прошлого (или период времени для загрузки событий, которые должны быть обработаны), чтобы восстановить состояние системы.
Если данное действие зависит от присутствия моей жены дома, система CEP должна запросить последнее изменение статуса. Если запрашивается отчет о сложных событиях, а комплексное событие зависит от средней цены за предыдущий период, все события изменения цены за этот период должны быть воспроизведены. И так далее ...
Если я что-то упустил?