【问题标题】:How to create advanced subscriptions expression at Orion Context Broker NGSIv2?如何在 Orion Context Broker NGSIv2 上创建高级订阅表达式?
【发布时间】:2018-01-11 10:21:46
【问题描述】:

根据official documentation of Orion Context Broker NGSIv2

您可以在条件中包含过滤表达式。例如,要 不仅在压力变化时得到通知,而且在压力变化时得到通知 范围 700-800。这是一个高级主题,请参阅“订阅” NGSIv2 specification 中的部分。

在 NGSIv2 订阅中没有 notifyConditions 如 NGSIv1 ,它被替换为 subject.condition 对象:

condition:触发通知的条件。此字段是可选的 它可能包含两个属性,都是可选的:

  • attrs:属性名称数组

  • expression:由qmqgeorel组成的表达式, geometrycoords(请参阅上面的“列出实体”操作) 字段)

当我们使用subject.condition.attrs时,它包含一个属性名称数组,这些名称定义了“触发属性”,即在创建/更改时由于实体创建或更新而触发通知的属性。

但是,对于subject.condition.expression,官方文档中没有示例。

拼图可以推导出来:

  • 可以合并subject.condition.expressionsubject.condition.attrs。如果我设置和属性不同的表达,例如。带有表达式'boo> 10'的attr foo 它会做什么?这会表现得像 ORAND 吗?
  • 可以设置多个表达式。这会表现得像 ORAND 吗?

如果有一些这些更复杂的订阅的示例结合了在订阅中划分实体的不同方式,那就太好了。

注意:此问题与 Orion 版本 1.7.0+ 相关

【问题讨论】:

    标签: fiware fiware-orion


    【解决方案1】:

    我认为以下来自NGSIv2 Overview for Developers That Already Know NGSIv1 演示文稿(当前版本中的幻灯片 34)的示例可能有助于澄清。

    示例:订阅以 Vehicle 结尾的任何类型的任何实体(例如 RoadVehicle、AirVehicle 等)中的 speed 更改,只要speed 大于 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"
          }
          }
        },
       ...
    }
    

    如本例所示,您可以使用不同的条件(qmq、geoquery 等),它们在 AND 意义上进行解释。 Morevoer,qmq 允许在 AND 意义上也解释复杂的表达式,例如:

    "q": "speed>90;engine!=fail",
    

    请注意,qmq 在订阅中出现时 expression 遵循与它们出现在同步查询中时相同的规则(即 GET /v2/entities?q=...)。这些规则在NGSIv2 specification 的“简单查询语言”部分中进行了描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多