HTTP-поток «SendRequest» объединяет исходящие запросы и вызывает конечную точку REST - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать ядро ​​Esper CEP и пытаюсь добиться следующего.

  1. Генерация тревоги при превышении определенного значения
  2. Вызов внешнего API для публикации данных тревоги
  3. Изменение статуса тревоги на ACKNOWLEDGED
  4. Создание события для того же журнала

Я использую следующий код:

insert into CreateAlarm
  select
    e.measurement.time as time,
    e.measurement.source.value as source,
    "com_cumulocity_LuxometerAlert" as type,
    "Lux value below optimum level" as text,
    "ACTIVE" as status,
    "MAJOR" as severity
  from MeasurementCreated e 
  where getNumber(e, "c8y_Luxometer.lux.value") >= 0 and 
    getNumber(e, "c8y_Luxometer.lux.value") <= 4.0 and 
    e.measurement.source.value='<device id>';    

insert into SendRequest 
  select 
    'post' as method,
    '<rest endpoint>' as url,
    aMap({"alarmID",e.alarm.id.value,"source",toJSON(findManagedObjectById(e.alarm.source.value))}) as headers,'application/json' as contentType,
    toJSON(e) as body 
  from pattern [every e = AlarmUpdated(
    alarm.status = CumulocityAlarmStatuses.ACTIVE, 
    alarm.severity=CumulocitySeverities.MAJOR, 
    alarm.type='com_cumulocity_LuxometerAlert')];    

insert into UpdateAlarm 
  select 
    f.alarm.id as id,
    "ACKNOWLEDGED" as status 
  from pattern [every f = AlarmUpdated(
    alarm.status = CumulocityAlarmStatuses.ACTIVE,
    alarm.severity=CumulocitySeverities.MAJOR,
    alarm.type='com_cumulocity_LuxometerAlert')];    

insert into CreateEvent
  select
    "c8y_DemoOrderCreate" as type,
    "Order Create Request To Vlocity" as text,
    g.alarm.time as time,
    g.alarm.source as source 
  from pattern [every g = AlarmUpdated(
    alarm.status=CumulocityAlarmStatuses.ACKNOWLEDGED,
    alarm.severity=CumulocitySeverities.MAJOR,
    alarm.type='com_cumulocity_LuxometerAlert')];        

Теперь проблема в том, что когда мое измерение попадает в пределы требуемого значения, оно создает сигналы тревоги и события. Но я вижу меньше вызовов API. В идеале количество сигналов тревоги и http-вызова должно быть одинаковым. Но это не то же самое.

Мой запрос заключается в том, обрабатывает ли механизм CEP запросы http для потока «SendRequest» и затем вызывает API.

...