具有多个属性问题的实体订阅
Entity subscription with more than one attribute issue
我有一个具有某些属性的实体。每个人都有一个订阅。这里是订阅的例子。
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room5"
}
],
"attributes": [ ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
问题是当某个属性发生变化时,通知会订阅完整的实体,包括未更改的属性。
是否有解决此问题的方法?
attributes
字段指定要通知的属性,因此如果您使用的属性名称等于 condValues
中使用的属性名称(而不是空列表,这意味着 "all the attributes") 那么通知将只包含修改后的属性。即:
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room5"
}
],
"attributes": [ "pressure" ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
请注意,在这种情况下,如果您的实体可以在类型和您使用带有模式的订阅。后一个选项的示例如下所示:
{
"entities": [
{
"type": "Room",
"isPattern": "true",
"id": ".*"
}
],
"attributes": [ "pressure" ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
这导致每次 Room
类型的实体的 pressure
发生变化时(无论是哪个实体 ID),您都会收到该实体的压力通知。
我有一个具有某些属性的实体。每个人都有一个订阅。这里是订阅的例子。
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room5"
}
],
"attributes": [ ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
问题是当某个属性发生变化时,通知会订阅完整的实体,包括未更改的属性。
是否有解决此问题的方法?
attributes
字段指定要通知的属性,因此如果您使用的属性名称等于 condValues
中使用的属性名称(而不是空列表,这意味着 "all the attributes") 那么通知将只包含修改后的属性。即:
{
"entities": [
{
"type": "Room",
"isPattern": "false",
"id": "Room5"
}
],
"attributes": [ "pressure" ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
请注意,在这种情况下,如果您的实体可以在类型和您使用带有模式的订阅。后一个选项的示例如下所示:
{
"entities": [
{
"type": "Room",
"isPattern": "true",
"id": ".*"
}
],
"attributes": [ "pressure" ],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"pressure"
]
}
]
}
这导致每次 Room
类型的实体的 pressure
发生变化时(无论是哪个实体 ID),您都会收到该实体的压力通知。