添加属性规则 (数据管理)

摘要

用于向数据集添加属性规则。

属性规则是用户定义的规则,可将其添加到数据集,以增强编辑体验并帮助强制保持数据完整性。 这些规则可用于填充属性值或约束允许的要素配置,并在要素编辑期间强制执行。 如果在编辑要素时违反规则,则将返回错误消息。

了解有关属性规则的详细信息

了解有关 ArcGIS Arcade 脚本语言的信息

使用情况

  • 将使用验证服务器为进行了分支版本化的数据集评估企业级地理数据库中的批处理计算和验证规则。 要添加这些规则类型,数据库连接的版本化类型必须设置为分支

  • 数据集必须具有 GlobalID 字段。

  • 要将批处理计算或验证规则添加到数据集,必须启用编辑者追踪。

  • 用于定义属性规则的表达式仅限于使用 Arcade 语言提供的功能。

  • 使用脚本表达式参数中的 NextSequenceValue Arcade 数据函数,您可以引用由创建数据库序列工具创建的数据库序列。

  • 要将现有属性规则传递到另一个数据集,可以使用导出属性规则导入属性规则工具,而非多次运行此工具。

  • 注:

    将属性规则添加到数据集后,用于该数据集的最低客户端版本为 ArcGIS Pro 2.1。 这意味着该数据集将不再可用于 ArcMap

参数

标注说明数据类型
输入表

将应用新规则的表或要素类。

Table View
名称

新规则的唯一名称。

String
类型

指定要添加的属性规则类型。

  • 计算在要素上设置其他属性时,将自动填充要素的属性值。 将基于指定的触发事件来应用这些规则。 可将长时间运行的计算设置为在批处理模式下运行,并在用户定义的时间进行评估。添加多个计算规则时,如果存在循环依赖关系,则添加规则的顺序非常重要。 例如,规则 A 计算 Field1 等于 $feature.Field2 + $feature.Field3 的值,规则 B 计算 Field4 等于 $feature.Field1 + $feature.Field5,则计算的结果可能不同,具体取决于添加规则的顺序。
  • 约束将指定要素上允许的属性配置。 如果违反约束规则,则将生成错误,并且不会存储该要素。 例如,如果 Field A 的值必须小于 Field BField C 的总和,则在违反该约束时将会生成错误。
  • 验证使用批处理验证过程对现有要素进行识别。 将在用户定义的时间评估规则。 违反规则时,将创建错误要素。
String
脚本表达式

用于定义规则的 Arcade 表达式。

Calculator Expression
可编辑
(可选)

指定是否可以编辑属性值。 可将属性规则配置为阻止或允许编辑者编辑正在进行计算的字段的属性值。 此参数仅适用于计算属性规则类型。

  • 选中 - 可以编辑属性值。 这是默认设置。
  • 未选中 - 不可以编辑属性值。

Boolean
触发事件
(可选)

指定将触发属性规则生效的编辑事件。 该参数仅对计算和约束规则类型有效。 对于未选中批处理参数的计算规则,必须至少提供一个触发事件。 触发事件不适用于选中了批处理参数的计算规则。

  • 插入将在添加新要素后应用规则。
  • 更新将在更新要素后应用规则。
  • 删除将在删除要素后应用规则。
String
错误编号
(可选)

违反此规则时将返回的错误编号。 此值不必唯一,因此可以针对多个规则返回相同的自定义错误编号。

对于约束和验证规则类型,此参数为必需项。 对于计算规则类型,其为可选项。

String
错误消息
(可选)

违反此规则时将返回的错误消息。 建议使用描述性消息,以便在出现冲突时帮助编辑者理解冲突。 消息最多包含 256 个字符。

对于约束和验证规则类型,此参数为必需项。 对于计算规则类型,其为可选项。

String
描述
(可选)

新属性规则的描述。 描述最多包含 256 个字符。

String
子类型
(可选)

如果数据集具有子类型,则将对其应用规则的子类型。

String
字段
(可选)

将应用该规则的现有字段的名称。 此参数仅适用于计算属性规则类型。

String
从应用程序评估中排除
(可选)

指定应用程序是否在将编辑内容应用到工作空间之前在本地评估规则。

并非所有客户端都能够运行所有可用规则,因此作者可以从客户端评估中排除某些规则。 例如,某些规则可能会参考尚未提供给所有客户端的数据(原因包括数据离线、大小或安全性),或者某些规则可能取决于用户或上下文(即数据采集应用程序中的轻量级字段更新可能不会运行需要其他用户输入或知识的规则,但 ArcGIS Pro 一类的客户端可能会为其提供支持)。

如果选中了批处理参数,则此参数不适用于验证规则和计算规则类型。

  • 选中 - 将从客户端评估中排除该规则。
  • 未选中 - 不会从客户端评估中排除该规则。 这是默认设置。

