Fiware 如何在Orion上下文代理NGSIv2上创建高级订阅表达式?
根据: 可以在条件中包含过滤表达式。比如说 不仅当压力变化时,而且当压力在 范围在700-800之间。这是一个高级主题,请参阅“订阅” 中的节 在NGSIv2订阅中,没有任何Fiware 如何在Orion上下文代理NGSIv2上创建高级订阅表达式?,fiware,fiware-orion,Fiware,Fiware Orion,根据: 可以在条件中包含过滤表达式。比如说 不仅当压力变化时,而且当压力在 范围在700-800之间。这是一个高级主题,请参阅“订阅” 中的节 在NGSIv2订阅中,没有任何notifyConditions,例如NGSIv1,它被subject.condition对象替换: 条件:触发通知的条件。此字段是可选的 它可能包含两个属性,都是可选的: attrs:属性名称数组 expression:由q、mq、georel组成的表达式, geometry和coords(有关此操作,请参阅上面的“列出
notifyConditions
,例如NGSIv1,它被subject.condition对象替换:
条件
:触发通知的条件。此字段是可选的
它可能包含两个属性,都是可选的:
:属性名称数组attrs
:由expression
、q
、mq
组成的表达式,georel
和geometry
(有关此操作,请参阅上面的“列出实体”操作 (现场)coords
subject.condition.attrs
时,它包含一个属性名称数组,这些名称定义了“触发属性”,即由于实体创建或更新而在创建/更改时触发通知的属性
但是,对于subject.condition.expression
来说,官方文档中没有示例
获取拼图片段可以推断:
- 可以组合
和subject.condition.expression
。如果我设置和属性不同的表达式,例如attr foo和表达式'boo>10',它会做什么?这会像subject.condition.attrs
或或
一样吗和
- 可以设置多个表达式。这会像
或或
一样吗和
注意:这个问题与Orion版本1.7.0+有关我认为下面的演示示例(当前版本中的幻灯片34)有助于澄清 示例:订阅以车辆结尾的任何类型实体(如公路车辆、航空车辆等)的速度变化,当速度大于90时,其平均元数据在80到90之间,且车辆到马德里市中心的距离小于100公里 请求:
POST /v2/subscriptions
...
{
"subject": {
"entities": [
{
"idPattern": ".*",
"typePattern": ".*Vehicle"
},
],
"condition": {
"attrs": [ "speed" ],
"expression": {
"q": "speed>90",
"mq": "speed.average==80..100",
"georel": "near;maxDistance:100000",
"geometry": "point",
"coords": "40.418889,-3.691944"
}
}
},
...
}
如本例所示,您可以使用不同的条件(q
、mq
、geoquery等),并从和的角度对它们进行解释。此外,q
和mq
也允许在和的意义上解释复杂表达式,例如:
"q": "speed>90;engine!=fail",
请注意,q
和mq
出现在订阅expression
中时遵循的规则与出现在同步查询中时遵循的规则相同(即GET/v2/entities?q=…
)。中的“简单查询语言”部分介绍了这些规则