Creazione del flusso secondario di gestione degli errori

Utilizzare le seguenti istruzioni per creare il flusso secondario di gestione degli errori. Per istruzioni più dettagliate, fare clic sui link forniti alla fine di ogni passo.

  1. Nel Message Brokers Toolkit, passare alla vista Broker Application Development.
  2. Creare un nuovo progetto flusso di messaggi denominato Error Handler Messageflows.
    Per istruzioni, consultare Creazione di un progetto flusso di messaggi.
  3. Creare un nuovo flusso di messaggi denominato Error_Handler.
    Per istruzioni, consultare Creazione di un flusso di messaggi.
  4. Nell'editor Flusso di messaggi, aggiungere e ridenominare i nodi elencati nella seguente tabella.
    Per istruzioni, consultare Aggiunta di un nodo. Si noti che Input ed Output nella tabella sotto sono differenti da MQInput e MQOutput. Tutti i flussi secondari iniziano con un nodo Input e terminano con un nodo Output.
    Tipo nodo Nome 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. Collegare i nodi come elencato nella seguente tabella.
    Per istruzioni, consultare Collegamento nodi.
    Per controllare che i nodi siano stati collegati correttamente, vedere la figura in Informazioni sull'esempio di Programma di gestione degli errori.
    Nome nodo Terminale Collegare a questo 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. Configurare le proprietà del nodo come viene elencato nella seguente tabella. Accettare i valori predefiniti per tutte le proprietà a meno che nella tabella non venga elencato un valore alternativo.
    Per istruzioni, consultare Configurazione di un nodo.
    Nome nodo Pagina Proprietà Valore
    Update Error Database Base Origine dati ERRORDB
    Base Transazione Commit
    Throw To Complete Rollback Base Numero messaggio 3002
    Base Testo messaggio Da flusso di messaggi Error_Handler. Consultare ERRORDB per dettagli.
  7. Aggiungere i seguenti moduli di codice ESQL al file Error_Handler.esql. E' possibile copiare ed incollare il codice ESQL direttamente nel file ESQL se si desidera.
    Per istruzioni, consultare Sviluppo di 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;
    
    -- Set the start point
    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));
    -- Move start to the last child of the field to which it currently points          
       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;

Ora è possibile creare il flusso di messaggi principale, che incorpora questo flusso secondario: Creazione del flusso di messaggi principale

icona Pagina principale   Torna a Creazione dell'esempio di Programma di gestione degli errori