具有多个属性问题的实体订阅

时间:2015-01-19 17:14:52

标签: fiware-orion

我有一个具有某些属性的实体。每个人都有订阅。这是订阅的一个例子。

{ "entities": [ { "type": "Room", "isPattern": "false", "id": "Room5" } ], "attributes": [ ], "reference": "http://localhost:5050/notify", "duration": "P1M", "notifyConditions": [ { "type": "ONCHANGE", "condValues": [ "pressure" ] } ] }

问题在于,当属性发生一些变化时,通知会订阅整个实体,包括未更改的属性。

有没有解决这个问题的工作?

1 个答案:

答案 0 :(得分:1)

attributes字段指定要通知的属性,因此如果您使用的属性名称等于condValues中使用的属性名称(而不是空列表,这意味着“所有属性”)然后通知将仅包括修改后的属性。那就是:

{
    "entities": [
        {
            "type": "Room",
            "isPattern": "false",
            "id": "Room5"
        }
    ],
    "attributes": [ "pressure" ],
    "reference": "http://localhost:5050/notify",
    "duration": "P1M",
    "notifyConditions": [
        {
            "type": "ONCHANGE",
            "condValues": [
                "pressure"
            ]
        }
    ]
}

请注意,在这种情况下,每个实体需要N个订阅(N是属于要监视更改的实体的属性的数量)或每个实体类型,如果您的实体可以在类型中进行分类并且您使用订阅模式。后一种选择的一个例子如下所示:

{
    "entities": [
        {
            "type": "Room",
            "isPattern": "true",
            "id": ".*"
        }
    ],
    "attributes": [ "pressure" ],
    "reference": "http://localhost:5050/notify",
    "duration": "P1M",
    "notifyConditions": [
        {
            "type": "ONCHANGE",
            "condValues": [
                "pressure"
            ]
        }
    ]
}

导致每次pressure类型的实体的Room发生变化(无论哪个实体ID),您都会收到该实体的压力通知。