2017-02-23 30 views
0

используя CEP Я пытаюсь сделать базовый пример связи между Proton и Orion. Я просто хочу, чтобы Proton получил уведомление о температуре от Orion и отправил обратно полезную нагрузку, изменяя один логический атрибут, если значение температуры превосходит или равно 20.CEP 5.4.3, не вызывая базового состояния

Вот определение, которое я использую.

{ 
    "epn": 
    { 
     "events": 
     [ 
      { 
       "name": "TemperatureContextUpdate", 
       "attributes": 
       [ 
        { 
         "dimension": 0, 
         "description": "The certainty that this event happen (value between 0 to 1)", 
         "name": "Certainty", 
         "defaultValue": "1", 
         "type": "Double" 
        }, 
        { 
         "dimension": 0, 
         "description": "No value means it equals the event detection time, other option is to use one of the defined distribution functions with parameters", 
         "name": "OccurrenceTime", 
         "type": "Date" 
        }, 
        { 
         "dimension": 0, 
         "name": "ExpirationTime", 
         "type": "Date" 
        }, 
        { 
         "dimension": 0, 
         "description": "The cost of this event occurrence. Negative if this is an opportunity", 
         "name": "Cost", 
         "type": "Double" 
        }, 
        { 
         "dimension": 0, 
         "description": "Used in case the this event occur within an interval", 
         "name": "Duration", 
         "defaultValue": "0", 
         "type": "Double" 
        }, 
        { 
         "dimension": "0", 
         "name": "entityId", 
         "type": "String" 
        }, 
        { 
         "dimension": "0", 
         "name": "entityType", 
         "type": "String" 
        }, 
        { 
         "dimension": "0", 
         "name": "temperature", 
         "type": "Integer" 
        }, 
        { 
         "dimension": "0", 
         "name": "chaud", 
         "type": "Boolean" 
        } 
       ], 
       "createdDate": "Wed Feb 22 2017" 
      }, 
      { 
       "name": "Out_TemperatureContextUpdate", 
       "attributes": 
       [ 
        { 
         "dimension": 0, 
         "description": "The certainty that this event happen (value between 0 to 1)", 
         "name": "Certainty", 
         "defaultValue": "1", 
         "type": "Double" 
        }, 
        { 
         "dimension": 0, 
         "description": "No value means it equals the event detection time, other option is to use one of the defined distribution functions with parameters", 
         "name": "OccurrenceTime", 
         "type": "Date" 
        }, 
        { 
         "dimension": 0, 
         "name": "ExpirationTime", 
         "type": "Date" 
        }, 
        { 
         "dimension": 0, 
         "description": "The cost of this event occurrence. Negative if this is an opportunity", 
         "name": "Cost", 
         "type": "Double" 
        }, 
        { 
         "dimension": 0, 
         "description": "Used in case the this event occur within an interval", 
         "name": "Duration", 
         "defaultValue": "0", 
         "type": "Double" 
        }, 
        { 
         "dimension": "0", 
         "name": "entityId", 
         "type": "String" 
        }, 
        { 
         "dimension": "0", 
         "name": "entityType", 
         "type": "String" 
        }, 
        { 
         "dimension": "0", 
         "name": "temperature", 
         "type": "Integer" 
        }, 
        { 
         "dimension": "0", 
         "name": "chaud", 
         "type": "Boolean" 
        } 
       ], 
       "createdDate": "Wed Feb 22 2017" 
      } 
     ], 
     "name": "TemperatureDemo", 
     "consumers": 
     [ 
      { 
       "events": 
       [ 
        { 
         "name": "Out_TemperatureContextUpdate" 
        } 
       ], 
       "name": "Consumer_Rest", 
       "properties": 
       [ 
        { 
         "name": "URL", 
         "value": "http://172.17.0.3:1026/v2/entities" 
        }, 
        { 
         "name": "contentType", 
         "value": "application/json" 
        }, 
        { 
         "name": "formatter", 
         "value": "json_ngsi" 
        }, 
        { 
         "name": "delimiter", 
         "value": ";" 
        }, 
        { 
         "name": "tagDataSeparator", 
         "value": "=" 
        }, 
        { 
         "name": "dateFormat", 
         "value": "dd/MM/yyyy-HH:mm:ss" 
        } 
       ], 
       "type": "Rest", 
       "createdDate": "Wed Feb 22 2017" 
      }, 
      { 
       "events": 
       [ 
        { 
         "name": "TemperatureContextUpdate" 
        } 
       ], 
       "name": "Consumer_File", 
       "properties": 
       [ 
        { 
         "name": "filename", 
         "value": "/home/work/Documents/test.txt" 
        }, 
        { 
         "name": "formatter", 
         "value": "json" 
        }, 
        { 
         "name": "delimiter", 
         "value": ";" 
        }, 
        { 
         "name": "tagDataSeparator", 
         "value": "=" 
        } 
       ], 
       "type": "File", 
       "createdDate": "Wed Feb 22 2017" 
      } 
     ], 
     "epas": 
     [ 
      { 
       "inputEvents": 
       [ 
        { 
         "instanceSelectionPolicy": "First", 
         "alias": "TemperatureContextUpdate", 
         "filterExpression": "TemperatureContextUpdate.temperature>=20", 
         "name": "TemperatureContextUpdate", 
         "consumptionPolicy": "Consume" 
        } 
       ], 
       "derivedEvents": 
       [ 
        { 
         "name": "Out_TemperatureContextUpdate", 
         "reportParticipants": false, 
         "expressions": 
         { 
          "Cost": "TemperatureContextUpdate.Cost", 
          "Certainty": "TemperatureContextUpdate.Certainty", 
          "OccurrenceTime": "TemperatureContextUpdate.OccurrenceTime", 
          "Duration": "TemperatureContextUpdate.Duration", 
          "entityId": "TemperatureContextUpdate.entityId", 
          "ExpirationTime": "TemperatureContextUpdate.ExpirationTime", 
          "chaud": "true", 
          "entityType": "TemperatureContextUpdate.entityType", 
          "temperature": "TemperatureContextUpdate.temperature" 
         } 
        } 
       ], 
       "evaluationPolicy": "Immediate", 
       "name": "EPA_Change", 
       "internalSegmentation": 
       [ 
       ], 
       "context": "always", 
       "epaType": "Basic", 
       "cardinalityPolicy": "Single", 
       "localPlacement": true, 
       "createdDate": "Wed Feb 22 2017", 
       "computedVariables": 
       [ 
       ] 
      } 
     ], 
     "optimization": 
     { 
     }, 
     "contexts": 
     { 
      "temporal": 
      [ 
       { 
        "terminators": 
        [ 
        ], 
        "neverEnding": true, 
        "atStartup": true, 
        "name": "always", 
        "type": "TemporalInterval", 
        "createdDate": "Wed Feb 22 2017", 
        "initiators": 
        [ 
        ] 
       } 
      ], 
      "segmentation": 
      [ 
      ], 
      "composite": 
      [ 
      ] 
     }, 
     "producers": 
     [ 
     ] 
    } 
} 

