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.