Rational Developer for System z, Versión 7.6.1

Paso 3.3: Añadir lógica al flujo invocado

En este paso se añaden nodos y correlaciones al flujo invocado por el nodo While.

Un nodo While tiene asociado con él un flujo que invoca en el tiempo de ejecución cuando la expresión de bucle del nodo While se evalúa en el booleano true (consulte el tema Información básica acerca de los nodos While).

Cuando registra un bucle durante el registro del flujo, el registrador del flujo (editor de host) genera automáticamente una vía de acceso de flujo en el flujo invocado. La vía de acceso de flujo está formada por los nodos que gestionan las pantallas de aplicación que se producen durante una iteración del bucle While. Puede personalizar aún más este flujo para que se adapte a sus necesidades.

En este paso, realizará los cambios siguientes en el flujo invocado:

Abrir el flujo invocado y organizar los nodos

En este subtema abrirá el flujo invocado y organizará sus nodos:

  1. Abra el flujo CheckItemAvailability.seqflow en el editor de flujo:
    1. En el Explorador de proyectos EST, pulse con el botón derecho del ratón sobre CatalogSample > Flujos > CheckItemAvailability.seqflow.
    2. Pulse Abrir con > Editor de flujo.

  2. Abra el flujo invocado por el nodo While:
    1. En el lienzo del editor de flujo, efectúe una doble pulsación en el nodo While while_variable0:
      Icono del nodo While
    2. El editor de flujo se abre y muestra el flujo invocado.

  3. En el lienzo del editor de flujo, pulse con el botón derecho del ratón sobre una parte vacía del lienzo y pulse Reducir. (Es posible que deba Reducir dos veces para ver todos los nodos).

  4. Organice los nodos del lienzo del editor de flujo de modo que su aspecto sea similar al de Figura 1. (Esta reordenación de los nodos se realiza por pura comodidad y no tiene ningún efecto en la ejecución del flujo).
    Figura 1. Organizar los nodos en el lienzo del editor de flujo
    Flujo invocado por el nodo While

  5. Guarde el trabajo (Control-S).

  6. No cierre todavía el editor de flujo. Lo utilizará en el siguiente subtema.

Añadir un nodo Switch y un nodo Assign al flujo

En esta sección se explica cómo añadir un nodo Switch y un nodo Assign al flujo invocado. Estos nodos operan de la siguiente manera:

Para añadir el nodo Switch:

  1. Suprima la conexión entre los dos nodos de operación de pantalla Invoke, Dfh0xs2.Exinqc_ExinqcInitialExtract y Dfh0xs2.Exinqc_Exinqc:
    1. Pulse la conexión con el botón derecho del ratón.
    2. Pulse Suprimir. La conexión se suprimirá.

  2. Añada un nodo Switch nuevo y arrástrelo hasta que quede entre los dos nodos de operación de pantalla Invoke. El nombre predeterminado del nodo Switch nuevo es Switch:
    1. Expanda el cajón de la paleta que hay a la izquierda del editor de flujo.
    2. Seleccione Switch.
    3. Mueva el icono del puntero del ratón sobre el lienzo del editor de flujo a la ubicación donde desee ubicar el nodo Switch.
    4. Pulse el ratón. El nodo Switch aparece en el lienzo con el nombre predeterminado Switch.
  3. Conecte el nodo Switch del siguiente modo (consulte la sección Figura 2):
    1. Conecte el terminal de salida superior de Dfh0xs2.Exinqc_ExinqcInitialExtract con el terminal de entrada del nodo Switch:
      1. Pulse con el botón derecho del ratón sobre el nodo Dfh0xs2.Exinqc_ExinqcInitialExtract.
      2. Pulse Crear conexión. Se abrirá la ventana Selección de terminal.
      3. En la ventana Selección de terminal, en la lista Seleccionar terminal, pulse el primer terminal (denominado actualmente Dfh0xs2.Exinqc_Exinqc).
      4. Pulse Aceptar. Aparece la línea de conexión en el lienzo del editor de flujo.
      5. Arrastre la línea de conexión al nodo Switch y pulse el nodo.
    2. Conecte el terminal de salida inferior del nodo Switch con el terminal de entrada del nodo Dfh0xs2.Exinqc_Exinqc.

