Porque se debe aprender xmlrpc

13 de junio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

La primer herramienta para manipular Odoo que aprendí a usar fue xmlrpc. Necesitaba actualizar listas de materiales y maestros de productos en OpenERP 6.0, y las herramientas de ETL disponibles no hacían el trabajo (por dos motivos; la recursividad con ETL era imposible, y el ETL no podía trabajar con el ORM de Odoo, y actualizar las tablas de PostgreSQL no era una opción). 

Fue por eso que descubrí una página perdida de xmlrpc con OpenERP (once años más tarde no se encuentra disponible) que la verdad salvó el día. Con conocimientos rudimentarios de Python (es la gran realidad de los desarrolladores de Odoo, no somos grandes pythonistas) pude desarrollar scripts que actualizaban los datos maestros de productos y las listas de materiales.

Que es xmlrpc? Es un protocolo para invocar de manera remota funciones en Odoo. Dichas funciones son los métodos soportados por el ORM de Odoo (más sobre el ORM en otro post) que pese a tener pocas primitivas permite realizar muchas tareas. Por ejemplo; nuestro Odoo reside en un servidor en Dallas. Utilizando un script de Python que se ejecuta en mi laptop en Salta, puedo realizar tareas en el server alojado en Dallas. Por ejemplo borrar productos duplicados, actualizar iniciativas o crear facturas. Solo para dar algunos ejemplos.

Como decía, xmlrpc en forma remota permite como mínimo invocar las operaciones básicas del ORM de Odoo. Estas operaciones son: search (para la búsqueda de registros), read (lectura de registros), create (creación de registros), write (actualización de registros) y unlink (para borrado de registros). Hay otros métodos como por ejemplo search_read, pero la verdad son todos una extensión de los métodos mencionados anteriormente.

Estas operaciones básicas nos permiten desarrollar scripts que integran Odoo con otros sistemas (por ejemplo bases de datos MySQL o webservices mediante REST) y sincronizar los datos con Odoo. O permite sincronizar diferentes sistemas de Odoo (supongamos que tenemos el sistema administrativo corriendo en un Odoo detras de una VPN, y el e-commerce corriendo en Odoo en un servidor separado fuera de la VPN). O migrar datos entre diferentes versiones de Odoo. O leer archivos de Excel o archivos CSV y actualizar los precios de los productos. Las posibilidades son infinitas.

Por que xmlrpc debe ser la primer herramienta a aprender cuando uno aprende a desarrollar en Odoo? Primero porque xmlrpc es un protocolo sencillo de aprender (el desarrollador necesita saber programar en Odoo pero no creo que sea un issue). Al poco tiempo de aprender xmlrpc (estoy hablando de muy pocas horas), uno ya se encuentra realizando tareas útiles con Odoo y uno no debe superar la curva de aprendizaje presente en el desarrollo de módulos de Odoo (la cual sinceramente no es muy grande).

Utilizando xmlrpc uno esta forzado desde el primer minuto a trabajar con el modelo de datos de Odoo. Lo cual es fundamental en el aprendizaje del desarrollador de Odoo. No nos olvidemos que el desarrollador de Odoo primero debe aprender las primitivas del ORM, para luego aprender como mediante estas primitivas trabajar con el modelo de datos de Odoo.

Otro motivo para aprender xmlrpc es que es una gran herramienta de reporting. Se puede utilizar scripts de xmlrpc para crear archivos XLSX o CSV (este es un ejemplo sobre como generar un XLSX con la información la estructura de las listas de materiales). Esto es util porque si bien Odoo tiene muchos reportes, los mismos no son infinitos y tarde o temprano nos encontramos con la necesidad de crear nuevos informes. 

Y el último motivo es que permite automatizar tareas de mantenimiento mediante el crontab. Y dichas tareas no se encuentran sometidas a las limitaciones de procesamiento (con respecto al tiempo) que presentan las tareas ejecutadas mediante el cron interno de Odoo. 

Honestamente, es al día de hoy que no entiendo como el xmlrpc es una herramienta desconocida para una gran cantidad de desarrolladores.

Gustavo Orrillo 13 de junio de 2023
Compartir
Archivar
Identificarse dejar un comentario