КЭП 5.4.3, не запускающий базовое условие

Используя CEP, я пытаюсь сделать базовый пример связи между Протоном и Орионом. Я просто хочу, чтобы Протон получил уведомление о температуре от Ориона и отправил обратно полезную нагрузку, изменяющую один логический атрибут, если значение температуры выше или равно 20.

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

{
    "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:

ИНФОРМАЦИЯ: началось чтение тела сообщения о событии févr. 23, 2017 11:23:35 com.ibm.hrl.proton.webapp.providers.EventJSONNgsiMessageReader parseVTwoFormat INFOS: Событие: TemperatureContextUpdate févr. 23, 2017 11:23:35 com.ibm.hrl.proton.webapp.providers.EventJSONNgsiMessageReader readFrom INFOS: завершено чтение тела сообщения о событии févr. 23, 2017 11:23:35 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; от брокера... февр. 23, 2017 11:23:35 com.ibm.hrl.proton.webapp.resources.EventResource submitNewEvent INFOS: начало submitNewEvent févr. 23, 2017 11:23:35 com.ibm.hrl.proton.webapp.resources.EventResource submitNewEvent INFOS: события, отправленные во время выполнения протона...

Так есть идеи, где моя проблема?

Благодарю.

1 ответ

Решение

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

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

{
 "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"
    }
}
]
}

Обратите внимание, что атрибут name теперь имеет значение "TemperatureContextUpdate"

Другие вопросы по тегам