DataTime в Perseo CEP
Я использую CEP для изменения полей даты типа с режимом обновления.
Объекты:
{
"id":"controller",
"type":"control",
"lasmodify":{
"type":"DataTime",
"value":""
}
}
{
"id":"Device01",
"type":"device",
"id_controller":{
"type":"Text",
"value":"controller01"
}
"datemodify":{
"type":"DataTime",
"value":"2018-12-04T20:05:00.00Z"
}
}
Я хочу, чтобы подписка Device01 снималась, атрибут controller01 lasmodify будет изменен с помощью datemodify объекта device01.
Заранее большое спасибо С наилучшими пожеланиями.
1 ответ
Если я правильно понял, вы хотите обновить контроллер, когда CEP получает уведомление об изменении устройства. Решение должно быть чем-то похожим на это правило:
{
"name":"update_rule",
"text":"select ev.controler? as controlerID, ev.datemodify? as newDate, \"update_rule\" as ruleName from pattern [every ev=iotEvent(type=\"device\")]",
"action":{
"type":"update",
"parameters":{
"id":"${controlerID}",
"type":"control",
"attributes": [
{
"name":"lasmodify",
"type":"DataTime"
"value":"${newDate}"
}
]
}
}
}
Я не знаю, какую версию Perseo вы используете, но используя последний образ fiware для perseo-fe и perseo-core, вы можете опустить ruleName и использовать NGSIv2
{
"name":"update_rule",
"text":"select ev.controler? as controlerID, ev.datemodify? as newDate from pattern [every ev=iotEvent(type=\"device\")]",
"action":{
"type":"update",
"parameters":{
"id":"${controlerID}",
"type":"control",
"version": "2",
"attributes": [
{
"name":"lasmodify",
"type":"DataTime"
"value":"${newDate}"
}
]
}
}
}