2016-05-26 7 views
0

Позвольте мне объяснить это немного больше. У меня есть этот Cep конфигурации:Как правильно настроить cepheus cep для пересчета атрибута каждый час?

{ 
    "host":"http://localhost:1028", //Cepheus CEP 
    "in":[ 
    { 
     "id":"A.*", 
     "type":"Pevent", 
     "isPattern":true, 
     "providers":[ 
     "http://localhost:1027" //Cepheus Broker 
     ], 
     "attributes":[ 
     { "name":"idEvent", "type":"string" }, 
     { "name":"endDate", "type":"date" } 
     ] 
    } 
    ], 
    "out":[ 
    { 
     "id":"A", 
     "type":"Event", 
     "brokers":[ 
     { 
      "url":"http://localhost:1026" //orion 
     } 
     ], 
     "attributes":[ 
     { "name":"expired", "type":"int" } 
     ] 
    } 
    ], 
    "statements":[ 
    "INSERT INTO Event SELECT idEvent as id, case when endDate<current_timestamp() then 1 else 0 end as expired FROM Pevent OUTPUT all" 
    ] 
} 

Эта конфигурация, когда новый объект aded или изменения в контексте Цефей брокера, он оповещает Цефей КЭП и КЭП высчитывает, если объект истек или нет и отправить результат в orion.This работает нормально, без проблем.

Проблема в том, что мне нужно пересчитать устаревший атрибут один раз в час (24 часа в сутки 365 дней в году), и я не знаю, возможно ли это в кеп, потому что я не могу заставить его работать и не находите никакой информации.

Большое спасибо.

ответ

1

Вам нужно второе правило для обнаружения истекшего события.

Вы можете использовать Esper Patterns, чтобы обнаружить, что событие имеет не произошло в течение определенного периода времени:

SELECT e.id as id, 1 as expired FROM pattern[every e=Pevent -> (timer:interval(1 hour) and not Pevent(id = e.id)] 
+0

Извините за столь поздно. Он работает отлично. большое спасибо. –

+0

Ну, после работы в других вещах я понимаю, что вы отвечаете, не удовлетворил мои потребности, он делает это только через час или указанный интервал. Я пытаюсь сделать это 'SELECT e.id как id, 1 как шаблон FROM FROM [каждый таймер: интервал (1 час) и e = Pevent -> (не Pevent (id = e.id)]', и он работает так, как я хочу, но он застрял с первым событием только в таймере (консоль только показывает [Timer-default-0] с событием 1, даже я отправил события 2 и 3). Как я могу заставить его делать то же самое со всеми событиями в? –

+0

Пример (http://pastebin.com/U3rBFsGY) –