En este paso se explica cómo añadir lógica a
CheckItemAvailability.seqflow (a) para suprimir algunas
correlaciones innecesarias; (b) para almacenar un valor de resultado en un parámetro de
salida, indicando si se ha encontrado el número de artículo solicitado; y (c) para añadir
una vía de acceso alternativa para manejar el escenario en el que el flujo no recorre
todas las pantallas de la lista de múltiples páginas de la aplicación de terminal.
Suprimir correlaciones añadidas automáticamente
durante el registro de flujo
En este subtema suprime las
correlaciones de extracción de la rutina de correlación para el nodo Assign
variableAssignOutput del flujo
CheckItemAvailability.seqflow. Estas correlaciones se han añadido
automáticamente a la rutina de correlación durante el registro de flujo por comodidad
cuando se han creado las acciones Extraer. (Esta característica está controlada por la
opción Exponer automáticamente variables de inserción y extracción en los
mensajes de operación de interfaz; consulte el tema
B. Iniciar el registro de flujo.)
En el paso 3.2, ha suprimido
las variables de salida a las que hacen referencia estas correlaciones (consulte la
sección
Mensaje de salida).
Ahora debe suprimir también las correlaciones, para no obtener errores de compilación
cuando compile el código fuente generado.
Nota: El compilador generará un
error de compilación para cada una de estas correlaciones, porque cada correlación hace
referencia actualmente a una variable no existente.
Para suprimir las
correlaciones:
- Abra CheckItemAvailability.seqflow en el
editor de flujo.
Abra la rutina de correlación del nodo Assign
variableAssignOutput en el editor de
correlaciones:
En el editor de flujo, pulse con el botón derecho del ratón el nodo
variableAssignOutput.
Pulse Abrir rutina de correlación.
El editor de correlaciones abre
el archivo de correlaciones para el flujo y visualiza la rutina de correlaciones para el nodo
Assign.
En la rutina de correlación, suprima cada una de las correlaciones
no conectadas que se obtienen de las variables INQ1-ITEMREF mediante INQ15-ITEMREF en el
mensaje de origen
v_CheckItemAvailability:
- Pulse con el botón derecho del ratón la correlación.
- Pulse
Suprimir.
En este punto, la rutina de correlación contiene una variable de origen y una
variable de destino, pero no contiene ninguna correlación.
Cierre el editor de correlaciones si lo desea o déjelo abierto
para el siguiente subtema.
Almacenar un valor de retorno en el mensaje de salida
En este subtema, se añade a la rutina de correlación del nodo Assign
variableAssignOutput una correlación que copia un valor de
resultado establecido en el bucle While, que indica si el número de artículo solicitado
se ha encontrado o no, en el mensaje de salida de
CheckItemAvailability.seqflow.
Ahora, se necesita una correlación para copiar el resultado de
v_CheckItemAvailability.available en
o_CheckItemAvailability.available, para que el valor del resultado
se devuelva al flujo de invocación CatalogOrder.seqflow. Para crear la correlación:
- Abra CheckItemAvailability.seqflow en el
editor de flujo, si todavía no se ha abierto.
En el editor de mensajes de flujo:
- Pulse con el botón derecho del ratón el nodo Assign
variableAssignOutput (consulte la
Figura 1).
- Pulse Abrir rutina de correlación. El editor de correlaciones
abre el archivo de correlaciones para el flujo y visualiza la rutina de correlaciones
para el nodo Assign.
Actualmente, esta rutina de
correlación debe contener los siguientes elementos:
- Mensajes de origen: el único mensaje de origen es v_CheckItemAvailability.
- Mensajes de destino: el único mensaje de destino es
o_CheckItemAvailability.
- Correlaciones: ninguna
Cree una correlación que copie el contenido
de
v_CheckItemAvailability.available en
o_CheckItemAvailability.available:
- Arrastre la variable available del mensaje de origen a la
variable available del mensaje de destino.
- El editor de correlaciones crea una transformación
Mover entre las dos variables. Esta transformación copia el
contenido de la variable origen en la variable destino.
Cierre el editor de correlaciones.
Cierre el editor de flujo.
Añada una vía de acceso
alternativa para las pantallas restantes
En este subtema,
se añade una vía de acceso alternativa para manejar el escenario en el que el nodo While
no recorre todas las pantallas de aplicación en la lista de múltiples páginas.
Si el bucle While no encuentra el número de artículo solicitado, el flujo funciona
correctamente. La pantalla de aplicación que se visualiza actualmente es la pantalla
Salir de bucle.
El flujo de control va del nodo While al nodo
Parse; el nodo Parse reconoce la pantalla de aplicación mostrada actualmente como la
pantalla
Salir de bucle; y el flujo de control va del primer
terminal de salida del nodo Parse al siguiente nodo de operación de pantalla Invoke, que
gestiona la pantalla
Salir de bucle (consulte la
Figura 1).
Figura 1. CheckItemAvailability.seqflow (antes de la vía de acceso alternativa)
No obstante,
si se encuentra el artículo solicitado, el flujo no funciona correctamente. En este caso,
la pantalla que se muestra actualmente no es la pantalla Salir de
bucle, sino la pantalla que contiene el número de artículo solicitado (porque
el nodo While termina cuando encuentra el número de artículo solicitado). El flujo de
control va del nodo While al nodo Parse como antes, pero el nodo Parse no puede reconocer
la pantalla de aplicación mostrada actualmente y el flujo de control sale a través del
segundo terminal de salida (desconectado) del nodo Parse, lo que genera un error.
Para solucionar este problema (al menos en este flujo), se añade un nodo Switch para
comprobar si se ha encontrado el número de artículo solicitado y ramificarlo según
corresponda. Siga estos pasos:
- Abra CheckItemAvailability.seqflow en el editor de flujo, si
todavía no está abierta.
- Añada el nodo Switch y sus conexiones:
- Suprima la conexión que va del terminal de salida del nodo While al nodo Parse.
- Cree un nodo Switch nuevo y colóquelo justo a la derecha del nodo
While.
- Cambie el nombre del nodo Switch cAvailable.
- Haga las siguientes conexiones. Tendrá que reordenar algunos nodos para que la
distribución sea clara (consulte Figura 2):
- Conecte el terminal de salida del nodo While while_variable0 con
el terminal de entrada del nodo Switch cAvailable.
- Conecte el primer terminal de salida del nodo Switch al
terminal de entrada del nodo Parse.
- Conecte el segundo terminal de salida del nodo Switch al terminal
de entrada del nodo Assign variableAssignOutput.
El flujo debería tener un aspecto similar a la
Figura 2:
Figura 2. CheckItemAvailability.seqflow
Abra la expresión ESQL para el terminal de salida situado más arriba
del nodo Switch
cAvailable:
- Pulse el nodo Switch con el botón derecho del ratón.
- Pulse . Se abre la
ventana Editar expresión. La lista Mensajes del ámbito está vacía y el campo de entrada de
expresión está en blanco.
Añada la variable
v_CheckItemAvailability al ámbito:
- Pulse Añadir. Se abrirá la ventana Seleccionar
mensaje.
- En la ventana Seleccionar mensaje, pulse
.
- Pulse Aceptar.
El
mensaje v_CheckItemAvailability se añadirá al ámbito.
Cree una expresión ESQL para el nodo Switch:
- Copie la expresión breve mostrada en
Figura 3 en el campo de
entrada Expresión de la ventana Editar
expresión. Puede copiar y pegar las líneas de este documento de guía de aprendizaje directamente en el
campo de entrada Expresión:
Figura 3. Expresión ESQL para el nodo Switch denominado cAvailableNOT(v_CheckItemAvailability.available='YES')
Esta expresión comprueba si la variable
v_CheckItemAvailability.available contiene la serie
'YES' y, a continuación, niega el resultado booleano
utilizando el operador NOT.
Recuerde que en el flujo invocado por el nodo While, la variable
v_CheckItemAvailability.available se establece en 'YES' si se ha
encontrado el artículo solicitado en la columna de número de artículo de una de las
pantallas de aplicación. (Consulte las descripciones de la expresión ESQL en el nodo
Switch y la rutina de correlación del nodo Assign en la sección
Añadir un nodo Switch y un nodo Assign al flujo.)
En la expresión ESQL de la
Figura 3:
- Si la variable no es igual a 'YES', la expresión se evalúa en el booleano true y el
flujo de control sale del primer terminal de salida del nodo Switch y pasa al nodo Parse.
En este caso, el bucle While ha buscado en todas las pantallas de la lista de múltiples páginas sin
encontrar el número de artículo solicitado y se muestra la pantalla Salir de
bucle.
- Si la variable es igual a 'YES', la expresión se evalúa en el booleano false y el
flujo de control sale del segundo terminal de salida del nodo Switch y pasa directamente
al nodo variableAssignOutput.
En este caso, el bucle While ha
encontrado el número de artículo y se muestra una pantalla de la lista de múltiples páginas.
Pulse en Aceptar para cerrar la ventana
Editar expresión.