Я пытаюсь создать файл, в то время как первое обновление получит, но этот файл всегда пуст, кстати это правильно создать в моем каталоге и изменить каждый раз я изменить определение. Остальная полезная нагрузка никогда не отправляется, поскольку условие никогда не срабатывает.

Полезная нагрузка Посылает:

{ 
"subscriptionId": "51c04a21d714fb3b37d7d5a7", 
"data": 
[ { 
"id": "temp1", 
"type": "Temperature", 
"temperature": { 
    "type":"integer", 
    "value": 28, 
    "metadata":{} 
}, 
"chaud": { 
    "type":"boolean", 
    "value": false, 
    "metadata":{} 
}, 
    "Certainty": { 
     "value": "1", 
     "type": "Float" 
    }, 
    "Cost": { 
     "value": "0", 
     "type": "Float" 
    }, 
    "Name": { 
     "value": "", 
     "type": "String" 
    }, 
    "EventSource": { 
     "value": "", 
     "type": "String" 
    }, 
    "Duration": { 
     "value": "0", 
     "type": "Float" 
    } 
} 
] 
} 

Журнала catalina.out:

INFOS: начало сообщения о событии тело читатель ЕФЖДТПА. 23, 2017 11:23:35 AM com.ibm.hrl.proton.webapp.providers.EventJSONNgsiMessageReader parseVTwoFormat INFOS: Событие: TemperatureContextUpdate févr. 23, 2017 11:23:35 AM com.ibm.hrl.proton.webapp.providers.EventJSONNgsiMessageReader readFrom INFOS: обработчик тела завершенного сообщения сообщения févr. 23, 2017 11:23:35 AM com.ibm.hrl.proton.webapp.providers.EventJSONNgsiMessageReader readFrom INFOS: EventJSONNgsiMessageReader: чтение события TemperatureContextUpdate; EntityId = TEMP1; ИдСобытия = ba868559-7589-4720-ab75-658b920a3f14; Chaud = FALSE; EntityType = температура; Chronon = NULL; температура = 28; DetectionTime = 1487845415319; Name =; Достоверность = 1; Стоимость = 0; EventSource =; OccurrenceTime = NULL; Продолжительность = 0; Краткое описание =; ExpirationTime = NULL; от брокерского ... févr. 23, 2017 11:23:35 AM com.ibm.hrl.proton.webapp.resources.EventResource submitNewEvent INFOS: начало отправкиNewEvent févr. 23, 2017 11:23:35 AM com.ibm.hrl.proton.webapp.resources.EventResource submitNewEvent INFOS: события, отправляемые протонами выполнения ...

Таким образом, любая идея, где моя проблема?

Спасибо.

ответ

0

Ваша ошибка в том, что вы отправляете событие с пустым именем. Прошу прощения, что аналогичная информация дублируется на входе, однако это происходит от интеграции между Proton и Orion, каждый из которых требует информации в различной форме, и разница не была исправлена ​​плавно.

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

{ 
"subscriptionId": "51c04a21d714fb3b37d7d5a7", 
"data": 
[ { 
"id": "temp1", 
"type": "Temperature", 
"temperature": { 
    "type":"integer", 
    "value": "28", 
    "metadata":{} 
}, 
"chaud": { 
    "type":"boolean", 
    "value": false, 
    "metadata":{} 
}, 
    "Certainty": { 
     "value": "1", 
     "type": "Float" 
    }, 
    "Cost": { 
     "value": "0", 
     "type": "Float" 
    }, 
    "Name": { 
     "value": "TemperatureContextUpdate", 
     "type": "String" 
    }, 
    "EventSource": { 
     "value": "", 
     "type": "String" 
    }, 
    "Duration": { 
     "value": "0", 
     "type": "Float" 
    } 
} 
] 
} 

Обратите внимание, что имя атрибута теперь имеет значение «TemperatureContextUpdate»