ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Big project part 2

Post new topic  Reply to topic
 Big project part 2 « View previous topic :: View next topic » 
Author Message
cahc25099025
PostPosted: Fri Jan 27, 2017 12:05 pm    Post subject: Big project part 2 Reply with quote

Newbie

Joined: 26 Jan 2017
Posts: 2

Hello all!

I'm a begginer with IIB. The fact is that i have developed an application that implements embedded cache with integration bus 9.0.0.2 This is the context:

There is some data in a db (Oracle) and must be processed by an esb to consume web services and this services responds data (business rules) and by the esb lead it to some tables in the same db.

The approach to handle this was it:

1. A message flow that leads the message to a "Database component (iib application)". Inside this component, it reset all in cache for security and makes a query for consult the quantity of rows must be processed. As the db may contain approximately 30.000 thousands records, we implemented a paged query and it divides the records in a determinated amount.

2. The group of records go to a node that divides the records individually and each record is mapped to a message model xml structure. After this mapped structure is send to consume a web service

3. After the web service answer, the response is mapped to a message model xml structure

4. This mapped structure is send to the "Database component" that makes the insert of the record in db

The problem is that the quantity of records inserted in 4th issue not match with the original in the 1st issue. Given that there is a component that takes the records that some reason are not valids or maybe an error is present. I'm gonna list by (previous) point the esql code given that these are not all the project:

