描述
用于向数据集添加属性规则。
属性规则是用户定义的规则,可将其添加到数据集,以增强编辑体验并帮助强制保持数据完整性。这些规则可用于填充属性值或约束允许的要素配置,并在要素编辑期间强制执行。如果在编辑要素时违反规则,则将返回错误消息。
使用方法
将使用验证服务器为进行了分支版本化的数据集评估批处理计算和验证规则。要添加这些规则类型,必须将数据库连接设置为分支版本化类型。
数据集必须具有 GlobalID 字段。
添加属性规则需要对数据集应用独占锁。您必须关闭所有活动的数据集连接(此操作可能包括停止一切服务)。
用于定义属性规则的表达式仅限于使用 Arcade 语言提供的功能。
您可以使用 NextSequenceValue Arcade 数据函数来参考使用脚本表达式参数中的创建数据库序列工具创建的数据库序列。
注:
将属性规则添加到数据集后,用于该数据集的最低客户端版本为 ArcGIS Pro 2.1。这意味着该数据集将不再可用于 ArcMap。
语法
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 | 指定要添加的属性规则类型。
| String |
script_expression | 用于定义规则的 Arcade 表达式。 | Calculator Expression |
is_editable (可选) | 指定是否可以编辑属性值。可将属性规则配置为阻止或允许编辑者编辑正在进行计算的字段的属性值。此参数仅适用于计算属性规则类型。
| Boolean |
triggering_events [triggering_events,...] (可选) | 指定将触发属性规则生效的编辑事件。该参数仅对计算和约束规则类型有效。对于未选中批处理参数(Python 中的 batch=NOT_BATCH)的计算规则,必须至少提供一个触发事件。触发事件不适用于选中了批处理参数(Python 中的 batch=BATCH)的计算规则。
| 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,则此参数不适用于验证规则和计算规则。
| Boolean |
batch (可选) | 指定是否将在批处理模式下执行规则。
计算规则可处于BATCH或NOT_BATCH状态。此属性的验证规则始终处于BATCH状态,约束规则始终处于NOT_BATCH状态。 只有已启用分支版本化的数据才支持批处理规则。 | Boolean |
severity (可选) | 错误的严重性。 可以在 1-5 范围内选择一个值定义规则的严重性。值 1 为最高,代表最严重;值 5 为最低,代表最不严重。例如,您可以为特定的属性规则选择低严重性,忽略数据生产流程中的错误,也可以设置高严重性,此时则需要修复错误以提高所收集数据的准确性。 此属性仅适用于验证规则。 | Long |
tags [tags,...] (可选) | 一组用于标识规则(可搜索且可索引)的标签,可以映射至数据模型中的功能要求。要输入多个标签,请使用分号分隔符(例如,标签1;标签2;标签3)。 | String |
派生输出
名称 | 说明 | 数据类型 |
out_table | 已添加属性规则的更新输入表。 | 表视图 |
代码示例
添加一个计算规则,用于计算 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)
添加一个约束规则,用于将 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)
向 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: 是