Resumen
Agrega una regla de atributo a un dataset.
Las reglas de atributos son reglas definidas por el usuario que se pueden agregar a un dataset para mejorar la experiencia de edición y ayudar a imponer la integridad de datos. Estas reglas pueden usarse para rellenar valores de atributos o restringir configuraciones de entidades permitidas y se imponen durante la edición de entidades. Si se vulnera una regla al editar una entidad, se devuelve un mensaje de error.
Uso
Las reglas de cálculo por lotes y validación de una geodatabase corporativa se evalúan con el servidor de validación en el caso de los datasets versionados en rama. Para agregar estos tipos de reglas, la conexión de base de datos debe tener un Tipo de versionado configurado como En rama.
El dataset debe tener un campo GlobalID.
Para agregar reglas de cálculo por lotes o validación a un dataset, el rastreo del editor debe estar habilitado.
Para agregar una regla de atributo se requiere un bloqueo exclusivo en el dataset. Debe cerrar cualquier conexión activa al dataset, lo que puede incluir detener los servicios.
La expresión usada para definir una regla de atributo está limitada a la funcionalidad disponible usando el lenguaje Arcade.
Puede hacer referencia a una secuencia de base de datos creada por la herramienta Crear secuencia de base de datos en el parámetro Expresión de script mediante la función de datos de Arcade NextSequenceValue.
Para transferir las reglas de atributos existentes a otro dataset, puede usar las herramientas Exportar reglas de atributos e Importar reglas de atributos en lugar de ejecutar esta herramienta varias veces.
Nota:
Una vez que agregue las reglas de atributos a un dataset, la versión del cliente mínima para el dataset es ArcGIS Pro 2.1. Significa que el dataset no estará disponible para su uso en ArcMap.
Sintaxis
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})
Parámetro | Explicación | Tipo de datos |
in_table | La tabla o clase de entidad a la que se aplicará la nueva regla. | Table View |
name | Un nombre único para la nueva regla. | String |
type | Especifica el tipo de regla de atributo que se desea agregar.
| String |
script_expression | La expresión de Arcade que define la regla. | Calculator Expression |
is_editable (Opcional) | especifica si se puede editar el valor del atributo. Las reglas de atributos pueden configurarse para bloquear o permitir a los editores la edición de los valores de atributo del campo que se está calculando. Este parámetro solo es aplicable al tipo de regla de atributo de cálculo.
| Boolean |
triggering_events [triggering_events,...] (Opcional) | Especifica los eventos de edición que desencadenan la regla de atributo para aplicarla. Este parámetro solo es válido para los tipos de regla de restricción y cálculo. Se debe proporcionar al menos un evento desencadenador para reglas de cálculo que tienen el parámetro Lote desactivado (batch = "NOT_BATCH" en Python). Los eventos desencadenadores no se aplican a reglas de cálculo que tengan el parámetro Lote activado (batch = "BATCH" en Python).
| String |
error_number (Opcional) | Un número de error que se devuelve cuando se vulnera esta regla. Este valor no tiene por qué ser único, de modo que puede que se devuelva el mismo número de error personalizado para varias reglas. Este parámetro es obligatorio en el caso de las reglas de restricción y validación. Es opcional en el caso de las reglas de cálculo. | String |
error_message (Opcional) | Un mensaje de error que se devuelve cuando se vulnera esta regla. Se recomienda usar un mensaje descriptivo que ayude al editor a comprender la infracción cuando se produce. El mensaje está limitado a 2000 caracteres. Este parámetro es obligatorio en el caso de las reglas de restricción y validación. Es opcional en el caso de las reglas de cálculo. | String |
description (Opcional) | La descripción de la nueva regla de atributo. La descripción está limitada a 256 caracteres. | String |
subtype (Opcional) | El subtipo al que se aplicará la regla si el dataset tiene subtipos. | String |
field (Opcional) | El nombre de un campo existente al que se aplicará la regla. Este parámetro solo es aplicable al tipo de regla de atributo de cálculo. | String |
exclude_from_client_evaluation (Opcional) | Especifica si la regla se excluirá de la evaluación antes de aplicar las ediciones. Dado que quizá no todos los clientes sean capaces de ejecutar todas las reglas disponibles, tiene la opción de marcar una regla solo para los clientes simples. Por ejemplo, algunas reglas pueden referirse a datos que no están disponibles para todos los clientes (por motivos tales como datos sin conexión, tamaño o seguridad), o algunas reglas pueden depender del usuario o el contexto (es decir, una actualización de campo ligera en ArcGIS Collector podría no ejecutar una regla que requiere una entrada adicional del usuario o más conocimientos; sin embargo, puede que un cliente como ArcGIS Pro sí sea compatible). Este parámetro no se aplica en el caso de las reglas de validación o de cálculo si el valor del parámetro batch es BATCH.
| Boolean |
batch (Opcional) | Especifica si la evaluación de la regla se ejecutará en modo de lote.
Las reglas de cálculo pueden estar BATCH o NOT_BATCH. Las reglas de validación siempre están BATCH para este parámetro y las reglas de restricción siempre están NOT_BATCH. Las reglas de lotes solo se admiten para datos con el versionado en rama habilitado. | Boolean |
severity (Opcional) | La gravedad del error. Se puede seleccionar un valor dentro del rango de 1-5 para definir la gravedad de la regla. Un valor de 1 es alto, el más grave, y un valor de 5 es bajo, el menos grave. Por ejemplo, puede ofrecer una gravedad baja para una regla de atributo específica e ignorar el error durante los flujos de trabajo de producción de datos, o bien establecer una gravedad alta donde habría que corregir el error para que los datos recopilados sean precisos. Este parámetro solo se aplica a las reglas de validación. | Long |
tags [tags,...] (Opcional) | Un conjunto de etiquetas que identifican la regla (se pueden buscar e indexar) como forma de asignarlas a un requisito funcional en un modelo de datos. Para introducir varias etiquetas, use el punto y coma como delimitador, por ejemplo, Etiqueta1;Etiqueta2;Etiqueta3. | String |
Salida derivada
Nombre | Explicación | Tipo de datos |
out_table | La tabla de entrada actualizada con una regla de atributo agregada. | Vista de tabla |
Muestra de código
Agregar una regla de cálculo que calcula el campo labeltext de la clase de entidad GasPipes.
'''****************************************************************************
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)
Agregar una regla de restricción que limita el atributo de presión de funcionamiento de la clase de entidad GasPipes a 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)
Agregar una regla de validación a la clase de entidad GasPipes para marcar todas las entidades existentes con una presión de funcionamiento mayor que 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)
Entornos
Información de licenciamiento
- Basic: No
- Standard: Sí
- Advanced: Sí