我有一个具有某些属性的实体。每个人都有订阅。这是订阅的一个例子。
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room5"
}
],
"attributes": [ ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
问题在于,当属性发生一些变化时,通知会订阅整个实体,包括未更改的属性。
有没有解决这个问题的工作?
答案 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),您都会收到该实体的压力通知。