1.
Code:
CREATE COMPUTE MODULE SMF_LiquidacionComisionesBD_SelectReporte
   CREATE FUNCTION Main() RETURNS BOOLEAN
   BEGIN
      
      --Asignacion de cabeceras
      CALL CopyEntireMessage();
      
      SET OutputRoot.Properties = InputRoot.Properties;
      SET OutputRoot.MQMD = InputRoot.MQMD;
      SET OutputRoot.XMLNSC = InputRoot.XMLNSC;
      
      SET OutputRoot.XMLNSC.msgd:responseMessageIn.header = InputRoot.XMLNSC.msgd:requestMessageIn.header;
      SET OutputRoot.XMLNSC.msgd:responseMessageIn.header.responseStatus.statusCode = STATUS_CODE_SUCCESS;
      DELETE FIELD OutputRoot.XMLNSC.msgd:requestMessageIn;
      
      -- Preparacion consulta
      DECLARE totalRegistros CHARACTER '';
      DECLARE paginaConsultada CHARACTER '';
      DECLARE numPaginaConsultada INTEGER 0;

      SET totalRegistros = getCache(TOTAL_REGISTROS);
      SET paginaConsultada = getCache(PAGINA_CONSULTADA);

      SET numPaginaConsultada = CAST(paginaConsultada AS INTEGER);

      IF CAST(totalRegistros AS INTEGER) = 0 THEN

         PROPAGATE TO TERMINAL 1;

      ELSE

         SET numPaginaConsultada = numPaginaConsultada + 1;
         SET paginaConsultada = CAST(numPaginaConsultada AS CHARACTER);
         CALL setUpdateCacheValue(PAGINA_CONSULTADA, paginaConsultada);

      END IF;
      
      --Configurar datos del cache y posterior consulta a base de datos

      DECLARE contact admin CHARACTER '';
      DECLARE contact admin CHARACTER '';
      DECLARE registrosXpagina CHARACTER '';

      DECLARE intTotalRegistros INTEGER 0;
      DECLARE contact admin INTEGER 0;
      DECLARE contact admin INTEGER 0;
      DECLARE intRegistroXpagina INTEGER 0;
      
      --Variables que almacenan los limites
      DECLARE limiteInicial INTEGER 0;
      DECLARE limiteFinal INTEGER 0;
      DECLARE auxiliar INTEGER 0;

      WHILE contact admin <= contact admin DO

         CREATE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
         DECLARE refOutLiquidacionReporte REFERENCE TO OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;

         SET intTotalRegistros = CAST(getCache(TOTAL_REGISTROS) AS INTEGER);
         SET contact admin = CAST(getCache(PAGINA_CONSULTADA) AS INTEGER);
         SET contact admin = CAST(getCache(contact admin) AS INTEGER);
         SET intRegistroXpagina = CAST(getCache(REGISTROS_X_PAGINA) AS INTEGER);
         
         --Determinar limites de consulta
         IF contact admin < 1 THEN

            SET contact admin = 1;

         ELSEIF contact admin > contact admin THEN

            SET contact admin = contact admin;

         END IF;

         SET auxiliar = contact admin - 1;

         SET limiteInicial = auxiliar * intRegistroXpagina;
         SET limiteFinal = limiteInicial + intRegistroXpagina;
         
         --Consulta a base de datos de la tabla REPORTE LIQUIDACION---
         DECLARE contenidoTabla ROW;
         SET contenidoTabla.fila[] = PASSTHRU('SELECT * FROM (SELECT rownum rnum, A.* FROM(SELECT LIQ.* FROM SMARTVENTAS.LIC_T_REPORTE_LIQUIDACION LIQ WHERE LIQ.ISBESTADOPROCESO = ?)  A WHERE rownum <= ?) WHERE rnum > ? ORDER BY rnum' TO Database.OracleCoomevaTestODBC VALUES('0', limiteFinal, limiteInicial));

         DECLARE iFilas INTEGER 0;
         SET iFilas = CARDINALITY(contenidoTabla.fila[]);
         IF iFilas > 0 THEN

            DECLARE arreglo REFERENCE TO contenidoTabla.fila[1];

            WHILE LASTMOVE (arreglo) = TRUE DO
               
               CREATE FIRSTCHILD OF refOutLiquidacionReporte NAME 'liquidacionReporte';
         
               SET refOutLiquidacionReporte.liquidacionReporte.ISBNUMEROPRODUCTO =arreglo.ISBNUMEROPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.INUTIPOPRODUCTO =arreglo.INUTIPOPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBTIPOPRODUCTO =arreglo.ISBTIPOPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.INUCODIGOSISTEMA =arreglo.INUCODIGOSISTEMA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBESTADO =arreglo.ISBESTADO;
               SET refOutLiquidacionReporte.liquidacionReporte.INUFECHAAPERTURA =arreglo.INUFECHAAPERTURA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBCODUSUARIOAPERTURA =arreglo.ISBCODUSUARIOAPERTURA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMUSUARIOAPERTURA =arreglo.ISBNOMUSUARIOAPERTURA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBOFICINAPRODUCTO =arreglo.ISBOFICINAPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBREGIONALPRODUCTO =arreglo.ISBREGIONALPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBOFICINACLIENTE =arreglo.ISBOFICINACLIENTE;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBREGIONALCLIENTE =arreglo.ISBREGIONALCLIENTE;
               SET refOutLiquidacionReporte.liquidacionReporte.INUMONTOVALOR =arreglo.INUMONTOVALOR;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBCANAL =arreglo.ISBCANAL;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBTIPOPERSONA =arreglo.ISBTIPOPERSONA;
               SET refOutLiquidacionReporte.liquidacionReporte.INUNUMDOCUMENTOCLIENTE =arreglo.INUNUMDOCUMENTOCLIENTE;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBREGISTROSMARTVENTAS =arreglo.ISBREGISTROSMARTVENTAS;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMBRETITULAR =arreglo.ISBNOMBRETITULAR;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBDESCRIPCIONLINEA =arreglo.ISBDESCRIPCIONLINEA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADNUMEROPRODUCTO =arreglo.ISBDAADNUMEROPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADTIPOPRODUCTO =arreglo.ISBDAADTIPOPRODUCTO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADDESCRIPCION =arreglo.ISBDAADDESCRIPCION;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBDAADVALOR =arreglo.ISBDAADVALOR;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGCHEQUEDEVUELTOCANCELADO =arreglo.FLAGCHEQUEDEVUELTOCANCELADO;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGEXTERNO =arreglo.FLAGEXTERNO;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGTRANSFERENCIA =arreglo.FLAGTRANSFERENCIA;
               SET refOutLiquidacionReporte.liquidacionReporte.VALORTRANSFERENCIA =arreglo.VALORTRANSFERENCIA;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGREINVERSION =arreglo.FLAGREINVERSION;
               SET refOutLiquidacionReporte.liquidacionReporte.VALORREINVERSION =arreglo.VALORREINVERSION;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGPRODUCTOREDBANCOOMEVA =arreglo.FLAGPRODUCTOREDBANCOOMEVA;
               SET refOutLiquidacionReporte.liquidacionReporte.SALDOPROMEDIO =arreglo.SALDOPROMEDIO;
               SET refOutLiquidacionReporte.liquidacionReporte.TIPOCARTERA =arreglo.TIPOCARTERA;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGPAGOANTICIPADO =arreglo.FLAGPAGOANTICIPADO;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGUSOMISMOMES =arreglo.FLAGUSOMISMOMES;
               SET refOutLiquidacionReporte.liquidacionReporte.DIFERENCIASALDOPROMEDIO =arreglo.DIFERENCIASALDOPROMEDIO;
               SET refOutLiquidacionReporte.liquidacionReporte.INUNUMEROPAGOS =arreglo.INUNUMEROPAGOS;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGCANCELMESANT =arreglo.FLAGCANCELMESANT;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGAUMENCAPITAL =arreglo.FLAGAUMENCAPITAL;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGAMPARADA =arreglo.FLAGAMPARADA;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBFRANQUICIA =arreglo.ISBFRANQUICIA;
               SET refOutLiquidacionReporte.liquidacionReporte.INUINTERES =arreglo.INUINTERES;
               SET refOutLiquidacionReporte.liquidacionReporte.INURETEFUENTE =arreglo.INURETEFUENTE;
               SET refOutLiquidacionReporte.liquidacionReporte.FLAGCANCELMISMOMES =arreglo.FLAGCANCELMISMOMES;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBNOMPERFIL= arreglo.ISBNOMPERFIL;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBCARGO = arreglo.ISBCARGO;
               SET refOutLiquidacionReporte.liquidacionReporte.ISBESTADOPROCESO = arreglo.ISBESTADOPROCESO;
               SET refOutLiquidacionReporte.liquidacionReporte.IDTFECHAPROCESADO = arreglo.IDTFECHAPROCESADO;

               MOVE arreglo NEXTSIBLING;

            END WHILE;

            PROPAGATE DELETE NONE;
            DELETE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;

            SET contact admin = contact admin + 1;
            CALL setUpdateCacheValue(PAGINA_CONSULTADA, CAST(contact admin AS CHARACTER));

         END IF;

      END WHILE;

      RETURN FALSE;
   END;

   CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
   LANGUAGE JAVA
   EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.setUpdateCacheValue"[/quote];

   CREATE PROCEDURE getCache(IN llave CHARACTER)
   RETURNS CHARACTER
   LANGUAGE JAVA
   EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.getCacheValue"[/quote];

   CREATE PROCEDURE CopyMessageHeaders() BEGIN
      DECLARE I INTEGER 1;
      DECLARE J INTEGER;
      SET J = CARDINALITY(InputRoot.*[]);
      WHILE I < J DO
         SET OutputRoot.*[I] = InputRoot.*[I];
         SET I = I + 1;
      END WHILE;
   END;

   CREATE PROCEDURE CopyEntireMessage() BEGIN
      SET OutputRoot = InputRoot;
   END;
END MODULE;

