Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa | |||
ada:howto:sicoferp:factory:logmodels:registryerrors [2021/08/19 15:00] administraidor |
ada:howto:sicoferp:factory:logmodels:registryerrors [2021/09/21 12:53] (actual) administraidor |
||
---|---|---|---|
Línea 213: | 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 array, first 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 obligatorio, pero 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 |
- | //Consumir Log de Errores con traza en formato json | + | String as_error_tracer |
+ | */ | ||
+ | |||
+ | //Validaciones previas de control | ||
+ | if IsNull(ai_indx) then ai_indx = 0 | ||
+ | if IsNull(as_error_code) then as_error_code = "" | ||
+ | if IsNull(as_error_description) then as_error_description = "" | ||
+ | if IsNull(as_error_line) then as_error_line = "" | ||
+ | if IsNull(as_error_method) then as_error_method = "" | ||
+ | if IsNull(as_error_tracer) then 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> | ||