注:

ArcGIS Pro 2.4 之前的版本,此参数标注为仅限服务器

Boolean
批处理
(可选)

指定是否将在批处理模式下运行规则评估。

  • 选中 - 稍后将通过运行验证在批处理模式下运行规则评估。
  • 未选中 - 将不会在批处理模式下运行规则评估。 将使用触发事件来确定针对插入、更新或删除编辑操作进行规则评估的时间。 这是默认设置。

对于计算规则,可以选中或取消选中此参数。 对于验证规则,必须取消选中此参数。 对于约束规则,必须取消选中此参数。

Boolean
严重性
(可选)

错误的严重性。

可以在 1-5 范围内选择一个值定义规则的严重性。 值 1 为最高,代表最严重;值 5 为最低,代表最不严重。 例如,您可以为特定的属性规则选择低严重性,忽略数据生产流程中的错误,也可以设置高严重性,此时则必须修复错误以提高所收集数据的准确性。

此参数仅适用于验证规则。

Long
标签
(可选)

用于标识规则(搜索和索引)的一系列标签,作为映射到数据模型中的功能需求的方式。

String
触发字段
(可选)

在计算和约束属性规则的更新触发器中,当发生编辑事件时,字段列表将触发属性规则的运行。 如果未指定字段,工具将默认使用所有字段。 这是默认设置。

要输入多个触发字段,请使用分号分隔符(例如,Field1;Field2;Field3)。

String

派生输出

标注说明数据类型
已添加的属性规则

已添加属性规则的更新输入表。

Table View

arcpy.management.AddAttributeRule(in_table, name, type, script_expression, {is_editable}, {triggering_events}, {error_number}, {error_message}, {description}, {subtype}, {field}, {exclude_from_client_evaluation}, {batch}, {severity}, {tags}, {triggering_fields})
名称说明数据类型
in_table

将应用新规则的表或要素类。

Table View
name

新规则的唯一名称。

String
type

指定要添加的属性规则类型。

  • CALCULATION在要素上设置其他属性时,将自动填充要素的属性值。 将基于指定的触发事件来应用这些规则。 可将长时间运行的计算设置为在批处理模式下运行,并在用户定义的时间进行评估。添加多个计算规则时,如果存在循环依赖关系,则添加规则的顺序非常重要。 例如,规则 A 计算 Field1 等于 $feature.Field2 + $feature.Field3 的值,规则 B 计算 Field4 等于 $feature.Field1 + $feature.Field5,则计算的结果可能不同,具体取决于添加规则的顺序。
  • CONSTRAINT将指定要素上允许的属性配置。 如果违反约束规则,则将生成错误,并且不会存储该要素。 例如,如果 Field A 的值必须小于 Field BField C 的总和,则在违反该约束时将会生成错误。
  • VALIDATION使用批处理验证过程对现有要素进行识别。 将在用户定义的时间评估规则。 违反规则时,将创建错误要素。
String
script_expression

用于定义规则的 Arcade 表达式。

Calculator Expression
is_editable
(可选)

指定是否可以编辑属性值。 可将属性规则配置为阻止或允许编辑者编辑正在进行计算的字段的属性值。 此参数仅适用于计算属性规则类型。

  • EDITABLE可以编辑属性值。 这是默认设置。
  • NONEDITABLE不可以编辑属性值。
Boolean
triggering_events
[triggering_events,...]
(可选)

指定将触发属性规则生效的编辑事件。 该参数仅对计算和约束规则类型有效。 对于将 batch 参数设置为 NOT_BATCH 的计算规则,必须至少提供一个触发事件。 触发事件不适用于将 batch 参数设置为 BATCH 的计算规则。

  • INSERT将在添加新要素后应用规则。
  • UPDATE将在更新要素后应用规则。
  • DELETE将在删除要素后应用规则。
String
error_number
(可选)

违反此规则时将返回的错误编号。 此值不必唯一,因此可以针对多个规则返回相同的自定义错误编号。

对于约束和验证规则类型,此参数为必需项。 对于计算规则类型,其为可选项。

String
error_message
(可选)

违反此规则时将返回的错误消息。 建议使用描述性消息,以便在出现冲突时帮助编辑者理解冲突。 消息最多包含 256 个字符。

对于约束和验证规则类型,此参数为必需项。 对于计算规则类型,其为可选项。

String
description
(可选)

新属性规则的描述。 描述最多包含 256 个字符。

String
subtype
(可选)

如果数据集具有子类型,则将对其应用规则的子类型。

String
field
(可选)

将应用该规则的现有字段的名称。 此参数仅适用于计算属性规则类型。

String
exclude_from_client_evaluation
(可选)

指定应用程序是否在将编辑内容应用到工作空间之前在本地评估规则。

