1

如果 <subscription> 资源有更新请求修改eventNotificationCriteria属性 ( enc ) 的某些条件(如createdBeforecreatedAfter等),则eventNotificationCriteria属性的所有现有条件都被替换或只是条件请求中的存在被修改了吗?

例如

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

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

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

<subscription> 资源中enc的 UPDATE 的可能响应

回应 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?

4

1 回答 1

1

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

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

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

对于操作相关的参数:

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

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

更新

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

于 2020-02-10T17:21:45.100 回答