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:fileuploadlog [2021/08/19 14:45] administraidor |
ada:howto:sicoferp:factory:logmodels:fileuploadlog [2021/09/21 13:09] (actual) administraidor |
||
---|---|---|---|
Línea 145: | Línea 145: | ||
* 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. | ||
* 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 impelentaciones en otros módulos teniendo presente que la clase n_cst_app se especialzia con el nombre de la aplicación que la contiene. | + | * Cada módulo (Contabilidad, Prespuesto, Tesorería, Compras, Talento y Nómina) debe implementar el método de inicialización **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 |}} | {{ :ada:howto:sicoferp:factory:logmodels:ejemplo_n_cst_app.png?600 |}} | ||
Línea 184: | Línea 184: | ||
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 Cargas*/ | + | /*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, ljson2 | + | sailjson iuo_json |
- | ljson = create sailjson | + | </code> |
- | //add json object array, first item | + | |
- | ljson1 = ljson.addarrayitem( 'columns') | + | <code java> |
- | ljson1.setattribute( 'column_name', 'fecha_sistema') | + | /*PASO 2: Incializar el objeto iuo_json antes de utilizarlo*/ |
- | ljson1.setattribute( 'column_value', '01/01/20') | + | iuo_json= create sailjson |
- | ljson2 = ljson1.addarrayitem( 'column_notifications') | + | </code> |
- | ljson2.setattribute( 'msg', 'El año de la fecha es menor a la vigencia actual') | + | |
- | ljson2 = ljson1.addarrayitem( 'column_notifications') | + | <code java> |
- | ljson2.setattribute( 'msg', 'La fecha no tiene el formato dd/mm/yyyy') | + | /* |
- | //add second item of the array | + | 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_file_upload con los siguientes argumentos |
- | ljson1 = ljson.addarrayitem( 'columns') | + | Integer ai_indx |
- | ljson1.setattribute( 'column_name', 'codigo_tercero') | + | String as_column_name |
- | ljson1.setattribute( 'column_value', 'null') | + | String as_column_value |
- | ljson2 = ljson1.addarrayitem( 'column_notifications') | + | String as_column_notifications[] |
- | ljson2.setattribute( 'msg', 'La columna es nula') | + | */ |
- | //Consumir Log de Cargas con traza en formato json | + | |
- | guo_app.of_log_file_upload( ).of_add_log(f_hoy(), "carga_prueba.txt", "Carga de Terceros", 10, ljson, true, SQLCA) | + | //Validaciones previas de control |
- | </code> | + | if IsNull(ai_indx) then ai_indx = 0 |
+ | if IsNull(as_column_name) then return | ||
+ | if IsNull(as_column_value) then as_column_value = "" | ||
+ | if IsNull(as_column_notifications) then return | ||
+ | if UpperBound(as_column_notifications) = 0 then return | ||
+ | |||
+ | //Registrar las propiedades de la notificación con el indice | ||
+ | iuo_json.setattribute("column" + String(ai_indx) + "_name", as_column_name) | ||
+ | iuo_json.setattribute("column" + String(ai_indx) + "_value", as_column_value) | ||
+ | |||
+ | //Registrar los mensajes de notificación con los indices | ||
+ | Integer li_i, li_count | ||
+ | String ls_msg | ||
+ | li_count = UpperBound(as_column_notifications) | ||
+ | for li_i = 1 to li_count | ||
+ | ls_msg = as_column_notifications[li_i] | ||
+ | iuo_json.setattribute("column" + String(ai_indx) + "_notifications" + String(li_i), ls_msg) | ||
+ | next | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code java> | ||
+ | //En el metodo donde se gestionan las notificaciones se consume el API Log de Cargas con traza en formato json, se recomienda utilizar una transacción diferente a la del proceso para que se pueda almacenar la notificación | ||
+ | guo_app.of_log_file_upload( ).of_add_log(f_hoy(), "carga_prueba.txt", "Carga de Terceros", 10, iuo_json, 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_file_upload | ||
+ | of_add_log_file_upload (1, 'codigo_tercero', '', ls_notificaciones) | ||
+ | </code> | ||
==== Modo de uso: Java ==== | ==== Modo de uso: Java ==== |