并非所有客户端都能够运行所有可用规则,因此作者可以从客户端评估中排除某些规则。 例如,某些规则可能会参考尚未提供给所有客户端的数据(原因包括数据离线、大小或安全性),或者某些规则可能取决于用户或上下文(即数据采集应用程序中的轻量级字段更新可能不会运行需要其他用户输入或知识的规则,但 ArcGIS Pro 一类的客户端可能会为其提供支持)。

如果将 batch 参数设置为 BATCH,则此参数不适用于验证规则和计算规则类型。

  • EXCLUDE将从客户端评估中排除该规则。
  • INCLUDE不会从客户端评估中排除该规则。 这是默认设置。
Boolean
batch
(可选)

指定是否将在批处理模式下运行规则评估。

  • BATCH稍后将通过运行验证在批处理模式下运行规则评估。
  • NOT_BATCH将不会在批处理模式下运行规则评估。 将使用触发事件来确定针对插入、更新或删除操作进行规则评估的时间。 这是默认设置。

对于计算规则,此参数值可以是 BATCHNOT_BATCH。 对于验证规则,此参数值必须是 BATCH。 对于约束规则,此参数值必须是 NOT_BATCH

Boolean
severity
(可选)

错误的严重性。

可以在 1-5 范围内选择一个值定义规则的严重性。 值 1 为最高,代表最严重;值 5 为最低,代表最不严重。 例如,您可以为特定的属性规则选择低严重性,忽略数据生产流程中的错误,也可以设置高严重性,此时则必须修复错误以提高所收集数据的准确性。

此参数仅适用于验证规则。

Long
tags
[tags,...]
(可选)

用于标识规则(搜索和索引)的一系列标签,作为映射到数据模型中的功能需求的方式。 要输入多个标签,请使用分号分隔符(例如,Tag1;Tag2;Tag3)。

String
triggering_fields
[triggering_fields,...]
(可选)

在计算和约束属性规则的更新触发器中,当发生编辑事件时,字段列表将触发属性规则的运行。 如果未指定字段,工具将默认使用所有字段。 这是默认设置。

要输入多个触发字段,请使用分号分隔符(例如,Field1;Field2;Field3)。

String

派生输出

名称说明数据类型
out_table

已添加属性规则的更新输入表。

Table View

代码示例

AddAttributeRule 示例 1(Python 窗口)

添加一个计算规则,用于计算 GasPipes 要素类的 labeltext 字段。

'''****************************************************************************
Name:        AddAttributeRule_example1.py
Description: This script adds a calcualtion rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "calculateRuleLabel"
script_expression = 'if ($feature.material == 5) {return "Plastic"} else {return "Other"}'
triggering_events = "INSERT;UPDATE"
description = "Populate label text"
subtype = "Coated Steel"
field = "labeltext"

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, "CALCULATION", script_expression, "EDITABLE", triggering_events, "", "", description, subtype, field)
AddAttributeRule 示例 2(Python 窗口)

添加一个约束规则,用于将 GasPipes 要素类的操作压力属性限制为 300。

'''****************************************************************************
Name:        AddAttributeRule_example2.py
Description: This script adds a constraint rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "constraintRuleOP"
script_expression = '$feature.OPERATINGPRESSURE < 300'
triggering_events = "INSERT;UPDATE"
description = "Operating pressure must be less than 300"
subtype = "ALL"
error_number = 2001
error_message = "Invalid operating pressure. Must be less than 300."

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, "CONSTRAINT", script_expression, "EDITABLE", triggering_events, error_number, error_message, description, subtype)
AddAttributeRule 示例 3(Python 窗口)

向 GasPipes 要素类添加验证规则,以使用大于 300 的操作压力来标记现有要素。

'''****************************************************************************
Name:        AddAttributeRule_example3.py
Description: This script adds a validation rule to a feature class
Created by:  Esri
****************************************************************************'''

# Import required modules        
import arcpy

# Set local variables
in_table = "C:\\MyProject\\sdeConn.sde\\progdb.user1.GasPipes"
name = "validationRuleMaxOP"
rule_type = "VALIDATION"
script_expression = "$feature.OPERATINGPRESSURE < 300"
error_number = 3001
error_message = "Maximum operating pressure exceeded"
description = "Validation rule: max operating pressure value"
subtype = "Coated Steel"
batch = "BATCH"
severity = 3
tags = "OP;MAXOP"

# Run the AddAttributeRule tool
arcpy.management.AddAttributeRule(in_table, name, rule_type, 
                                  script_expression, "", "", 
                                  error_number, error_message, 
                                  description, subtype, "", "", 
                                  batch, severity, tags)

许可信息

  • Basic: 否
  • Standard: 是
  • Advanced: 是

相关主题