Crear el subflujo de manejo de errores

Utilice las siguientes instrucciones para crear el subflujo de manejo de errores. Para obtener instrucciones más detalladas, pulse en los enlaces que se proporcionan al final de cada paso.

  1. Desde el Kit de herramientas de Message Brokers vaya a la perspectiva Desarrollo de aplicación de intermediario.
  2. Cree un nuevo proyecto de flujo de mensajes llamado Error Handler Messageflows.
    Encontrará instrucciones en Crear un proyecto de flujo de mensajes.
  3. Cree un nuevo flujo llamado Error_Handler.
    Para obtener instrucciones, consulte Crear un flujo de mensajes.
  4. En el editor de flujos de mensajes, añada y renombre los nodos que se listan en la siguiente tabla.
    Para obtener instrucciones, consulte Añadir un nodo.Observe que en la tabla siguiente, Input y Output son distintos de MQInput y MQOutput. Todos los subflujos empiezan con un nodo Input y finalizan con un nodo Output.
    Tipo de nodo Nombre de nodo
    Input Start Subflow
    Filter Check Backout Count
    TryCatch TryCatch
    Database Update Error Database
    Throw Throw To Complete Rollback
    Output Back To Main Flow
  5. Conecte los nodos tal como se lista en la siguiente tabla.
    Para obtener instrucciones, consulte Conectar nodos.
    Para comprobar que ha conectado los nodos correctamente, consulte la figura de Acerca del ejemplo del Manejador de errores.
    Nombre de nodo Terminal Conectar a este nodo
    Input Out Check Backout Count
    Check Backout Count True TryCatch
    TryCatch Try Back To Main Flow
    Catch Update Error Database
    Update Error Database Out Throw To Complete Rollback
  6. Configure las propiedades del nodo, tal como se lista en la siguiente tabla. Acepte los valores por omisión para todas las propiedades, a menos que en la tabla se liste un valor alternativo.
    Si desea ver las instrucciones, consulte el apartado Configurar un nodo.
    Nombre de nodo Página Propiedad Valor
    Update Error Database Básico Origen de datos ERRORDB
    Básico Transacción Confirmar
    Throw To Complete Rollback Básico Número del mensaje 3002
    Básico Texto del mensaje Desde el flujo de mensajes Error_Handler. Consulte ERRORDB para obtener más detalles.
  7. Añada los módulos de código ESQL siguientes al archivo Error_Handler.esql. Si lo desea, puede copiar y pegar el código ESQL directamente en el archivo ESQL.
    Para obtener instrucciones, consulte Desarrollo de ESQL.
    CREATE FILTER MODULE Error_Handler_Filter
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
          IF Root.MQMD.BackoutCount='0' THEN
          RETURN TRUE;
          ELSE
             RETURN FALSE;
          END IF;
       END;
    END MODULE;
    
    CREATE DATABASE MODULE Error_Handler_Database
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    
    DECLARE Error INTEGER;
    DECLARE Text CHARACTER;
    DECLARE Place INTEGER;
    DECLARE LastPlace INTEGER;
    DECLARE NodeName CHARACTER;
    DECLARE Label CHARACTER;
    DECLARE FlowName CHARACTER;
    
    -- Establecer el punto de partida
    DECLARE start REFERENCE TO ExceptionList.*[1];
    WHILE start.Number IS NOT NULL DO
       SET Error = start.Number;
          IF Error = 3001 THEN
             SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);
             ELSE
             SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
          END IF;
       SET Label = start.Label;
       SET Place = POSITION('.' IN Label);
       SET LastPlace = Place;
          WHILE Place <>0 DO
             SET Label=SUBSTRING(Label FROM (Place+1));
             SET Place=POSITION('.' IN Label);
             SET LastPlace = LastPlace + Place;
          END WHILE;
       SET Label=start.Label;
       SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
       SET NodeName=SUBSTRING(Label FROM (LastPlace+1));
    -- Mover el inicio al último hijo del campo al que señala actualmente
       MOVE start LASTCHILD;
    END WHILE;
    INSERT INTO Database.ERRORS(MSGID,TEXT,ERRORNUM, ERRORDATE,MSGDATA,FLOWNAME,NODENAME)
    VALUES(CAST(Root.MQMD.MsgId AS BLOB),Text,Error,CURRENT_TIMESTAMP,BITSTREAM(Root),
    FlowName,NodeName);
          RETURN TRUE;
       END;
    END MODULE;

Ahora puede crear el flujo de mensajes principal que incorpora este subflujo: Crear el flujo de mensajes principal

Icono de página principal   Volver a la creación del ejemplo Manejador de errores