Variables de secuencia de comandos dinámicas

Las variables dinámicas calculan sus propios valores mediante la ejecución de declaraciones y expresiones lógicas. Una variable dinámica se asigna a sí misma el resultado de un cálculo u operación. Los tipos de variables dinámicas son cadena dinámica, número dinámico y verdadero / falso dinámico (booleano). 

La Figura muestra el rayo utilizado para designar que un tipo de variable es dinámico.

En la interfaz de usuario, las variables dinámicas se designan con un símbolo de rayo para diferenciarlas de otros tipos de variables. El valor de una variable dinámica es el resultado de declaraciones similares a JavaScript, que pueden incluir expresiones Math.js seleccionadas y funciones adicionales desarrolladas por Genesys. Ver operadores y funciones aritméticas, Referencia de la función MathJS, y funciones adicionales que puede utilizar en variables dinámicas. Una expresión lógica en una variable dinámica puede evaluar el estado de otras variables.

Cada tipo de variable dinámica le permite incrustar una expresión. Estas declaraciones definen el valor de la variable, potencialmente basado en otras variables. El resultado debe coincidir con el tipo de variable dinámica. Por ejemplo, el código de una cadena dinámica debe evaluarse como un valor de cadena.

Note: Many examples in the MathJS documentation are written in JavaScript. Genesys Cloud script designers should drop “math.” prefixes from the beginning of each expression. For example, if the documented MathJS expression is math.add(1,3), convert that to add(1,3) in your dynamic variable. Or, if example code in the MathJS documentation is something like math.fraction(numerator, denominator), the equivalent dynamic number variable is the fraction(numerator, denominator) part.

En cuanto a la asignación a la variable dinámica, no lo hace explícitamente; el último valor evaluado se asigna a la variable dinámica. Por ejemplo, si ingresa estas expresiones como una variable dinámica:

x = 5; 
y = x + 2; 
x

Las tres expresiones se evalúan en orden descendente. El valor de la última expresión se asigna a la variable dinámica. En este ejemplo, x tiene un valor de 5, que se asigna a la variable dinámica.

Ejemplo 1: Utilice un número dinámico para calcular las entradas del usuario en un formulario

En este ejemplo, una variable numérica dinámica calcula el resultado de varios valores ingresados en un formulario.

La figura muestra el formulario de entrada en modo de diseño

En el modo de diseño, una pila vertical de cuadros de entrada solicita la entrada del usuario.

La figura muestra la apariencia del formulario en modo de vista previa

In preview mode or at run time, values entered on the form are calculated by statements in the dNum_TestNum variable, and the result is shown.

The dNum_TestNum variable contains the formula that performs this calculation:

{{num_var1}} + {{num_var2}} - {{num_var3}} * {{num_var4}} / {{Num_TestNum}} + 2.1

La figura muestra la fórmula de cálculo en una variable numérica dinámica.

Para los valores que se muestran arriba, el cálculo es:

10 + 10 - 4 * 2 / 2 + 2.1

El cálculo se realiza siempre que cambia una de las variables que utiliza el cálculo.

In the example shown, the result stored in dNum_TestNum is 18.1.

Ejemplo 2: Utilice un verdadero / falso (booleano) dinámico para determinar si las variables numéricas coinciden

In this example, a dynamic Boolean variable returns true if numeric inputs match or false if they don’t match.

La figura muestra el diseño del formulario con 2 valores numéricos.

En el modo de diseño, la página muestra dos entradas numéricas cuyos valores se almacenan en variables numéricas. El código en un booleano dinámico los compara por igualdad.

vista previa_booleana_dinámica

En el modo de vista previa o en tiempo de ejecución, los valores ingresados en el formulario se comparan para determinar la igualdad.

La figura muestra cómo editar la variable.

The formula in dBool_Basic is:

{{num_dBoolTest}} == {{num_dBoolTest2}}

For the values shown, the value of dBool_Basic is false since 2 does not equal 1.

El resultado se calcula siempre que cambia el valor de cualquiera de las variables de entrada.

Ejemplo 3: Manipulaciones de cuerdas

In the next two examples, dynamic string variables parse and rewrite user input. An expression in the dStr_Exp variable rewrites text typed by the user to “This is fun.” An expression in dStr_Test inverts case when a check box changes state.

La figura muestra la apariencia de componentes y variables en modo de diseño.

Text input by the user is stored in str_overwrite. Below that is dynamic variable dStr_Exp performing this expression:

slice("This is fun.", 0 ,length({{str_overwrite}}))

In preview mode or at runtime, any text typed is reworded. The string is rewritten when the value of str_overwrite changes.

La figura muestra la apariencia de la página en tiempo de ejecución

The Swap Lower and Upper check box toggles the case of dStr_Test. Its formula is:

ifElse({{bool_swapLowerUpper}} == false, lower(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + upper(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)), upper(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + lower(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)))

Marque la casilla para invertir la caja de la cuerda.

Ejemplo 4: Utilizar una expresión regular para validar cadenas y números

In this example, a dynamic Boolean variable returns true if the string input matches the provided regex:

Scripter Variable Verdadero/Falso

The regex used here is ^\\d{1,4}$: – the core regex is \d{1,4} (between one and four digits): the slash is doubled (escaped) because it is a JavaScript string, and it is wrapped in ^  and $ to apply the pattern to the whole strings: by default, partial matches are allowed so without this wrapping, 12345 would pass because of the partial match “1234”.

Texto coincide con Regex

El texto coincide con Regex: cierto

El texto coincide con Regex: falso

Para más detalles sobre las Expresiones Regulares y su depuración, consulte Regexr.