Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
ada:howto:sicoferp:factory:logmodels:message [2021/08/20 12:21] administraidor [Diccionario de Datos] |
ada:howto:sicoferp:factory:logmodels:message [2021/09/20 12:47] (actual) administraidor |
||
---|---|---|---|
Línea 59: | Línea 59: | ||
|22|TITULO|Y|VARCHAR2(256)|Campo que puede ser utilizada por el frontend para visualizar un titulo en el mensaje.|| | |22|TITULO|Y|VARCHAR2(256)|Campo que puede ser utilizada por el frontend para visualizar un titulo en el mensaje.|| | ||
|23|OBSERVACIONES|Y|VARCHAR2(4000)|Información complementaria que orienta al usuario sobre la situación notificada en el mensaje. Puede llevar pasos, consejos o indicaciones.|| | |23|OBSERVACIONES|Y|VARCHAR2(4000)|Información complementaria que orienta al usuario sobre la situación notificada en el mensaje. Puede llevar pasos, consejos o indicaciones.|| | ||
+ | |||
+ | ==== Proceso de Creación de Mensajes ==== | ||
+ | Todos los mensajes utilizados en las aplicaciones deben ser registrados en esta tabla. A continuación se describen los campos que deben ser incluidos en la creación segun el tipo de mensaje: | ||
+ | |||
+ | ^# ^Campo ^Observación ^^ | ||
+ | |1|CODIGO_MENSAJE|**Requerido**: Se debe enviar el siguiente numero disponible en la columna. Puede utilizar la siguiente sentencia para asegurar la condición requerida: SELECT NVL(MAX(CODIGO_MENSAJE), 0) + 1 FROM PRESUP01.MENSAJES_SISTEMA|| | ||
+ | |2|MENSAJE|**Requerido**: El mensaje debe claro y conciso. No debe generar ambiguedades en los usuarios y no debe estar expresado en lenguaje técnico.|| | ||
+ | |3|INFORMATION|Esta columna debe ser enviada con el valor 'S' si el mensaje es **Informativo**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |4|STOP|Esta columna debe ser enviada con el valor 'S' si el mensaje es de **Error**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |5|EXCLAMATION|Esta columna debe ser enviada con el valor 'S' si el mensaje es de **Advertencia**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |6|QUESTION|Esta columna debe ser enviada con el valor 'S' si el mensaje es de **Confirmación**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |7|NONE|Esta columna debe ser enviada con el valor 'S' si el mensaje no lleva ícono. De lo contrario debe ser enviado en 'N'|| | ||
+ | |8|OK|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Aceptar**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |9|CANCEL|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Cancelar**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |10|YES|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Si**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |11|NO|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **No**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |12|RETRY|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Reintentar**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |13|ABORT|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Abortar**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |14|IGNORE|Esta columna debe ser enviada con el valor 'S' cuando el mensaje visualiza boton **Ignorar**. De lo contrario debe ser enviado en 'N'|| | ||
+ | |15|DEFAULTBUTTON|Esta columna debe ser enviada con uno de los siguientes valores [1, 2, 3] cuando el mensaje visualiza el foco en uno de los botones utilizados. De lo contrario se ignora esta columna.|| | ||
+ | |16|CODIGO_BASE_DATOS|Solo se utiliza cuando el mensaje está asociado a un Código de error de base de datos. De lo contrario se ignora esta columna.|| | ||
+ | |17|USUARIO_EMPRESA|Enviar 'PRESUP01'|| | ||
+ | |18|CODIGO_MEMPRESA|Enviar '9999999999'|| | ||
+ | |19|FECHA_REGISTRO|Enviar SYSDATE|| | ||
+ | |20|TIPO_PROCESO|**Requerido**: Clasificación del mensaje Ej: Disponiiblidad, Compromiso etc.|| | ||
+ | |21|CODIGO|**Requerido**: Código Texto del Mensaje Ej: TERCERO_NOT_FOUND, CDP_NO_BALANCE etc.|| | ||
+ | |22|TITULO|**Requerido**: Título del mensaje el cuál es utilizado en la barra de titulo de la ventana.|| | ||
+ | |23|OBSERVACIONES|Este campo solo es requerido cuando el mensaje requiere gestión y debe presentar información complementaria que oriente al usuario sobre la situación notificada en el mensaje.|| | ||
+ | |||
+ | === Reglas para la columna: OBSERVACIONES === | ||
+ | Si un mensaje debe mostrar más información respecto a la situación notificada se debe utilizar esta columna. Sin embargo debe tener presente la siguientes indicaciones: | ||
+ | |||
+ | * Si el mensaje requiere gestión de un proceso esta columna se debe describir con una serie de pasos de las acciones a realizar. | ||
+ | * Si el mensaje indica una situación puntual esta columna debe indicar la razon de la situación presentada e indicar al usuario la acción a seguir. | ||
+ | * La información debe ser clara y evitar ambiguedades. | ||
+ | * Se Debe utilizar un lenguaje acorde al usuario. | ||
+ | |||
+ | === Reglas para la columna: TIPO_PROCESO === | ||
+ | Esta columna debe contener el nombre de la funcionalidad a la cuál pertenece el mensaje, Ejemplos: | ||
+ | |||
+ | * Disponibilidad | ||
+ | * Compromisos | ||
+ | * Pago Automático | ||
+ | * Centros de Costos | ||
+ | * Cuentas por Cobrar | ||
+ | |||
+ | === Reglas para la columna: CODIGO === | ||
+ | Esta columna representa un código en texto del mensaje. Tener presente las siguientes consideraciones para la generación de los código externos de los mensajes: | ||
+ | |||
+ | == Identificador == | ||
+ | Debe empezar con el identificador "SICOF" en mayúsculas seguido por el número de la aplicación de la tabla SICOF.MAE_APLICACIONES columna CODIGO((Si el código es menor a 3 dígitos se deben rellenar con ceros a la izquierda. Ejemplo 1 = 001)), no debe tener espacios ni separadores al comienzo e intermedio del texto y debe finalizar con el separador _ Ejemplos: | ||
+ | |||
+ | ^Módulo^Identificador^ | ||
+ | |FUNCIONALIDADES TRANSVERSALES |SICOF000_ | | ||
+ | |SISTEMA DE CONTROL PRESUPUESTAL |SICOF001_ | | ||
+ | |SISTEMA DE CONTROL DE TESORERIA |SICOF002_ | | ||
+ | |SISTEMA DE CONTROL DE CONTABLE |SICOF003_ | | ||
+ | |SISTEMA DE COMPRAS |SICOF004_ | | ||
+ | |SISTEMA DE NOMINA |SICOF005_ | | ||
+ | |SISTEMA DE TALENTO HUMANO |SICOF010_ | | ||
+ | |||
+ | == Regla Nombre == | ||
+ | El nombre del código del error debe ser un resumen del mensaje que se adiciona al identificador, este (si aplica) solo puede llevar el separador _ y se deben evitar los caraceres especiales y tildes. Tener en cuenta las siguientes consideraciones: | ||
+ | |||
+ | * Nombre [[https://es.wikipedia.org/wiki/C%C3%B3digo_mnemot%C3%A9cnico|nemotécnico]]((Un código mnemotécnico (o código nemotécnico) es un sistema sencillo utilizado para recordar una secuencia de datos, nombres, números, y en general para recordar listas de items que no pueden recordarse fácilmente.)) del error((Puede estar en inglés)). | ||
+ | * Resumen del error((Puede estar en inglés)). | ||
+ | * Palabras clave del error((Puede estar en inglés)). | ||
+ | |||
+ | == Ejemplo == | ||
+ | Para el mensaje "//No existe el tercero con el nit.//" se crearía el CODIGO de la siguiente forma: | ||
+ | |||
+ | * Identificador: **SICOF000_** Ya que es una funcionalidad transversal. | ||
+ | * Nombre: **TERCERO_NOT_FOUND**((no existe)) | ||
+ | |||
+ | Mensaje: No existe el tercero con el nit. | ||
+ | Código de Error: SICOF000_TERCERO_NOT_FOUND | ||
+ | |||
+ | === Ejemplo Script de Inserción === | ||
+ | <code sql> | ||
+ | --============================================================================== | ||
+ | -- Fecha: 10:03 a. m. lunes, 30 de agosto de 2021 - carlos.torres@ada.co | ||
+ | -- Crear Mensaje de Error para validar existencia del tercero. | ||
+ | --============================================================================== | ||
+ | Insert into PRESUP01.MENSAJES_SISTEMA | ||
+ | (CODIGO_MENSAJE, MENSAJE, INFORMATION, STOP, EXCLAMATION, | ||
+ | QUESTION, NONE, OK, CANCEL, YES, | ||
+ | NO, RETRY, ABORT, IGNORE, DEFAULTBUTTON, | ||
+ | CODIGO_MEMPRESA, FECHA_REGISTRO, TIPO_PROCESO, CODIGO, | ||
+ | TITULO) | ||
+ | Values | ||
+ | ((SELECT NVL(MAX(CODIGO_MENSAJE), 0) + 1 FROM PRESUP01.MENSAJES_SISTEMA), | ||
+ | 'No existe información del tercero con el Nit #1', 'N', 'S', 'N', | ||
+ | 'N', 'N', 'S', 'N', 'N', | ||
+ | 'N', 'N', 'N', 'N', 1, | ||
+ | '9999999999', SYSDATE, 'Tercero', 'SICOF000_TERCERO_NOT_FOUND', | ||
+ | 'Validación del Tercero'); | ||
+ | COMMIT; | ||
+ | </code> | ||
+ | |||
==== Modo de uso: Powerbuilder - Documentación ==== | ==== Modo de uso: Powerbuilder - Documentación ==== | ||
Para visualizar la documentación debe descargar el siguiente repositorio [[http://adacsc.co:1443/svn/repository/ADA/SICOF/Objetos%20SICOF/FUENTES/branches/branches%2012.5.2.5.0/doc/documentacion|Documentación]], abrir la pagina Index.html en su navegador web la cual es similar a la siguiente imagen: | Para visualizar la documentación debe descargar el siguiente repositorio [[http://adacsc.co:1443/svn/repository/ADA/SICOF/Objetos%20SICOF/FUENTES/branches/branches%2012.5.2.5.0/doc/documentacion|Documentación]], abrir la pagina Index.html en su navegador web la cual es similar a la siguiente imagen: | ||
- | {{ :ada:howto:sicoferp:factory:logmodels:pbdoclogs.png?600 |}} | + | {{ :ada:howto:sicoferp:factory:logmodels:pbdoc_objetos_sicof.png?600 |}} |
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. | 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** | + | La Libreria que contiene la funcionalidad del API de mensajes es la librería **sf00util.pbl** |
Los Objetos relacionados en el API son: | Los Objetos relacionados en el API son: | ||
- | * **n_cst_app**: Clase contenedora de objetos logs | + | * **n_cst_app**: Clase contenedora del API de mensajes |
- | * **n_cst_log_errores**: Clase para la gestión de errores | + | * **n_cst_msg**: Clase utilizada para la gestion de los mensajes que se visualizan en las aplicaciones. |
=== Ejemplos de Uso === | === Ejemplos de Uso === | ||
- | 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. | + | Para facilitar la implementación y uso del API de gestión de mensajes se crea un objeto interno privado en la clase global **guo_app** el cual puede ser accedido por el método **of_msg()** que devuelve la instancia del objeto. Sin embargo para implementaciones específicas se puede optar por crear y administrar la clase de mensajes **n_cst_msg** 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. | 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. | ||
Línea 80: | Línea 179: | ||
<code java> | <code java> | ||
/*Ejemplos de uso utilizando la instancia genérica de la clase guo_app*/ | /*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_msg( ).of_msg_advertencia("Esto es una Advertencia.") |
- | guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", "ERROR_DB", true, SQLCA) | + | guo_app.of_msg( ).of_msg_informacion("Esto es una Información.") |
- | guo_app.of_log_error( ).of_add_log("EJEMPLO_CODE", 10, ls_args, true, SQLCA) | + | guo_app.of_msg( ).of_msg_error("Esto es un Error.") |
- | 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, | + | /*Ejemplo de uso utilizando el API de mensajes*/ |
- | instancia el array de formateo de mensaje y | + | guo_app.of_msg( ).of_mensajes_sistema(10) |
- | registra en el log el mensaje formateado. | + | guo_app.of_msg( ).of_mensajes_sistema(10, "Error al insert el encabezado") |
- | Posteriormente elimina la instancia de la clase de gestión de error. | + | guo_app.of_msg( ).of_mensajes_sistema('SICOF000_TERCERO_NOT_FOUND') |
- | "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 | + | /*Ejemplo de uso definiendo la clase de mensaje.*/ |
- | registra en el log el mensaje por medio de un código de mensaje. | + | n_cst_msg luo_msg |
- | Posteriormente elimina la instancia de la clase de gestión de error.*/ | + | luo_msg = Create n_cst_msg |
- | n_cst_log_error luo_log_error | + | luo_msg.of_msg_advertencia("Esto es una Advertencia.") |
- | luo_log_error = Create n_cst_log_error | + | luo_msg.of_msg_informacion("Esto es una Información.") |
- | luo_log_error.of_add_log("EJEMPLO_CODE", 10, true, SQLCA) | + | luo_msg.of_msg_error("Esto es un Error.") |
- | destroy luo_log_error | + | luo_msg.of_mensajes_sistema(10) |
- | + | luo_msg.of_mensajes_sistema(10, "Error al insert el encabezado") | |
- | /*Ejemplo de uso definiendo la clase de error y | + | luo_msg.of_mensajes_sistema('SICOF000_TERCERO_NOT_FOUND') |
- | registra en el log el mensaje por medio de un código de mensaje. | + | destroy luo_msg |
- | 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 | + | |
</code> | </code> | ||
== Consideraciones == | == Consideraciones == | ||
- | * El API puede ser activada o desactivada por medio de la constante: **LOG_ERRORS** (Solo en aplicaciones SICOF ERP (Appeon/Powerbuilder)). | + | * El API puede ser activada o desactivada por medio de la constante: **API_MESSAGE** (Solo en aplicaciones SICOF ERP (Appeon/Powerbuilder)) siempre y cuando se utilice la implementación de la clase **guo_app**. |
- | * El desarrollador es el encargado de gestionar la transacción que realiza la persistencia. | + | * El desarrollador es el encargado de gestionar la transacción que realiza las consultas e inicialización del objeto. |
- | * Se automatiza el registro de errores en los objetos **uo_datawindow** y **uo_datastore** en toda su herencia. | + | * Se unifica el desarrollo para que la función global **f_mensajes_sistema** tome los nuevos cambios sin afectar su definición. |
- | * Se automatiza el registro de errores genéricos no controlados lanzados por el evento **systemerror** de Powerbuilder. | + | * Cada módulo (Contabilidad, Prespuesto, Tesorería, Compras, Talento y Nómina) debe implementar el método de inicialización **guo_app.of_init_logs(SQLCA)** en el método **of_process_step_init_transaction** de la clase **guo_app** especializada por cada módulo. A continuación se muestra una imagen de referencia de la implementación del módulo de presupuesto. Utilice esta guía para implementaciones en otros módulos teniendo presente que la clase **n_cst_app** se especializa con el nombre de la aplicación que la contiene. Ejemplo: en presupuesto la clase especializada es **n_cst_app_presupuesto**, por lo general la clase esta en la libreria principal que contiene el objeto **Application**. |
+ | |||
+ | {{ :ada:howto:sicoferp:factory:logmodels:ejemplo_n_cst_app.png?600 |}} | ||
+ | |||
+ | ==== Modo de uso: Java ==== | ||
+ | Para las aplicaciones desarrolladas en las tecnologías (Web): | ||
+ | |||
+ | * Java | ||
+ | * .Net | ||
+ | * PHP | ||
- | ==== Modo de uso: Java (Próximamente) ==== | + | el log de sesión será implementado por medio de un [[http://10.1.20.89/doku.php?id=ada:howto:sicoferp:factory:integrations:logs|Servicio Web]] el cual deberá considerar las reglas de [[#Columna: WS|Columna: WS]] |
- | Para las aplicaciones desarrolladas en la tecnología Java el log de sesión será implementado por medio de un servicio web. | + | |
[[ada:howto:sicoferp:factory:logmodels|←Volver atras]] | [[ada:howto:sicoferp:factory:logmodels|←Volver atras]] | ||