2

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

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

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

有什么办法可以解决这个问题吗?

4

1 回答 1

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)您都会收到该实体的压力通知。

于 2015-01-19T17:24:57.267 回答