Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:logmodels:registryerrors

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:logmodels:registryerrors [2021/08/18 19:54]
administraidor
ada:howto:sicoferp:factory:logmodels:registryerrors [2021/09/21 12:53] (actual)
administraidor
Línea 169: Línea 169:
  
 == 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: **LOG_ERRORS** (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 la persistencia.
   * Se automatiza el registro de errores en los objetos **uo_datawindow** y **uo_datastore** en toda su herencia.   * Se automatiza el registro de errores en los objetos **uo_datawindow** y **uo_datastore** en toda su herencia.
   * Se automatiza el registro de errores genéricos no controlados lanzados por el evento **systemerror** de Powerbuilder.   * Se automatiza el registro de errores genéricos no controlados lanzados por el evento **systemerror** de Powerbuilder.
   * Para el procesamiento de logs de bloques se implementa Clase sailjson para procesamiento de cadenas de texto en ese formato.   * Para el procesamiento de logs de bloques se implementa Clase sailjson para procesamiento de cadenas de texto en ese formato.
 +  * 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 |}}
  
 == API Json == == API Json ==
Línea 210: Línea 213:
 destroy ljson destroy ljson
 </​code>​ </​code>​
 +
 +== Limitaciones ==
 +Se identifica que actualmente la versión de Appeon (2013/2016) presenta problemas con el procesamiento del API Json para estructuras complejas como Arrays por esta razon cada procesamiento del API debe ser realizado a un solo nivel de complejidad. A continuacion se muestra un ejemplo de uso funcional en Appeon/​Powerbuilder que puede ser tomado como referencia.
  
 <code java> <code java>
-/*Ejemplo ​de Uso del API con el Log de Errores*/ +/*PASO 1: Definir un objeto de la clase sailjson en la zona de instancia ​del componente donde se va utilizar ​el API como una ventana, objeto no visual, etc*/ 
-sailjson ​ljson, ljson1 ​ +sailjson ​iuo_json 
-ljson = create sailjson +</​code>​ 
-//add json object arrayfirst item + 
-ljson1 = ljson.addarrayitem'​errors'​+<code java> 
-ljson1.setattribute'​error_code',​ '​-1'​+/*PASO 2: Incializar el objeto iuo_json antes de utilizarlo*/​ 
-ljson1.setattribute'​error_description',​ 'Error actualizando base de datos'+iuo_json= create sailjson 
-ljson1.setattribute'​error_line',​ '​100'​+</code> 
-ljson1.setattribute'​error_method',​ '​SystemError'​+ 
-ljson1.setattribute'​error_tracer',​ ''​+<code java> 
-//add second item of the array +/
-ljson1 = ljson.addarrayitem( '​errors'​) +PASO 3: No es obligatoriopero se recomienda crear un método local de asignación para simplificar el proceso como ejemplo se define metodo of_add_log_error con los siguientes argumentos 
-ljson1.setattribute( ​'​error_code'​'​-10'​+Integer ai_indx 
-ljson1.setattribute( ​'​error_description'​'Error general del sistema'​+String as_error_code 
-ljson1.setattribute( ​'​error_line'​'​101'​+String as_error_description 
-ljson1.setattribute( ​'​error_method'​'​SystemError'​+String as_error_line 
-ljson1.setattribute( ​'​error_tracer'​'​SystemOutMemoryError'​)+String as_error_method 
 +String as_error_tracer 
 +*/ 
 + 
 +//​Validaciones previas de control 
 +if IsNull(ai_indxthen ai_indx = 0 
 +if IsNull(as_error_codethen as_error_code = ""​ 
 +if IsNull(as_error_descriptionthen as_error_description = ""​ 
 +if IsNull(as_error_linethen as_error_line = ""​ 
 +if IsNull(as_error_methodthen as_error_method = ""​ 
 +if IsNull(as_error_tracerthen as_error_tracer= ""​ 
 + 
 +//Registrar las propiedades del error con el indice 
 +iuo_json.setattribute("​error"​ + String(ai_indx) + "​_code"​as_error_code
 +iuo_json.setattribute("​error"​ + String(ai_indx) + "​_description"​as_error_description
 +iuo_json.setattribute("​error"​ + String(ai_indx) + "​_line"​as_error_line
 +iuo_json.setattribute("​error"​ + String(ai_indx) + "​_method"​as_error_method
 +iuo_json.setattribute("​error"​ + String(ai_indx) + "​_tracer"​as_error_tracer) 
 + 
 +</​code>​ 
 + 
 +<code java> 
 +//En el metodo donde se gestiona el error se consume el API Log de Errores con traza en formato json, se recomienda uitlizar una transacción diferente a la del proceso para que se pueda almacenar el error
 guo_app.of_log_error( ).of_add_log("​EJEMPLO_CODE",​ 10, lson, true, SQLCA) guo_app.of_log_error( ).of_add_log("​EJEMPLO_CODE",​ 10, lson, true, SQLCA)
 +
 +//Por último se debe reiniciar el componente para otro proceso
 +iuo_json = Create sailjson
 +</​code>​
 +
 +<code java>
 +//Invocar el método local of_add_log_error
 +of_add_log_error(1,​ "​-1",​ 'Error actualizando base de datos',​ '​100',​ '​SystemError',​ ''​)
 </​code>​ </​code>​
  
ada/howto/sicoferp/factory/logmodels/registryerrors.1629316458.txt.gz · Última modificación: 2021/08/18 19:54 por administraidor