[b]2. [/b]
DECLARE registrosInvalidos SHARED ROW;
CREATE COMPUTE MODULE SMF_LiquidacionComisionesOrqLiqProd_B_PropagateInBucle
   CREATE FUNCTION Main() RETURNS BOOLEAN
   BEGIN
      
      
      SET OutputRoot.Properties     = InputRoot.Properties;
      SET OutputRoot.MQMD        = InputRoot.MQMD;
      CREATE FIELD OutputRoot.MQRFH2.Variables.LiquidacionReporte;
      SET OutputRoot.XMLNSC       = InputRoot.XMLNSC;
      
      --CALL deleteCacheValue(TOTAL_REGISTROS);
      CALL deleteCacheValue(REGISTROS_VALIDOS);
      CALL deleteCacheValue(REGISTROS_INVALIDOS);

      DECLARE I INTEGER 1;
      DECLARE J INTEGER 0;

      DECLARE error INTEGER;
      SET error = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList.*[]);
      IF error > 0 THEN

         DECLARE refException REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList;

         DECLARE theDestine CHARACTER 'Error';
         SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;

         RETURN TRUE;
      ELSE

         DECLARE refIn REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn;
         DECLARE refInLiquidacionReporteOpResponse REFERENCE TO refIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
         SET J = CARDINALITY(refInLiquidacionReporteOpResponse.liquidacionReporte[]);
         CALL setUpdateCacheValue(REGISTROS_TOTALES, CAST(J AS CHARACTER) );         

         DECLARE iCont INTEGER 0;

         WHILE I <= J DO

            SET OutputRoot.MQRFH2.Variables.LiquidacionReporte.holder = convertXMLNSCToXmlString(refInLiquidacionReporteOpResponse.liquidacionReporte[I]);

            CREATE FIELD OutputRoot.XMLNSC.msgd:responseMessageIn;
            DECLARE refOut REFERENCE TO OutputRoot.XMLNSC.msgd:responseMessageIn;

            CREATE FIELD refOut.header;
            SET refOut.header = refIn.header;

            CALL Util_removeCallBackResponse(OutputRoot);

            CREATE FIELD refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
            DECLARE refOutLiqProd REFERENCE TO refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;
            
            DECLARE theDestine CHARACTER 'Error';
            
            SET Environment.Variables.LiquidacionReporte = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
            
            SET refOutLiqProd.liquidacionReporte[1].ISBNUMEROPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNUMEROPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].INUTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUTIPOPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].ISBTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBTIPOPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].INUCODIGOSISTEMA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUCODIGOSISTEMA;
            SET refOutLiqProd.liquidacionReporte[1].ISBESTADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBESTADO;
            SET refOutLiqProd.liquidacionReporte[1].INUFECHAAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUFECHAAPERTURA;
            SET refOutLiqProd.liquidacionReporte[1].ISBCODUSUARIOAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCODUSUARIOAPERTURA;
            SET refOutLiqProd.liquidacionReporte[1].ISBNOMUSUARIOAPERTURA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMUSUARIOAPERTURA;
            SET refOutLiqProd.liquidacionReporte[1].ISBOFICINAPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBOFICINAPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].ISBREGIONALPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGIONALPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].ISBOFICINACLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBOFICINACLIENTE;
            SET refOutLiqProd.liquidacionReporte[1].ISBREGIONALCLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGIONALCLIENTE;
            SET refOutLiqProd.liquidacionReporte[1].INUMONTOVALOR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUMONTOVALOR;
            SET refOutLiqProd.liquidacionReporte[1].ISBCANAL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCANAL;
            SET refOutLiqProd.liquidacionReporte[1].ISBTIPOPERSONA = refOutLiqProd.InLiquidacionReporteOpResponse.liquidacionReporte[I].ISBTIPOPERSONA;
            SET refOutLiqProd.liquidacionReporte[1].INUNUMDOCUMENTOCLIENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUNUMDOCUMENTOCLIENTE;
            SET refOutLiqProd.liquidacionReporte[1].ISBREGISTROSMARTVENTAS = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBREGISTROSMARTVENTAS;
            SET refOutLiqProd.liquidacionReporte[1].ISBNOMBRETITULAR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMBRETITULAR;
            SET refOutLiqProd.liquidacionReporte[1].ISBDESCRIPCIONLINEA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDESCRIPCIONLINEA;
            SET refOutLiqProd.liquidacionReporte[1].ISBDAADNUMEROPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADNUMEROPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].ISBDAADTIPOPRODUCTO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADTIPOPRODUCTO;
            SET refOutLiqProd.liquidacionReporte[1].ISBDAADDESCRIPCION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADDESCRIPCION;
            SET refOutLiqProd.liquidacionReporte[1].ISBDAADVALOR = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBDAADVALOR;
            SET refOutLiqProd.liquidacionReporte[1].FLAGCHEQUEDEVUELTOCANCELADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCHEQUEDEVUELTOCANCELADO;
            SET refOutLiqProd.liquidacionReporte[1].FLAGEXTERNO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGEXTERNO;
            SET refOutLiqProd.liquidacionReporte[1].FLAGTRANSFERENCIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGTRANSFERENCIA;
            SET refOutLiqProd.liquidacionReporte[1].VALORTRANSFERENCIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].VALORTRANSFERENCIA;
            SET refOutLiqProd.liquidacionReporte[1].FLAGREINVERSION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGREINVERSION;
            SET refOutLiqProd.liquidacionReporte[1].VALORREINVERSION = refInLiquidacionReporteOpResponse.liquidacionReporte[I].VALORREINVERSION;
            SET refOutLiqProd.liquidacionReporte[1].FLAGPRODUCTOREDBANCOOMEVA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGPRODUCTOREDBANCOOMEVA;
            SET refOutLiqProd.liquidacionReporte[1].SALDOPROMEDIO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].SALDOPROMEDIO;
            SET refOutLiqProd.liquidacionReporte[1].TIPOCARTERA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].TIPOCARTERA;
            SET refOutLiqProd.liquidacionReporte[1].FLAGPAGOANTICIPADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGPAGOANTICIPADO;
            SET refOutLiqProd.liquidacionReporte[1].FLAGUSOMISMOMES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGUSOMISMOMES;
            SET refOutLiqProd.liquidacionReporte[1].DIFERENCIASALDOPROMEDIO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].DIFERENCIASALDOPROMEDIO;
            SET refOutLiqProd.liquidacionReporte[1].INUNUMEROPAGOS = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUNUMEROPAGOS;
            SET refOutLiqProd.liquidacionReporte[1].FLAGCANCELMESANT = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCANCELMESANT;
            SET refOutLiqProd.liquidacionReporte[1].FLAGAUMENCAPITAL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGAUMENCAPITAL;
            SET refOutLiqProd.liquidacionReporte[1].FLAGAMPARADA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGAMPARADA;
            SET refOutLiqProd.liquidacionReporte[1].ISBFRANQUICIA = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBFRANQUICIA;
            SET refOutLiqProd.liquidacionReporte[1].INUINTERES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INUINTERES;
            SET refOutLiqProd.liquidacionReporte[1].INURETEFUENTE = refInLiquidacionReporteOpResponse.liquidacionReporte[I].INURETEFUENTE;
            SET refOutLiqProd.liquidacionReporte[1].FLAGCANCELMISMOMES = refInLiquidacionReporteOpResponse.liquidacionReporte[I].FLAGCANCELMISMOMES;
            SET refOutLiqProd.liquidacionReporte[1].ISBNOMPERFIL = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBNOMPERFIL;
            SET refOutLiqProd.liquidacionReporte[1].ISBCARGO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBCARGO;
            SET refOutLiqProd.liquidacionReporte[1].ISBESTADOPROCESO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].ISBESTADOPROCESO;
            SET refOutLiqProd.liquidacionReporte[1].IDTFECHAPROCESADO = refInLiquidacionReporteOpResponse.liquidacionReporte[I].IDTFECHAPROCESADO;
            
            DECLARE refArrLiqProd REFERENCE TO refOutLiqProd.liquidacionReporte[1];--OutputRoot.XMLNSC.msgd:responseMessageIn.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse.liquidacionReporte[I];
            
            DECLARE tamanoRegistrosInvalidos INTEGER;

            SET tamanoRegistrosInvalidos = J;

            IF tamanoRegistrosInvalidos > 0 THEN

               IF refArrLiqProd.ISBTIPOPRODUCTO = 'AFC' THEN                  
                  IF refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
                     THEN
                     
                     SET theDestine = 'LiqProdAFC';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
                  
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'AHO' THEN
                  IF refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.SALDOPROMEDIO IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO')
                     THEN
                     
                     SET theDestine = 'LiqProdCA';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CAP' OR refArrLiqProd.ISBTIPOPRODUCTO = 'COL' THEN
                  IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.DIFERENCIASALDOPROMEDIO IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
                      THEN
                     
                     SET theDestine = 'LiqProdCart';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CDT' THEN
                  IF refArrLiqProd.ISBNUMEROPRODUCTO IS NOT NULL AND
                     refArrLiqProd.INUNUMDOCUMENTOCLIENTE IS NOT NULL AND
                     refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
                     refArrLiqProd.INUINTERES IS NOT NULL AND
                     refArrLiqProd.INURETEFUENTE IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.FLAGCANCELMESANT IS NOT NULL AND
                     refArrLiqProd.FLAGCANCELMISMOMES IS NOT NULL AND
                     refArrLiqProd.FLAGTRANSFERENCIA IS NOT NULL AND
                     refArrLiqProd.FLAGAUMENCAPITAL IS NOT NULL AND
                     refArrLiqProd.VALORREINVERSION IS NOT NULL AND
                     refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
                     refArrLiqProd.FLAGEXTERNO IS NOT NULL AND refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO'
                     THEN
                     
                     SET theDestine = 'LiqProdCDT';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CTE' THEN
                  IF refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.SALDOPROMEDIO IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO')
                     THEN
                     
                     SET theDestine = 'LiqProdCC';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'CUA' THEN
                  IF refArrLiqProd.ISBNUMEROPRODUCTO IS NOT NULL AND
                     refArrLiqProd.INUNUMDOCUMENTOCLIENTE IS NOT NULL AND
                     refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
                     refArrLiqProd.ISBDAADTIPOPRODUCTO IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.ISBNOMPERFIL IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.FLAGAUMENCAPITAL IS NOT NULL AND
                     refArrLiqProd.FLAGEXTERNO IS NOT NULL AND
                     refArrLiqProd.FLAGUSOMISMOMES IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR SERVICIOS BCO')
                     THEN
                     
                     SET theDestine = 'LiqProdCupoActivo';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'PAP' THEN
                  IF refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.INUNUMEROPAGOS IS NOT NULL AND
                     refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
                     refArrLiqProd.FLAGPRODUCTOREDBANCOOMEVA IS NOT NULL AND
                     refArrLiqProd.FLAGCHEQUEDEVUELTOCANCELADO IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' OR refArrLiqProd.ISBCARGO = 'ASESOR SERVICIOS BCO')
                     THEN
                     
                     SET theDestine = 'LiqProdPAP';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'TAJ' THEN
                  IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.FLAGAMPARADA IS NOT NULL AND
                     refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.ISBOFICINAPRODUCTO IS NOT NULL AND
                     refArrLiqProd.ISBFRANQUICIA IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     (refArrLiqProd.ISBCARGO = 'ASESOR VENTAS BCO' OR refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO') AND
                     (refArrLiqProd.ISBTIPOPERSONA = 'Persona Natural' OR refArrLiqProd.ISBTIPOPERSONA = 'PERSONA NATURAL')
                     THEN
                     
                     SET theDestine = 'LiqProdTC';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;
               ELSEIF refArrLiqProd.ISBTIPOPRODUCTO = 'DES' THEN
                  IF refArrLiqProd.ISBCODUSUARIOAPERTURA IS NOT NULL AND
                     refArrLiqProd.INUMONTOVALOR IS NOT NULL AND
                     refArrLiqProd.ISBREGISTROSMARTVENTAS IS NOT NULL AND
                     refArrLiqProd.ISBCARGO IS NOT NULL AND
                     refArrLiqProd.FLAGEXTERNO IS NOT NULL AND
                     refArrLiqProd.ISBTIPOPERSONA IS NOT NULL AND
                     refArrLiqProd.ISBCARGO = 'EJECUTIVO COMERCIAL BCO' THEN
                     
                     SET theDestine = 'LiqProdDES';
                  
                  ELSE
                     SET theDestine = 'Registro_Invalido';
                     SET iCont = iCont + 1;
                     SET registrosInvalidos.fila[iCont] = refInLiquidacionReporteOpResponse.liquidacionReporte[I];
                  END IF;

               END IF;
               
               --Enruta al siguiente label asignado
               SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;
               PROPAGATE DELETE NONE;
               
               --Incrementa contador para control del ciclo
               SET I = I + 1;
               DELETE FIELD refOut.body.response.adapLR:LiquidacionReporteOpResponse.LiquidacionReporteResponse;

            END IF;

         END WHILE;
         RETURN FALSE;
      END IF;
   END;
   --CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
   --LANGUAGE JAVA
   --EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.setUpdateCacheValue"[/quote];


   CREATE PROCEDURE CopyMessageHeaders() BEGIN
      DECLARE I INTEGER 1;
      DECLARE J INTEGER;
      SET J = CARDINALITY(InputRoot.*[]);
      WHILE I < J DO
         SET OutputRoot.*[I] = InputRoot.*[I];
         SET I = I + 1;
      END WHILE;
   END;

   CREATE PROCEDURE CopyEntireMessage() BEGIN
      SET OutputRoot = InputRoot;
   END;
END MODULE;



[b]3. [/b]
CREATE COMPUTE MODULE SMF_LiquidacionComisionesOrqLiqProd_C_Route
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN

   DECLARE theDestine CHARACTER 'Error';
   DECLARE refRespuestaRegla INTEGER;
   DECLARE error INTEGER;
   
   SET refRespuestaRegla = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.*[]);
   SET error = CARDINALITY(InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList.*[]);
   IF error > 0 THEN

      DECLARE refException REFERENCE TO InputRoot.XMLNSC.msgd:responseMessageIn.body.exceptionList;
      SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;

   ELSE

      IF refRespuestaRegla > 0 THEN
         
         CALL CopyEntireMessage();

         CREATE FIELD Environment.Variables.LiquidacionReporte;
         DECLARE refInLiquidacionReporte REFERENCE TO Environment.Variables.LiquidacionReporte;
         
         DECLARE xmlString CHARACTER;
         SET xmlString = InputRoot.MQRFH2.Variables.LiquidacionReporte;
           CALL convertXmlStringToXMLNSC(xmlString, refInLiquidacionReporte);
         
         DECLARE refISBTIPOPRODUCTO REFERENCE TO refInLiquidacionReporte.XMLNSC.liquidacionReporte.ISBTIPOPRODUCTO;

         IF refISBTIPOPRODUCTO = 'AFC' THEN
            SET theDestine = 'LiqProdAFC';
         END IF;

         IF refISBTIPOPRODUCTO = 'AHO' THEN
            SET theDestine = 'LiqProdCA';
         END IF;

         IF refISBTIPOPRODUCTO = 'CAP' OR refISBTIPOPRODUCTO = 'COL' THEN
            SET theDestine = 'LiqProdCart';
         END IF;

         IF refISBTIPOPRODUCTO = 'CDT' THEN
            SET theDestine = 'LiqProdCDT';
         END IF;

         IF refISBTIPOPRODUCTO = 'CTE' THEN
            SET theDestine = 'LiqProdCC';
         END IF;

         IF refISBTIPOPRODUCTO = 'CUA' THEN
            SET theDestine = 'LiqProdCupoActivo';
         END IF;

         IF refISBTIPOPRODUCTO = 'PAP' THEN
            SET theDestine = 'LiqProdPAP';
         END IF;

         IF refISBTIPOPRODUCTO = 'TAJ' THEN
            SET theDestine = 'LiqProdTC';
         END IF;

         IF refISBTIPOPRODUCTO = 'DES' THEN
            SET theDestine = 'LiqProdDES';
         END IF;

      ELSE

         CALL CopyEntireMessage();

         CREATE FIELD Environment.Variables.LiquidacionReporte;
         DECLARE refInLiquidacionReporte REFERENCE TO Environment.Variables.LiquidacionReporte;

         SET theDestine = 'ExcepcionRegla';

      END IF;

      SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = theDestine;

   END IF;

   RETURN TRUE;