Para añadir el nodo Assign:

  1. Añada un nodo Assign nuevo al lienzo del editor de flujo y arrástrelo hasta que quede por encima del nodo Assign existente loopEnd_variable0 (consulte la Figura 2). El nombre predeterminado del nodo Assign nuevo es Assign.
    1. Expanda el cajón de la paleta que hay a la izquierda del editor de flujo.
    2. Seleccione Assign.
    3. Mueva el icono del puntero del ratón sobre el lienzo del editor de flujo a la ubicación donde desee ubicar el nodo Assign.
    4. Pulse el ratón. El nodo Assign aparece en el lienzo.

  2. Conecte el nodo Assign nuevo del modo siguiente:
    1. Conecte el terminal de salida superior del nodo Switch con el terminal de entrada del nuevo nodo Assign.
    2. Conecte el terminal de salida del nuevo nodo Assign con el nodo final.
Organice los nodos para que el flujo sea parecido al de la Figura 2:
Figura 2. CheckItemAvailability.seqflow
Vista del flujo
Nota: Los nombres predeterminados del nodo Switch nuevo y del nodo Assign nuevo son Switch y Assign. En esta guía de aprendizaje, no hay ninguna razón para cambiar de nombre estos nodos. No obstante, si desea cambiarles el nombre, pulse con el botón derecho del ratón sobre el nodo y pulse Redenominar.

Añadir lógica al nuevo nodo Switch

En esta sección añadirá una expresión ESQL al nuevo nodo Switch para comparar el número de artículo pasado como parámetro de entrada al flujo CheckItemAvailability.seqflow con números de artículos extraídos de una página de la pantalla de aplicación Consultar catálogo por las acciones Extraer.

Para añadir la lógica:

  1. En el editor de flujo, abra el flujo invocado, si todavía no está abierto (consulte la sección Abrir el flujo invocado y organizar los nodos).

  2. Edite la expresión ESQL para el primer (el de más arriba) terminal de salida del nodo Switch:

    1. Pulse el nodo Switch con el botón derecho del ratón.

    2. Pulse Editar expresión > Expresión. Se abre la ventana Editar expresión. (La lista Mensajes del ámbito y el campo de entrada Expresión están en blanco.)

    3. En la ventana Editar expresión:

      1. Añada i_CheckItemAvailability.i_CheckItemAvailability al ámbito de la expresión:
        1. Pulse Añadir. Se abrirá la ventana Seleccionar mensaje.
        2. En la ventana Seleccionar mensaje, pulse CatalogSample > CatalogSample.Interface > Mensajes > i_CheckItemAvailability.sfmxsd > i_CheckItemAvailability.
        3. Pulse Aceptar.
        El mensaje i_CheckItemAvailability se añadirá al ámbito.
        Nota: Si la ventana Editar expresión muestra el mensaje de error Se ha encontrado '<EOF>'..., descarte el mensaje. Este mensaje hace referencia al hecho de que el campo de entrada de expresión en la parte inferior de la ventana está vacío de momento.
      2. Añada v_CheckItemAvailability.v_CheckItemAvailability al ámbito de la expresión:
        1. Pulse Añadir. Se abrirá la ventana Seleccionar mensaje.
        2. En la ventana Seleccionar mensaje, pulse CatalogSample > CatalogSample.Interface > Mensajes > v_CheckItemAvailability.sfmxsd > v_CheckItemAvailability.
        3. Pulse Aceptar.

        El mensaje v_CheckItemAvailability se añadirá al ámbito.

      3. Añada una expresión ESQL al campo de entrada de expresión:

        1. Copie la expresión mostrada en Figura 3 en el campo de entrada de expresión en la parte inferior de la ventana Editar expresión. Debería poder copiar y pegar las líneas de este documento de guía de aprendizaje directamente en el campo de entrada de la ventana.

          Figura 3. Expresión ESQL para el nodo Switch
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ1-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ2-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ3-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ4-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ5-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ6-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ7-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ8-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ9-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ10-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ11-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ12-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ13-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ14-ITEMREF") OR
          (i_CheckItemAvailability.itemNumber = v_CheckItemAvailability."INQ15-ITEMREF")
          Nota:
          • La expresión compara la variable i_CheckItemAvailability.itemNumber (que es del tipo xsd:string) con cada uno de los números de elemento (también del tipo xsd:string), con las acciones Extracción leídas de los campos en la primera columna de la pantalla de la aplicación Consultar catálogo.

          • Si se encuentra una coincidencia, la expresión ESQL se resuelve en el booleano true; de lo contrario la expresión ESQL se resuelve en el booleano false.

          • En el entorno de ejecución:
            • Si la expresión ESQL se resuelve en true, el flujo de control sale del nodo Switch a través del primer terminal de salida, que está conectado con el nodo Assign Assign.

            • Si la expresión ESQL se resuelve en false, el flujo de control sale del nodo Switch a través del terminal de salida predeterminado (el de más abajo), que está conectado con el nodo Assign loopend_variable0.

      4. Pulse en Aceptar para cerrar la ventana Editar expresión.

  3. Guarde el trabajo (Control-S).

