Use NOT_SET en expresiones
¿Qué es NOT_SET?
NOT_SET es un valor que se aplica a valores escalares en expresiones. Úselo para indicar que el valor no está definido. En Architect, los valores escalares son valores que no son de colección. Por ejemplo: en la siguiente cadena, el valor devuelto es una cadena NOT_SET:
ToString(NOT_SET)
Un valor de cadena indefinido no es lo mismo que una cadena en blanco. Si la siguiente expresión se evalúa en tiempo de ejecución, la expresión devuelve falso:
ToString(NOT_SET) == ""
Los valores NOT_SET no están permitidos en muchas sobrecargas y funciones para valores de parámetros. En el Ayuda de expresión En el cuadro de diálogo, los parámetros de sobrecarga de funciones indican si se permite o no un valor NOT_SET. Cada parámetro incluye un "NOT_SET permitido:" entrada que indica si acepta un parámetro NOT_SET del tipo especificado. Si, en tiempo de ejecución, Architect evalúa un parámetro con un valor NOT_SET no válido, invoca un controlador de errores.
¿No está seguro de si un valor pasado es NOT_SET?
Para evitar un error en tiempo de ejecución, busque NOT_SET en las expresiones. El siguiente ejemplo ilustra un escenario de expresión que fallará en tiempo de ejecución:
Flow.MyInteger es una variable de tipo entero con el valor de NOT_SET. En este caso, un autor de flujo tiene una acción Actualizar datos que asigna esta expresión a otra variable Integer.
5+Flow.MyInteger
Debido a que Flow.MyInteger no tiene un valor asignado, tal como se ingresó, solicita al tiempo de ejecución del flujo de llamadas que agregue undefined a 5. Dado que esta expresión no tiene respuesta, invoca un error. Si el autor del flujo se aseguró de que Flow.MyInteger tuviera un valor (por ejemplo, un valor distinto de NOT_SET), 5 + Flow.MyInteger funcionaría bien. Sin embargo, si Flow.MyInteger tiene un valor NOT_SET, el autor del flujo debe verificarlo explícitamente en la expresión y manejarlo de manera apropiada.
El siguiente ejemplo demuestra cómo usar NOT_SET en una expresión:
En este caso, la lógica de la adición trata la instancia de Flow.MyInteger en una condición de NOT_SET como si fuera 0:
5+If(IsSet(Flow.MyInteger),Flow.MyInteger,0)
Básicamente, la expresión dice: "¿Existe un valor en Flow.MyInteger? Si es así, utilícelo. De lo contrario, si no existe ningún valor en Flow.MyInteger, utilice el valor de 0 ". En este caso, el autor del flujo toma una decisión consciente sobre el comportamiento del arquitecto cuando un valor es NOT_SET y la ejecución continuará.
IsNotSetOrEmpty
IsNotSetOrEmpty también es útil función en tiempo de ejecución y es similar a IsSet. Esta función es útil para trabajar con valores NOT_SET o vacíos, como una colección. Para obtener más información sobre esta función, consulte la Ayuda de expresión.
NOT_SET y colecciones
Las colecciones nunca son NOT_SET como un todo. Sin embargo, una colección puede contener elementos NOT_SET.