END;

CREATE PROCEDURE CopyMessageHeaders() BEGIN
   DECLARE I INTEGER 1;
   DECLARE J INTEGER;
   SET J = CARDINALITY(InputRoot.*[]);
   WHILE I < J DO
      SET OutputRoot.*[I] = InputRoot.*[I];
      SET I = I + 1;
   END WHILE;
END;

CREATE PROCEDURE CopyEntireMessage() BEGIN
   SET OutputRoot = InputRoot;
END;
END MODULE;


[b]4. [/b]
CREATE COMPUTE MODULE SMF_LiquidacionComisionesBD_InsertProductividad
   CREATE FUNCTION Main() RETURNS BOOLEAN
   BEGIN

      SET Environment.Variables.Properties = InputRoot.Properties;
      SET Environment.Variables.MQMD = InputRoot.MQMD;
      SET Environment.Variables.XMLNSC = InputRoot.XMLNSC;
      SET Environment.Variables.LiquidacionReporte = Environment.Variables.LiquidacionReporte;

      CALL CopyEntireMessage();

      SET OutputRoot.XMLNSC.msgd:responseMessageIn.header = OutputRoot.XMLNSC.msgd:requestMessageIn.header;
      SET OutputRoot.XMLNSC.msgd:responseMessageIn.header.responseStatus.statusCode = STATUS_CODE_SUCCESS;
      DELETE FIELD OutputRoot.XMLNSC.msgd:requestMessageIn;

      DECLARE refIn REFERENCE TO InputRoot.XMLNSC.msgd:requestMessageIn.Body.request.adapLP:LiquidacionProductividadOpRequest;
      DECLARE refInLiqProd REFERENCE TO refIn.LiquidacionProductividadRequest.liquidacionProductividad;

      DECLARE pras_mes_liquidado_des CHARACTER;
      DECLARE pras_fecha_liquidacion_date TIMESTAMP;
      DECLARE pras_regional_cliente_desc CHARACTER;
      DECLARE pras_oficina_cliente_desc CHARACTER;
      DECLARE pras_regional_radicacion_desc CHARACTER;
      DECLARE pras_oficina_radicacin_desc CHARACTER;
      DECLARE pras_numero_producto_desc CHARACTER;
      DECLARE pras_tipo_producto_desc CHARACTER;
      DECLARE pras_documento_cliente_desc CHARACTER;
      DECLARE pras_tipo_persona_desc CHARACTER;
      DECLARE pras_codigo_usuario_desc CHARACTER;
      DECLARE pras_perfil_usuario_desc CHARACTER;
      DECLARE pras_cargo_usuario_desc CHARACTER;
      DECLARE pras_flag_smarventas_desc CHARACTER;
      DECLARE pras_flag_ref_externa_desc CHARACTER;
      DECLARE pras_monto_pagado_vlr DECIMAL;
      DECLARE pras_intereses_vlr DECIMAL;
      DECLARE pras_retefuente_vlr DECIMAL;
      DECLARE pras_flag_cancelaciones_desc CHARACTER;
      DECLARE pras_flag_debito_cuenta_desc CHARACTER;
      DECLARE pras_flag_aum_cap_desc CHARACTER;
      DECLARE pras_valor_invertido_vlr DECIMAL;
      DECLARE pras_flag_apli_com_desc CHARACTER;
      DECLARE pras_porc_liq_comision_num DECIMAL;
      DECLARE pras_motivo_rechazo_desc CHARACTER;
      DECLARE pras_flag_aumento_cupo_desc CHARACTER;
      DECLARE pras_flag_uso_mismo_mes_desc CHARACTER;
      DECLARE pras_cantidad_cupo_num DECIMAL;
      DECLARE pras_cant_cupo_aumento_num DECIMAL;
      DECLARE pras_cant_refe_externa_num DECIMAL;
      DECLARE pras_cant_uso_mismo_mes_num DECIMAL;
      DECLARE pras_cantidad_a_liquidar_num DECIMAL;
      DECLARE pras_saldo_promedio_vlr DECIMAL;
      DECLARE pras_pagos_realizados_num DECIMAL;
      DECLARE pras_plan_ahorro_vlr DECIMAL;
      DECLARE pras_flag_misma_fuerza_desc CHARACTER;
      DECLARE pras_monto_afc_vlr DECIMAL;
      DECLARE pras_flag_tar_amparada_desc CHARACTER;
      DECLARE pras_saldo_promedio_aho_vlr DECIMAL;
      DECLARE pras_saldo_promedio_cte_vlr DECIMAL;
      DECLARE pras_flag_valido CHARACTER;
      DECLARE pattern CHARACTER 'yyyyMMdd';
      
      SET pras_mes_liquidado_des = refInLiqProd.PRAS_MES_LIQUIDADO_DESC;
      SET pras_fecha_liquidacion_date = CAST(refInLiqProd.PRAS_FECHA_LIQUIDACION_DATE AS DATE FORMAT pattern);
      SET pras_regional_cliente_desc =refInLiqProd.PRAS_REGIONAL_CLIENTE_DESC;
      SET pras_oficina_cliente_desc =refInLiqProd.PRAS_OFICINA_CLIENTE_DESC;
      SET pras_regional_radicacion_desc =refInLiqProd.PRAS_REGIONAL_RADICACION_DESC;
      SET pras_oficina_radicacin_desc =refInLiqProd.PRAS_OFICINA_RADICACION_DESC;
      SET pras_numero_producto_desc =refInLiqProd.PRAS_NUMERO_PRODUCTO_DESC;
      SET pras_tipo_producto_desc =refInLiqProd.PRAS_TIPO_PRODUCTO_DESC;
      SET pras_documento_cliente_desc =refInLiqProd.PRAS_DOCUMENTO_CLIENTE_DESC;
      SET pras_tipo_persona_desc =refInLiqProd.PRAS_TIPO_PERSONA_DESC;
      SET pras_codigo_usuario_desc =refInLiqProd.PRAS_CODIGO_USUARIO_DESC;
      SET pras_perfil_usuario_desc =refInLiqProd.PRAS_PERFIL_USUARIO_DESC;
      SET pras_cargo_usuario_desc =refInLiqProd.PRAS_CARGO_USUARIO_DESC;
      SET pras_flag_smarventas_desc =refInLiqProd.PRAS_FLAG_SMARVENTAS_DESC;
      SET pras_flag_ref_externa_desc =refInLiqProd.PRAS_FLAG_REF_EXTERNA_DESC;
      SET pras_monto_pagado_vlr =refInLiqProd.PRAS_MONTO_PAGADO_VLR;
      SET pras_intereses_vlr =refInLiqProd.PRAS_INTERESES_VLR;
      SET pras_retefuente_vlr =refInLiqProd.PRAS_RETEFUENTE_VLR;
      SET pras_flag_cancelaciones_desc =refInLiqProd.PRAS_FLAG_CANCELACIONES_DESC;
      SET pras_flag_debito_cuenta_desc =refInLiqProd.PRAS_FLAG_DEBITO_CUENTA_DESC;
      SET pras_flag_aum_cap_desc =refInLiqProd.PRAS_FLAG_AUM_CAP_DESC;
      SET pras_valor_invertido_vlr =refInLiqProd.PRAS_VALOR_INVERTIDO_VLR;
      SET pras_flag_apli_com_desc =refInLiqProd.PRAS_FLAG_APLI_COM_DESC;
      SET pras_porc_liq_comision_num =refInLiqProd.PRAS_PORC_LIQ_COMISION_NUM;
      SET pras_motivo_rechazo_desc =refInLiqProd.PRAS_MOTIVO_RECHAZO_DESC;
      SET pras_flag_aumento_cupo_desc =refInLiqProd.PRAS_FLAG_AUMENTO_CUPO_DESC;
      SET pras_flag_uso_mismo_mes_desc =refInLiqProd.PRAS_FLAG_USO_MISMO_MES_DESC;
      SET pras_cantidad_cupo_num =refInLiqProd.PRAS_CANTIDAD_CUPO_NUM;
      SET pras_cant_cupo_aumento_num =refInLiqProd.PRAS_CANT_CUPO_AUMENTO_NUM;
      SET pras_cant_refe_externa_num =refInLiqProd.PRAS_CANT_REFE_EXTERNA_NUM;
      SET pras_cant_uso_mismo_mes_num =refInLiqProd.PRAS_CANT_USO_MISMO_MES_NUM;
      SET pras_cantidad_a_liquidar_num =refInLiqProd.PRAS_CANTIDAD_A_LIQUIDAR_NUM;
      SET pras_saldo_promedio_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_VLR;
      SET pras_pagos_realizados_num =refInLiqProd.PRAS_PAGOS_REALIZADOS_NUM;
      SET pras_plan_ahorro_vlr =refInLiqProd.PRAS_PLAN_AHORRO_VLR;
      SET pras_flag_misma_fuerza_desc =refInLiqProd.PRAS_FLAG_MISMA_FUERZA_DESC;
      SET pras_monto_afc_vlr =refInLiqProd.PRAS_MONTO_AFC_VLR;
      SET pras_flag_tar_amparada_desc =refInLiqProd.PRAS_FLAG_TAR_AMPARADA_DESC;
      SET pras_saldo_promedio_aho_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_AHO_VLR;
      SET pras_saldo_promedio_cte_vlr =refInLiqProd.PRAS_SALDO_PROMEDIO_CTE_VLR;
      SET pras_flag_valido =refInLiqProd.PRAS_FLAG_VALIDO_CHAR;

      INSERT INTO Database.OracleCoomevaTestODBC.SMARTVENTAS.LIC_T_PRODUCTIVIDAD_ASESOR
      (PRAS_MES_LIQUIDADO_DESC,
      PRAS_FECHA_LIQUIDACION_DATE,
      PRAS_REGIONAL_CLIENTE_DESC,
      PRAS_OFICINA_CLIENTE_DESC,
      PRAS_REGIONAL_RADICACION_DESC,
      PRAS_OFICINA_RADICACION_DESC,
      PRAS_NUMERO_PRODUCTO_DESC,
      PRAS_TIPO_PRODUCTO_DESC,
      PRAS_DOCUMENTO_CLIENTE_DESC,
      PRAS_TIPO_PERSONA_DESC,
      PRAS_CODIGO_USUARIO_DESC,
      PRAS_PERFIL_USUARIO_DESC,
      PRAS_CARGO_USUARIO_DESC,
      PRAS_FLAG_SMARVENTAS_DESC,
      PRAS_FLAG_REF_EXTERNA_DESC,
      PRAS_MONTO_PAGADO_VLR,
      PRAS_INTERESES_VLR,
      PRAS_RETEFUENTE_VLR,
      PRAS_FLAG_CANCELACIONES_DESC,
      PRAS_FLAG_DEBITO_CUENTA_DESC,
      PRAS_FLAG_AUM_CAP_DESC,
      PRAS_VALOR_INVERTIDO_VLR,
      PRAS_FLAG_APLI_COM_DESC,
      PRAS_PORC_LIQ_COMISION_NUM,
      PRAS_MOTIVO_RECHAZO_DESC,
      PRAS_FLAG_AUMENTO_CUPO_DESC,
      PRAS_FLAG_USO_MISMO_MES_DESC,
      PRAS_CANTIDAD_CUPO_NUM,
      PRAS_CANT_CUPO_AUMENTO_NUM,
      PRAS_CANT_REFE_EXTERNA_NUM,
      PRAS_CANT_USO_MISMO_MES_NUM,
      PRAS_CANTIDAD_A_LIQUIDAR_NUM,
      PRAS_SALDO_PROMEDIO_VLR,
      PRAS_PAGOS_REALIZADOS_NUM,
      PRAS_PLAN_AHORRO_VLR,
      PRAS_FLAG_MISMA_FUERZA_DESC,
      PRAS_MONTO_AFC_VLR,
      PRAS_FLAG_TAR_AMPARADA_DESC,
      PRAS_SALDO_PROMEDIO_AHO_VLR,
      PRAS_SALDO_PROMEDIO_CTE_VLR,
      PRAS_FLAG_VALIDO_CHAR)
      VALUES
      (pras_mes_liquidado_des,
      pras_fecha_liquidacion_date,
      pras_regional_cliente_desc,
      pras_oficina_cliente_desc,
      pras_regional_radicacion_desc,
      pras_oficina_radicacin_desc,
      pras_numero_producto_desc,
      pras_tipo_producto_desc,
      pras_documento_cliente_desc,
      pras_tipo_persona_desc,
      pras_codigo_usuario_desc,
      pras_perfil_usuario_desc,
      pras_cargo_usuario_desc,
      pras_flag_smarventas_desc,
      pras_flag_ref_externa_desc,
      pras_monto_pagado_vlr,
      pras_intereses_vlr,
      pras_retefuente_vlr,
      pras_flag_cancelaciones_desc,
      pras_flag_debito_cuenta_desc,
      pras_flag_aum_cap_desc,
      pras_valor_invertido_vlr,
      pras_flag_apli_com_desc,
      pras_porc_liq_comision_num,
      pras_motivo_rechazo_desc,
      pras_flag_aumento_cupo_desc,
      pras_flag_uso_mismo_mes_desc,
      pras_cantidad_cupo_num,
      pras_cant_cupo_aumento_num,
      pras_cant_refe_externa_num,
      pras_cant_uso_mismo_mes_num,
      pras_cantidad_a_liquidar_num,
      pras_saldo_promedio_vlr,
      pras_pagos_realizados_num,
      pras_plan_ahorro_vlr,
      pras_flag_misma_fuerza_desc,
      pras_monto_afc_vlr,
      pras_flag_tar_amparada_desc,
      pras_saldo_promedio_aho_vlr,
      pras_saldo_promedio_cte_vlr,
      pras_flag_valido);
      COMMIT;
      
      --incremenmto el valor de los registros validos
      DECLARE puntero INTEGER 0;
      SET puntero = CAST(getCacheValue('validos') AS INTEGER);
      SET puntero = puntero + 1;
      CALL setUpdateCacheValue('validos', CAST(puntero AS CHARACTER));
      --Validar si el proceso ya termino
      DECLARE total_registros INTEGER 0;
      DECLARE inv_registros INTEGER 0;
      DECLARE val_registros INTEGER 0;
      SET total_registros = CAST (getCacheValue(TOTAL_REGISTROS) AS INTEGER);
      SET inv_registros = CAST (getCacheValue(REGISTROS_INVALIDOS) AS INTEGER);
      SET val_registros = CAST (getCacheValue(REGISTROS_VALIDOS) AS INTEGER);

      IF total_registros = (inv_registros + val_registros) THEN
         -------------- DECLARACIONES PARA LLAMADO PL ---------------
         CALL LIC_PR_ObtenerProdAsesor(total_registros);
         CALL deleteCacheValue(TOTAL_REGISTROS);
         CALL deleteCacheValue(REGISTROS_VALIDOS);
         CALL deleteCacheValue(REGISTROS_INVALIDOS);
      END IF;
   END;
   ---- ESQL routines to retrieve data from cache

   CREATE PROCEDURE LIC_PR_ObtenerProdAsesor(OUT otbProdAsesor INTEGER)
   LANGUAGE DATABASE
   EXTERNAL NAME "SMARTVENTAS.LIC_PKG_BO_BROKERPRODUCTIVIDAD.LIC_PR_OBTENERPRODASESOR";

   CREATE PROCEDURE setUpdateCacheValue(IN llave CHARACTER, IN valor CHARACTER)
   LANGUAGE JAVA
   EXTERNAL NAME "co.bancoomeva.cache.CacheUtil.setUpdateCacheValue";

   CREATE PROCEDURE getCacheValue(IN llave CHARACTER)
   RETURNS CHARACTER
   LANGUAGE JAVA
   EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.getCacheValue"[/quote];

   CREATE PROCEDURE deleteCacheValue(IN llave CHARACTER)
   LANGUAGE JAVA
   EXTERNAL NAME [quote]"co.bancoomeva.cache.CacheUtil.deleteCacheValue"[/quote];



   CREATE PROCEDURE CopyMessageHeaders() BEGIN
      DECLARE I INTEGER 1;
      DECLARE J INTEGER;
      SET J = CARDINALITY(InputRoot.*[]);
      WHILE I < J DO
         SET OutputRoot.*[I] = InputRoot.*[I];
         SET I = I + 1;
      END WHILE;
   END;


   CREATE PROCEDURE CopyEntireMessage() BEGIN
      SET OutputRoot = InputRoot;
   END;