Añadir dos correlaciones a la rutina de correlación del nuevo nodo Assign

Nota: Para obtener información de la sintaxis como, por ejemplo, v_CheckItemAvailability.available, consulte la Nota sobre "<Mensaje>.<elemento>".

En esta sección, añadirá dos correlaciones a la rutina de correlación del nuevo nodo Assign denominado Assign en el flujo invocado. (Recuerde que las correlaciones permiten recuperar, manipular y almacenar datos en un flujo; consulte la sección Conceptos de correlación.)

Como se ha indicado antes, el nodo Assign está conectado al flujo, por lo que sólo se ejecuta cuando se encuentra el número de artículo solicitado.

A continuación, añadirá dos correlaciones a la rutina de correlación de este nodo Assign que ejecutan las siguientes tareas:

Para crear estas dos correlaciones:

  1. Abra la rutina de correlación del nodo Assign denominado Assign en el editor de correlaciones:

    1. Pulse con el botón derecho del ratón el nodo Assign denominado Assign.

    2. Pulse Abrir rutina de correlación.

      El editor de correlaciones abre el archivo de correlaciones para el flujo, crea automáticamente una rutina de correlación vacía para el nodo Assign y visualiza la rutina de correlación en el área de rutinas de correlación del editor de correlaciones.

  2. Añada el mensaje v_CheckItemAvailability a la rutina de correlación como mensaje destino. (En realidad, se añade una referencia a este mensaje a la rutina de correlación).

    1. En la barra de herramientas de la rutina de correlación, pulse el icono Añadir un mensaje destino Añadir un mensaje destino. Se abrirá la ventana Seleccionar mensaje.

    2. En la ventana Seleccionar mensaje:
      1. Pulse el mensaje CatalogSample > CatalogSample.Interface > Mensajes > v_CheckItemAvailability.sfmxsd > v_CheckItemAvailability.

      2. Pulse Aceptar.

      El mensaje destino se añade a la parte derecha del área de rutinas de correlación.

      Nota sobre el almacenamiento de una referencia a un mensaje en una rutina de correlación: Cuando se añade un mensaje origen o un mensaje destino a una rutina de correlación, el editor de correlaciones realmente almacena en la rutina de correlación una referencia al mensaje en lugar del propio mensaje.

      El mensaje real sigue residiendo en su lugar, dentro del archivo de mensaje al que pertenece. Cuando se suprime un mensaje origen o un mensaje destino de una rutina de correlación, el editor de correlaciones suprime la referencia. El mensaje real del archivo de mensaje no se suprime.

  3. Cree una correlación que almacene la serie YES en el elemento destino v_CheckItemAvailability.available:

    1. En la parte de destino del área de rutinas de correlación, pulse con el botón derecho del ratón v_CheckItemAvailability.available:
      1. Si es necesario, desplace el área del editor hacia la derecha hasta que pueda ver el mensaje de destino v_CheckItemAvailability.
      2. Pulse con el botón derecho del ratón sobre el último elemento del mensaje, el elemento de mensaje available.

    2. Pulse Crear transformación:

      El editor de correlaciones visualiza una nueva transformación Asignar en el área del centro de la rutina de correlación al lado del elemento de mensaje available, con una conexión que va desde la transformación Asignar al elemento de mensaje available.
      Nota: La nueva transformación Asignar se etiqueta Assign porque este tipo de transformación asigna un valor literal a un elemento de mensaje de destino. El nombre no tiene nada que ver con el hecho de que esta rutina de correlación también pertenece a un nodo Assign denominado Assign.

    3. Abra la vista Propiedades del editor de correlaciones si aún no está abierta (consulte el tema Abrir o volver a abrir una vista).

    4. En la vista del editor de correlaciones, pulse la transformación Asignar. El editor de correlaciones visualiza las propiedades de la transformación seleccionada en la vista Propiedades.

    5. En la vista Propiedades:
      1. Pulse la pestaña General.
      2. En el campo Valor, escriba la serie YES.
        Nota sobre cómo escribir texto literal en el campo Valor: No escriba entre comillas simples la serie en el campo Valor:
        • El campo Valor de la pestaña General de la transformación Asignar espera texto normal (consulte la sección Transformaciones que crean correlaciones unilaterales).
        • Por el contrario, si escribe una expresión ESQL y desea utilizar una serie de texto como YES, deberá escribirla entre comillas simples: 'YES'.

      La nueva correlación está configurada ahora para almacenar la serie YES en v_CheckItemAvailability.available.

  4. Cree una correlación que almacene la serie FALSE en el elemento de mensaje v_CheckItemAvailability.variable0:

    1. En la parte de destino del área de rutinas de correlación, pulse con el botón derecho del ratón v_CheckItemAvailability.variable0:

    2. Pulse Crear transformación:

      El editor de correlaciones visualiza una nueva transformación Asignar en el área del centro de la rutina de correlación al lado del elemento de mensaje variable0, con una conexión que va desde la transformación Asignar al elemento de mensaje variable0.

    3. Abra la vista Propiedades del editor de correlaciones si aún no está abierta (consulte el tema Abrir o volver a abrir una vista).

    4. En la vista del editor de correlaciones, pulse la nueva transformación Asignar. El editor de correlaciones visualiza las propiedades de la transformación seleccionada en la vista Propiedades.

    5. En la vista Propiedades:
      1. Pulse la pestaña General.
      2. En el campo Valor, escriba la serie FALSE. No escriba entre comillas simples la serie FALSE (consulte la Nota sobre cómo escribir texto literal en el campo Valor).

      La nueva correlación está configurada ahora para almacenar la serie FALSE en v_CheckItemAvailability.variable0.

  5. Cierre el editor de correlaciones.

Cerrar el flujo invocado

El editor de flujo muestra los nodos del flujo invocado. Para cerrar el flujo invocado:

  1. Abra la vista Esquema del editor de flujo si aún no está abierta (consulte Abrir o volver a abrir una vista). La vista Esquema muestra una representación de árbol del flujo CheckItemAvailability.seqflow que contiene un nodo de árbol para cada uno de los nodos del flujo, incluidos:
    • Un nodo de árbol para cada nodo del flujo CheckItemAvailability.seqflow.
    • En el nodo de árbol del nodo While, un nodo de árbol para cada nodo del flujo invocado.

  2. En la vista Esquema pulse cualquier nodo que no esté contenido en el flujo invocado (consulte Editar el flujo invocado por un nodo While). El editor de flujo realiza las acciones siguientes:
    1. Cierra el flujo invocado.
    2. Visualiza el contenido del flujo CheckItemAvailability.seqflow.

  3. Cierre el editor de flujo.


Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)