FIWARE Orion,具有结构化值的属性中的 NGSIv2 订阅
FIWARE Orion, NGSIv2 subscription in attributes with structured values
我正在使用 Orion Contex Broker,我需要在结构化属性中的参数更改其值时接收通知。一个例子:
- 订阅:
curl -iX POST \
--url 'http://localhost:1026/v2/subscriptions' \
--header 'content-type: application/json' \
--data '{
"description":"Notify me of Store changes in street Address",
"subject":{
"entities":[
{
"idPattern":".*",
"type":"Store"
}
],
"condition":{
"attrs":[
"address.streetAddress"
]
}
},
"notification":{
"http":{
"url":"http://localhost:3000/subscription/store-change"
}
}
}'
- 创建实体:
curl -iX POST \
--url 'http://localhost:1026/v2/op/update' \
-H 'Content-Type: application/json' \
-d '{
"actionType":"append",
"entities":[
{
"type":"Store",
"id":"urn:ngsi-ld:Store:001",
"address":{
"type":"PostalAddress",
"value":{
"streetAddress":"Old",
"addressRegion":"Berlin"
}
},
"name":{
"type":"Text",
"value":"Bösebrücke Einkauf"
}
}
]
}'
- 更新实体:
curl -iX PATCH \
--url 'http://localhost:1026/v2/entities/urn:ngsi-ld:Store:001/attrs' \
-H 'Content-Type: application/json' \
-d '{
"address":{
"type":"PostalAddress",
"value":{
"streetAddress":"Bornholmer"
}
}
}'
预期结果是在创建和更新实体时收到通知。另一种可能性是“条件表达式”。但是其中一种:"q": "address.streetAddress!=${previousValue}"
尚未实施。
NGSI 中的属性通常是数字或字符串 - 这通常会导致非常扁平的数据模型。在这种情况下,当属性值更改时,将触发订阅。
JSON 对象(例如上面的 address
)也受支持,但是只要对象的 value
发生变化并且没有专门绑定到子属性,就会发生变化因此
"attrs":[
"address.streetAddress"
]
需要:
"attrs":[
"address"
]
但是,q
参数可用于过滤特定的子属性,例如q=address.streetAddress!="Old"
- 监听接口可以在触发后修改订阅。
我正在使用 Orion Contex Broker,我需要在结构化属性中的参数更改其值时接收通知。一个例子:
- 订阅:
curl -iX POST \
--url 'http://localhost:1026/v2/subscriptions' \
--header 'content-type: application/json' \
--data '{
"description":"Notify me of Store changes in street Address",
"subject":{
"entities":[
{
"idPattern":".*",
"type":"Store"
}
],
"condition":{
"attrs":[
"address.streetAddress"
]
}
},
"notification":{
"http":{
"url":"http://localhost:3000/subscription/store-change"
}
}
}'
- 创建实体:
curl -iX POST \
--url 'http://localhost:1026/v2/op/update' \
-H 'Content-Type: application/json' \
-d '{
"actionType":"append",
"entities":[
{
"type":"Store",
"id":"urn:ngsi-ld:Store:001",
"address":{
"type":"PostalAddress",
"value":{
"streetAddress":"Old",
"addressRegion":"Berlin"
}
},
"name":{
"type":"Text",
"value":"Bösebrücke Einkauf"
}
}
]
}'
- 更新实体:
curl -iX PATCH \
--url 'http://localhost:1026/v2/entities/urn:ngsi-ld:Store:001/attrs' \
-H 'Content-Type: application/json' \
-d '{
"address":{
"type":"PostalAddress",
"value":{
"streetAddress":"Bornholmer"
}
}
}'
预期结果是在创建和更新实体时收到通知。另一种可能性是“条件表达式”。但是其中一种:"q": "address.streetAddress!=${previousValue}"
尚未实施。
NGSI 中的属性通常是数字或字符串 - 这通常会导致非常扁平的数据模型。在这种情况下,当属性值更改时,将触发订阅。
JSON 对象(例如上面的 address
)也受支持,但是只要对象的 value
发生变化并且没有专门绑定到子属性,就会发生变化因此
"attrs":[
"address.streetAddress"
]
需要:
"attrs":[
"address"
]
但是,q
参数可用于过滤特定的子属性,例如q=address.streetAddress!="Old"
- 监听接口可以在触发后修改订阅。