END MODULE;


Last edited by cahc25099025 on Tue Jan 31, 2017 11:15 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Vitor
PostPosted: Fri Jan 27, 2017 12:52 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

For anybody wondering, part 1 of this epic is here
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
Vitor
PostPosted: Fri Jan 27, 2017 1:00 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

1. Thank you for using code tags to make the code readable
2. Even if I could read Spanish, I'm disinclined to look through your code looking for the bug.
3. There's nothing in your post about what you have done to resolve this problem. What does the user trace say?
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Fri Jan 27, 2017 1:03 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Typically when doing this kind of scenario - n requests getting back n responses - you would use Aggregation.

With aggregation, you can send requests to the webservice asynchronously and then process each response until you know that the aggregation is done.

If you are seeing that you send n requests and get back n - c responses, then you need to look at why c requests are failing.

If you are seeing that you are sending n requests and getting back n + c responses, then you need to figure either
  • if the other side is sending back additional responses
  • OR where you are sending more than one request
  • OR if you are duplicating responses after you get them

_________________
chmod -R ugo-wx /
Back to top
View user's profile Send private message
timber
PostPosted: Fri Jan 27, 2017 2:13 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Aug 2015
Posts: 1280

Quote:
The problem is that the quantity of records inserted in 4th issue not match with the original in the 1st issue
I recommend that you add some error handling and/or logging to your message flows. Expecting us to read that quantity of source code is simply not reasonable.
Back to top
View user's profile Send private message
zpat
PostPosted: Fri Jan 27, 2017 11:49 pm    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5849
Location: UK

Also you are not taking advantage of the mapping node.

Try to avoid coding in IIB, it's meant for graphical development.
_________________
Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Big project part 2
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.