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

描述

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

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

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

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

使用方法

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

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

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

  • 添加属性规则需要对数据集应用独占锁。您必须关闭所有活动的数据集连接,可能包括停止服务。

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

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

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

  • 注:

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

语法

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})
参数说明数据类型
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,...]
(可选)

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

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

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

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

String
error_message
(可选)

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

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

String
description
(可选)

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

String
subtype
(可选)

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

String
field
(可选)

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

String
exclude_from_client_evaluation
(可选)

指定是否在应用编辑内容之前从评估中排除规则。因为并非所有客户端都能够运行所有可用规则,所以您可以选择标记仅适用于简单客户端的规则。例如,某些规则可能会参考尚未提供给所有客户端的数据(原因包括数据离线、大小或安全性),或者某些规则可能取决于用户或上下文(即 ArcGIS Collector 中的轻量级字段更新可能不会执行某个需要其他用户输入或知识的规则,但 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,...]
(可选)

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

String

派生输出

名称说明数据类型
out_table

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

表视图

代码示例

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.AddAttributeRule_management(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.AddAttributeRule_management(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.AddAttributeRule_management(in_table, name, rule_type, 
                                  script_expression, "", "", 
                                  error_number, error_message, 
                                  description, subtype, "", "", 
                                  batch, severity, tags)

许可信息

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

相关主题