Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:logmodels:fileuploadlog

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:fileuploadlog [2021/08/18 23:02]
administraidor
ada:howto:sicoferp:factory:logmodels:fileuploadlog [2021/09/21 13:09] (actual)
administraidor
Línea 142: Línea 142:
  
 == Consideraciones == == Consideraciones ==
-  * El API puede ser activada o desactivada por medio de la constante: **LOG_UPLOAD_FILE** (Solo en aplicaciones SICOF ERP (Appeon/​Powerbuilder)).+  * El API puede ser activada o desactivada por medio de la constante: **LOG_UPLOAD_FILE** (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.
   * 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 **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 181: 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 arrayfirst 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 obligatoriopero 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_indxthen ai_indx = 0 
 +if IsNull(as_column_namethen return 
 +if IsNull(as_column_value) then as_column_value ​""​ 
 +if IsNull(as_column_notificationsthen 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 ====
ada/howto/sicoferp/factory/logmodels/fileuploadlog.1629327774.txt.gz · Última modificación: 2021/08/18 23:02 por administraidor