计算和存储节点的名称

您可以定义在请求期间用于计算节点名称的表达式,并在请求完成并关闭时存储该值。

计算的名称可以基于节点的属性或节点在层次中的位置。

用例示例

  • 您可以根据序列号计算节点名称。例如,您可以将 “CC_” 这类前缀和序列串联起来,从而当您添加节点时,它们会自动命名为 CC_0034、CC_0035 等。
  • 您可以根据属性计算节点名称。例如,您可以将自定义节点数据类型属性串联在一起。然后,当您定义属性时,会自动计算节点名称。因此,对于自定义属性 1 = 120、自定义属性 2 = 200 和自定义属性 3 = 340,将自动计算出节点名称 120-200-340。

    Tip:

    您还可以在节点数据类型属性上设置表达式来派生属性的值,如果您添加节点名称 120-200-340,则每个属性的值将分别派生为 120、200 和 340。请参阅“派生和存储属性”。

  • 您可以根据父代、祖先和同级等层次结构信息计算节点名称。例如,您可以串联父代名称和节点描述。
  • 添加新节点时,您还可以使用计算的节点名称来自定义默认名称。例如,用户在“实体”节点类型中添加节点时,您可以返回计算的名称 “CC_####”,并让用户手动填写 #### 的相应值,而不是将名称默认为 "New Entity Node"。

注意事项

  • 可以在以下操作期间计算节点名称:
    • 以交互方式添加节点
    • 复制或模仿节点
    • 加载请求文件
    • 通过订阅同步节点
  • 在请求中的“添加”操作期间,每次更改节点时都会重新计算节点名称。

    Note:

    根据同级列表计算节点名称时(例如,通过找到最后一个同级并向其加 1),请注意,如果在该节点后面添加其他同级,然后更新原始节点,则节点名称可能会更改。

    此外,根据请求上下文,在表达式中使用 node.previousSibling 对象来计算节点名称可能会带来意想不到的结果。为了获得最佳结果,请改用 node.siblings.max

  • 在请求中显示计算的节点名称时:
    • 如果节点名称表达式返回一个值,将显示该值及来源“派生和存储”。
    • 如果表达式返回 null 值,则显示计算名称关键字 <cn ####>(其中 #### 是请求项创建时间戳的散列)。请参阅“了解计算名称关键字”。
  • 完成并关闭请求后,将存储计算的节点名称,且来源显示“派生和存储”。
  • 您可以通过手动输入名称来覆盖节点名称。来源显示“已定义”。
  • 对于在请求中添加的节点,请使用清除操作清除手动输入的名称并返回到计算的名称,然后使用重置操作将当前位置设置为主位置(请参阅“了解主位置”)并根据表达式重新计算节点名称。请参阅“清除和重置计算值”。
  • 如果验证在包含计算节点名称的请求上下文中运行,该验证将使用当前计算的名称。这意味着,例如,如果表达式当前返回 null,则用于验证的节点名称为 "<cn ####>"。
  • 在请求中搜索节点时,“添加”操作中的当前名称将用于具有计算名称的新节点。这意味着,例如,如果表达式当前返回 null,您可以在节点名称中搜索 "<cn ####>"。
  • 加载请求文件时,在请求加载文件的名称列中,使用 <cn><cn ####> 关键字(条件是为 Core.Name 属性配置了表达式)或将名称列留空来计算该节点名称的值。请参阅“使用计算名称的请求文件处理”。

定义计算和存储属性

  1. 检查 Core.Name 属性定义。
  2. 选择要为其计算节点名称的应用程序或节点类型。
  3. 从“默认类型”,选择计算和存储
  4. 在“默认值”中,单击表达式按钮 定义表达式
  5. 定义用于计算节点名称的表达式,然后单击应用。请参阅“使用表达式定义自定义业务逻辑”。
  6. (可选)选择更新时重命名,以指定在直接对请求中的节点执行请求操作时,应重新计算并存储节点的名称值。重新计算的名称值在请求完成并关闭时存储。

    Note:

    仅当对节点本身执行请求操作时,才会重新计算名称的值。如果计算逻辑中包含节点外部的元素(例如节点的祖先),并且这些元素发生了变化,则不会自动重新计算名称。必须对名称执行清除操作,才能重新计算并存储新的名称值。

    如果为属性启用了最终提交时锁定,也不会为属性重新计算并存储名称值。请参阅“了解属性数据类型参数”。

了解主位置

如果您要添加节点,然后在多个其他位置插入同一节点,则系统会在内部将层次中添加该节点的第一个位置指定为主位置,并使用该位置计算节点名称。插入该节点的所有后续位置都将使用从第一个位置计算的名称。

Note:

如果添加节点的第一个位置位于列表中,则在第一次将其插入层次时设置主位置。

例如,假设您有一个表达式,它通过将节点的父节点名称与节点上的属性(在本例中,该属性的值为 ABC)串联来计算节点名称。您在父代 111 下添加节点时,名称计算为 111-ABC。如果您随后在父代 222 下插入该节点,名称仍为 111-ABC,因为 111 是主位置。

更改节点主位置的方式有多种:

  • 如果您将请求中的节点从其主位置移动到新位置,则新位置将成为主位置,并重新计算名称。

  • 如果在请求期间从主位置删除节点,则插入该节点的下一个位置将成为主位置。

  • 如果在多个位置都有某个节点,并且您想要手动更改作为主位置的位置,请使用重置操作。请参阅“清除和重置计算值

清除和重置计算值

使用清除来清除手动定义的名称并返回到计算的名称。“清除”操作仅适用于在此请求中添加的默认类型为“计算和存储”且具有手动输入的名称的节点。

使用重置将计算名称的主位置设置为当前位置(请参阅“了解主位置”)并根据当前位置重新计算节点名称。“重置”操作仅适用于在此请求中添加的默认类型为“计算和存储”且没有手动输入的名称的节点。

如果您在节点外部执行了会影响节点名称的操作(例如,您更改父代属性,并希望根据新属性重新计算节点名称),也可以使用“重置”来重新计算节点名称。

验证和计算的节点名称

验证请求时,“添加”操作中的当前名称将用于具有计算名称的新节点,但有一个例外:如果当前名称是关键字之一(<cn><cn ####>),将跳过最小和最大长度验证。这允许提交者提交名称中包含某个关键字的请求,以便批准者或扩充者可以添加所需信息来计算名称。

批准或最终提交请求时,将运行最小和最大长度验证。

计算名称和订阅

设置的订阅使用计算名称时,会在源视点中计算名称,并在订阅请求中将生成的名称传递给目标视点。如果您要在目标视点中计算节点名称,则必须在订阅的节点类型转换器中设置属性转换(请参阅“使用节点类型转换器”),以将名称转换为空白值或计算名称关键字之一(对于添加,为 <cn>;对于添加和插入,为 <cn ####>,其中 #### 是唯一标识符字符串)。请参阅“了解计算名称关键字”。

Note:

如果要使用“备用名称”(如果可用),请将名称转换为空白值。如果您始终希望在目标视点中使用计算的名称,请将名称转换为某个关键字。