派生和存储属性处理

本主题介绍了在视点中添加或更新节点时如何处理默认类型为“派生和存储”的属性。

Tip:

在以下各处理部分中,存储值是指定义的值或已派生并存储在节点上的值。

交互式请求

对于默认类型为“派生和存储”的属性,在请求期间派生值,并在最终提交请求之后且完成请求之前存储值。处理请求时,对于尚没有存储值的任何派生和存储属性,将根据您在默认值中定义的表达式动态计算该属性的值。请求处理期间的属性来源为派生

在最终提交请求之后且完成请求之前,会检查默认类型为“派生和存储”的所有属性。对于没有存储值或使用用户定义值的属性更新操作的属性,将使用根据您定义的表达式计算得到的值更新,并且值存储为派生和存储值。

Note:

这些属性更新操作会添加到请求,并且可以在请求检查器中查看。请参阅“检查请求项”。

计算派生值并将其填充在属性中的过程是内部系统属性更新操作,因此不受安全和验证限制。换言之,当用户添加或更新节点时,系统会为尚没有定义值的节点填充默认类型为“派生和存储”的所有属性,即使在以下情况下也是如此:

  • 用户对该属性没有写入访问权限
  • 该属性在视点中处于隐藏状态
  • 该属性未定义为可编辑
  • 该属性启用了“最终提交时锁定”

但是,如果用户清除或手动输入定义值,则将应用常用的安全和验证。

如果清除派生和存储属性的值,则系统将显示当前根据您定义的表达式计算的值,并且属性来源为派生。通过清除值,可以在表达式中使用的信息发生了更改时重新计算派生和存储属性的值。最终提交请求时,计算值存储为派生和存储值。

Note:

对于复制和模仿操作,不会从源节点复制派生和存储值。新节点的值根据在默认值中定义的表达式进行计算并存储。

请求文件加载

对于来自文件加载的请求(即,交互式请求中已上传的请求文件、比较请求、复制或模仿请求、订阅、合并请求和合并导入),派生和存储属性尚没有存储值的节点按如下所示更新:

  • 如果请求文件包含派生和存储属性的定义值,则正常更新该值。这是用户操作,并且应用安全和验证。
    • <blank> 关键字使用定义的空白值更新属性。
    • <clear> 关键字清除现有值(包括空白值)并计算派生值。

      Tip:

      如果向现有节点类型添加默认类型为“派生和存储”的属性,要为现有节点的该属性填充值,而不进行任何其他更改,一种简便的方法是通过请求文件或视点加载并使用 <clear> 关键字更新该属性。
  • 如果请求文件不包含派生和存储属性的定义值,则使用根据您在默认值中定义的表达式计算得到并存储为派生和存储值的派生值更新该属性。这是内部系统操作,不应用安全和验证。

    Note:

    请求文件中节点的派生和存储属性值将会更新,即使该属性不包含在该文件中也是如此。例如,如果您的文件仅包含“描述”属性的更新,对于该文件中默认类型为“派生和存储”的属性没有存储值的任何节点,也会使用计算值更新该属性,即使用户对该属性没有写入访问权限或该属性在视点中处于隐藏状态也是如此。

导入和视点加载

“合并”模式

在合并模式下的导入和视点加载中,处理方式与上面的“请求文件加载”相同。在导入或视点加载期间,对于尚没有存储值的默认类型为“派生和存储”的所有属性(包括未绑定的属性),将使用计算值更新它们。然后将为该属性存储该计算值。

在“合并”模式下的导入和视点加载中,您可以使用 <clear> 关键字计算派生和存储值。

“重置”和“替换”模式

对于“重置”和“替换”模式下的导入,不会修改默认类型为“派生和存储”的未绑定属性。只能使用派生和存储值更新通用应用程序中的绑定属性。更新值的处理方式与上面的“请求文件加载”相同。

对于“替换”模式下的视点加载,仅包含在视点加载文件中的派生和存储属性使用派生和存储值进行更新。如果视点加载文件不包含默认类型为“派生和存储”的属性的列,则在视点加载期间不更新该属性。

在“重置”和“替换”模式下使用 <clear> 关键字

对于“替换”模式下的视点加载,可以使用 <clear> 关键字为属性计算派生和存储值。

对于“重置”或“替换”模式下的导入,可以使用 clear 关键字为属性计算派生和存储值(如果在导入选项中设置了该关键字)。请参阅“管理导入选项”。