-
Notifications
You must be signed in to change notification settings - Fork 0
Trazabilidad
En las llamadas a los servicios se puede incluir el campo idTransaccion opcional que permite identificar una traza de la operación realizada.
La traza se hace mediante dos índices Elastic.
Índice SERVICIO:
Se anota la operación una vez completada, indicando su duración y si se ha producido algún error. Los datos que se proporcionan son los siguientes:
- "aplicacion": "RRLL",
- "servicio": "consultaDocumentos",
- "procedimiento": 9782,
- "documento": null, (clase de documento, si tiene sentido para ese servicio)
- "duracion": 74, (en milisegundos)
- "error": null, (usando código de error tipificados)
- "traza": null, El campo traza guarda la traza Java cuando se detecta excepción no controlada en servicios de recepción (SANDRA es el servidor) en integraciones con EA (para la recepción de los avisos de firma en la integración con Portafirmas, por ejemplo).
- "@timestamp": 1578640440955,
- "departamento": 447,
- "idtransaccion": "null", (en los servicios se permite incluir un idTransaccion para facilitar su localización posterior.
- "referenciaorigen": "c90eA2cXnoh5HfpRgQ2e", (si existe en el servicio, puede ser la referencia origen del documento u otra)
- "texto_mensaje": null (si hay error, es texto del error)
Se puede acceder al indice desde https, por ejemplo: https://elastic-pru.carm.es/servicios/evento/_search?pretty=true&q=procedimiento:3177&size=10&sort=@timestamp:desc
Índice TRAZABILIDAD:
Se hace la traza de los eventos relevantes del servicio indicando las transacciones que pueden fallar. Los eventos se van añadiendo conforme se producen, y se añade al mismo registro mediante noold, hilold, @timestamp Tiene sentido que una operación rellene este índice cuando hace transacciones (incluso pueden ser distribuidas: integración con EA+INSIDE+ORACLE).
Se van incorporando los eventos/pasos conforme se producen (no es sólo al final): cada evento se identifica por dos anotaciones en el índice (con su respectiva información asociada), que se han codificado como "try..." y "done...", respectivamente.
El campo completado se pone a true cuando se escribe en el índice el "done..." del último paso transaccional de la operación.
- "nodoId": "servapp-pru-sa5.carm.es",
- "hiloId": "52",
- "aplicacion": "APLI_AREA009",
- "servicio": "firmaDocumentos",
- "departamento": 196,
- "procedimiento": 1785,
- "completado": true,
- "@timestamp": 1578576018789,
- "eventos_list":
- "evento": "try.ServicioPortafirmas.GuardaDocumentOriginal - 33291"
- "evento": done.ServicioPortafirmas.GuardaDocumentOriginal - POR2mA9000"
- "evento": "try.ServicioPortafirmas.FinalizaSolicitudFirma - 33291"
- "evento": "done.ServicioPortafirmas.FinalizaSolicitudFirma - 33291"
- "evento": "try.BD.insertEvento - sandra~portafirmas:33291"
- "evento": "done.BD.insertEvento - 16258"
- "idtransaccion": "null"
Se puede acceder al indice desde https, por ejemplo https://elastic-pru.carm.es/trazabilidad/operacion/_search?pretty=true&q=servicio:altaDocumentoOriginal&sort=@timestamp
Tenemos un fichero de configuración de definición de estos pasos:
En un futuro, cuando se invoque una operación con un idTransacción usado anteriormente en la misma operación, se revisará si la operación con ese id concluyo con éxito o no:
- si la operación anterior concluyo con exito, indicará que esta operación esta repetida.
- si la operación anterior falló, se reintentará con los parámetros actuales y devolverá el resultado. Esto se puede utilizar como mecanismo de reintento en caso de fallo del servicio o para asegurar la idempotencia.
©2022 COMUNIDAD AUTONOMA DE LA REGIÓN DE MURCIA