¡Esta es una revisión vieja del documento!
Este es el log utilizado para registrar las notificaciones que puedan presentar en los procesos de cargas de información.
A continuación se listan los tipos de notificaciones que deben ser considerados en el log de Cargas
Este servicio debe consumirse en los procesos de cargas de:
Powerbuilder tiene restricciones para el consumo de servicios Rest por lo tanto en las aplicaciones de esta tecnología se implementará un API para realizar las llamadas.
OWNER | SICOF | TABLE | FILE_UPLOAD_LOG | COMMENTS | Contiene el log de cargas de archivos o procesos de las aplicaciones de la compañia |
---|---|---|---|---|---|
# | NAME | NULL | TYPE | COMMENTS | WS1) |
1 | ID | N | NUMBER | Código interno del registro (Se controla por secuencia) | Interno, Autoincremental |
2 | FECHA | Y | DATE | Fecha en la cuál se genera la carga | No utilizado |
3 | NOMBRE_ARCHIVO | Y | VARCHAR2(256) | Mensaje simple del error (Resumen) | Externo, Requerido |
4 | NOMBRE_PROCESO | Y | VARCHAR2(256) | Nombre del proceso que realiza la carga | Externo, Requerido |
5 | NUMERO_LINEA | Y | NUMBER | Número de linea del archivo donde se genera la notificación | Externo, Requerido |
6 | COLUMNA_GRUPO | Y | VARCHAR2(1024) | Columna o grupo de colunas que generan la notificación | Obsoleto, Externo |
7 | NOTIFICACION | Y | VARCHAR2(2048) | Mensaje de notificación | Obsoleto, Externo |
8 | LOG_LINEA | N | CLOB | Array Json que contiene las notificaciones generadas en la linea | Externo, Requerido |
8 | HOST_CLIENTE | Y | VARCHAR2(50) | Host del cliente (Dirección IP) | Externo, Requerido |
9 | FECHA_REGISTRO | Y | DATE | Fecha del sistema DB | Interno, Formato dd/mm/yyyy hh:mm:ss, Requerido |
10 | CODIGO_USUARIO | Y | NUMBER | Código del usuario de la sesión en la cuál se genera el error | Externo, Requerido |
11 | CODIGO_MEMPRESA | Y | VARCHAR2(64) | Código de la empresa de la sesión en la cuál se genera el error | Externo, Requerido |
12 | CODIGO_APLICACION | Y | NUMBER | Código de la aplicación (Identificador interno numérico) | Externo, Requerido |
13 | INFO_APP | Y | VARCHAR2(256) | Información de la aplicación (En las situaciónes donde no se identifique código interno se puede enviar el nombre de la aplicación o información adicional) | Externo |
14 | SESSION_MAC | Y | VARCHAR2(64) | MAC del equipo del usuario | Externo |
15 | SESSION_BROWSERVERSION | Y | VARCHAR2(64) | Versión del Navegador | Externo, Requerido |
16 | SESSION_OSTYPE | Y | VARCHAR2(64) | Sistema Operativo | Externo, Requerido |
Se adiciona esta columna para identificar reglas asociadas a la implementación de los servicios web que permiten gestionar el almacenamiento de los logs. La columna es una referencia y no hace parte del servicio sin embargo las reglas que se definen en ella si aplican para la columna relacionada:
Esta columna sirve para almacenar todas la notificaciones que se pueden presentar al procesar una linea del archivo de la carga. Se define la siguiente estructura base ejemplo:
{ "columns":[ { "column_name":"Requerido: Nombre de la columna", "column_value": "Requerido: Valor de la columna", "column_notifications": [ {"msg":"Requerido: Mensaje de Notificación 1"}, {"msg":"Requerido: Mensaje de Notificación 2"}, {"msg":"Requerido: Mensaje de Notificación N"} ] } ] }
Donde:
Ejemplo:
{ "columns":[ { "column_name":"fecha_sistema", "column_value": "01/01/20", "column_notifications": [ {"msg":"El año de la fecha es menor a la vigencia actual"}, {"msg":"La fecha no tiene el formato dd/mm/yyyy"} ] } ] }
Para visualizar la documentación debe descargar el siguiente repositorio Documentación, abrir la pagina Index.html en su navegador web la cual es similar a la siguiente imagen:
En ella encontrará la documentación de las librerias que hacen parte del framework Objetos SICOF el cuál se irá actualizando frecuentmente a medida que se documenten las clases.
La Libreria que contiene la funcionalidad de los logs es la librería sf00util.pbl
Los Objetos relacionados en el API son:
Para facilitar la implementación y uso del API de gestión de errores se crea un objeto interno privado en la clase global guo_app el cual puede ser accedido por el método of_log_error() que devuelve la instancia del objeto. Sin embargo para implementaciones específicas se puede optar por crear y administrar la clase de error n_cst_log_error según considere el desarrollador.
A continuación se listan ejemplos de uso el cuál presenta las forma de utilizar el API, para más información debe consultar la documentación en el repositorio.
/*Ejemplos de uso utilizando la instancia genérica de la clase guo_app*/ guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", 10, true, SQLCA) guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", "ERROR_DB", true, SQLCA) guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", 10, ls_args, true, SQLCA) guo_app.of_log_error( ).of_add_log_text("Ejemplo", "ERROR_DB", "Presupuesto", true, SQLCA) guo_app.of_log_error( ).of_add_log_text( sqldbcode, sqlerrtext, dataobject, sqlsyntax, ls_ventana, true, lts_db) /*Ejemplo de uso definiendo la clase de error, instancia el array de formateo de mensaje y registra en el log el mensaje formateado. Posteriormente elimina la instancia de la clase de gestión de error. "El array de formateo se utiliza cuando el mensaje se genera por expresiones: Ejemplo: Mensaje Base = Hola #1 (identificado con el código de mensaje SALUDO_CODE), se crea un array con un expresión de la siguiente forma array[1] = "Mundo", de esta forma al usar el método of_add_log se genera el mensaje: Hola Mundo". */ n_cst_log_error luo_log_error String ls_args[] ls_args[1] = "Mundo" luo_log_error = Create n_cst_log_error luo_log_error.of_add_log("SALUDO_CODE", 10, ls_args, true, SQLCA) destroy luo_log_error /*Ejemplo de uso definiendo la clase de error y registra en el log el mensaje por medio de un código de mensaje. Posteriormente elimina la instancia de la clase de gestión de error.*/ n_cst_log_error luo_log_error luo_log_error = Create n_cst_log_error luo_log_error.of_add_log("EJEMPLO_CODE", 10, true, SQLCA) destroy luo_log_error /*Ejemplo de uso definiendo la clase de error y registra en el log el mensaje por medio de un código de mensaje. Posteriormente elimina la instancia de la clase de gestión de error.*/ n_cst_log_error luo_log_error luo_log_error = Create n_cst_log_error luo_log_error.of_add_log("EJEMPLO_CODE", "ERROR_DB", true, SQLCA) destroy luo_log_error
Se adicionan métodos de procesamiento de bloques en formato json los cuales pueden ser utilizados para registrar trazas de error a continuación se muestran ejemplos de uso del API.
sailjson ljson, ljson1 String ls_content ljson = create sailjson ljson.setattribute( 'version', '1001') //add json object ljson1 = ljson.addobject( 'header') ljson1.setattribute( 'count', 3) ljson1.setattribute( 'comment', 'items count') //add json object array, first item ljson1 = ljson.addarrayitem( 'data') ljson1.setattribute( 'colid', 1) ljson1.setattribute( 'colname', 'aaaaaa') ljson1.setattribute( 'coladdr', '') //add second item of the array ljson1 = ljson.addarrayitem( 'data') ljson1.setattribute( 'colid', 2) ljson1.setattribute( 'colname', 'bbbbbbbb') setnull(ls) ljson1.setattribute( 'coladdr', ls) //add third item of the array ljson1 = ljson.addarrayitem( 'data') ljson1.setattribute( 'colid', 3) ljson1.setattribute( 'colname', 'cccccc') ljson.setattribute( 'creattime', string(now(), 'yyyymmdd.hhmmss')) ls_content = ljson.getformatjson('' ) destroy ljson
/*Ejemplo de Uso del API con el Log de Errores*/ sailjson ljson, ljson1 ljson = create sailjson //add json object array, first item ljson1 = ljson.addarrayitem( 'errors') ljson1.setattribute( 'error_code', '-1') ljson1.setattribute( 'error_description', 'Error actualizando base de datos') ljson1.setattribute( 'error_line', '100') ljson1.setattribute( 'error_method', 'SystemError') ljson1.setattribute( 'error_tracer', '') //add second item of the array ljson1 = ljson.addarrayitem( 'errors') ljson1.setattribute( 'error_code', '-10') ljson1.setattribute( 'error_description', 'Error general del sistema') ljson1.setattribute( 'error_line', '101') ljson1.setattribute( 'error_method', 'SystemError') ljson1.setattribute( 'error_tracer', 'SystemOutMemoryError') //Consumir Log de Errores con traza en formato json guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", 10, lson, true, SQLCA)
Para las aplicaciones desarrolladas en las tecnologías (Web):
el log de sesión será implementado por medio de un Servicio Web el cual deberá considerar las reglas de Columna: WS