有关事件更新的查询通知<subscription>资源的条件



如果<订阅>资源上有更新请求来修改eventNotificationCriteria属性(enc(的某些条件(如createdBefore,createdAfter等(,那么事件通知条件属性的所有现有条件都被替换了,还是只是修改了请求中存在的条件?

例如

  1. <订阅>资源是使用enc属性创建的,如下所示:

    "enc": {
    "crb": "20191130T142810",
    "cra": "20191129T140000",
    "net": [
    1,
    2,
    3,
    4,
    5
    ]
    }
    
  2. 更新<订阅>的enc属性:

    "enc": {
    "ms": "20191129T140000",
    "us": "20191130T142810",
    "net": [
    1,
    2,
    3,
    4,
    5
    ]
    }
    

对<订阅>资源中的enc更新的可能响应

响应 1:

"enc": {
"crb": "20191130T142810",
"cra": "20191129T140000",
"ms": "20191129T140000",
"us": "20191130T142810"
"net": [
1,
2,
3,
4,
5
]
}

回应 2:

"enc": {
"ms": "20191129T140000",
"us": "20191130T142810",
"net": [
1,
2,
3,
4,
5
]
}

哪个是正确的,响应 1 还是响应 2?

TL;DR
将下面提到的规范应用于您的示例,响应 2是正确的。对<订阅>资源的eventNotificationCriteria属性的更新会将现有值替换为更新的值。

TS;WM
有时,确定更新期间会发生什么并不容易。如果没有另外说明,TS-0001 - 功能架构中指定的一般程序,第 8.1.2 节:请求适用:

更新 (U(:现有"收件人"可寻址资源的内容将替换为内容参数中的新内容。如果目标资源中不存在 Content 参数中的某些属性,则会使用分配的值创建此类属性。如果 Content 参数中的某些属性设置为 NULL,则会从寻址资源中删除此类属性。

对于操作相关的参数:

更新 (U(:内容是要在现有资源中替换的内容。对于要在资源上更新的属性,Content 将包含此类属性的名称及其新值。对于要在资源中创建的属性,Content 包括此类属性的名称及其关联值。对于要在资源中删除的属性,内容包括此类属性的名称,其值设置为 NULL。

但是,您还应该始终查看TS-0004 - 服务层核心协议。例如,在第7.4.8.2 节:<订阅>特定于资源的 CRUD 操作的非常详细的过程中,您将找到对<订阅>资源的 CRUD 操作的详细信息。

更新

我认为有必要进行一些进一步的讨论,以强调#1不正确的原因是因为enc是一个复杂的属性。 由于所有这些值都是单个属性的一部分,因此上述规则适用。 如果使用简单属性执行类似的更新操作,则属性的"合并"是正确的,类似于响应 #1。

最新更新