Diferencias técnicas entre OpenERP y Openbravo 2 (MVC)

Ya hablamos anteriormente sobre las diferencias en arquitectura entre Openbravo ERP y OpenERP. Hoy vamos a hablar de sus  soluciones en cuanto al patrón MVC (Modelo, vista y controlador).

 

El MVC de Openbravo podría resumirse en el siguiente esquema.

 

MVC de Openbravo ERP

 

En el modelo tenemos por un lado la base de datos a la que podremos acceder por sqlc. Sqlc es una herramienta que nos genera clases java en base a una definición en xml de sentencias sql, de este modo podemos tener una clase en la que cada método nos permitirá ejecutar una sentencia sql diferente. Esta es la herramienta de acceso a datos y persistencia utilizada historicamente en Openbravo. A partir de la versión 2.50 se añadió una capa DAL (Data Access Layer) implementada con Hibernate.

Respecto al controlador, esta es quizá la parte más oscura de Openbravo ya que la lógica de negocio se reparte entre código Java y código Pl/sql en base de datos lo que complica bastante tanto el desarrollo como la independencia del SGBD (Sistema de gestión de bases de datos), esto también provoca que la base de datos se vuelva muy lenta.

En cuanto a código Java existe principalmente una clase de la que herada cualquier otro servlet, luego tendremos nuestras propias clases y métodos en java y por último, y ya hablando de código en base de datos, tendremos una serie de triggers, funciones y restricciones.

 

La vista está compusta por código estático en html, css y javascript. Además dipsonemos de una herramienta llamada xmlengine que viene a ser un rellenador de plantillas. Por ejemplo, si tenemos un html con una tabla y queremos rellenar esa tabla con datos xmlengine nos puede ser útil.

 

Si estamos desarrollando una ventana mediante el modelo MDD prácticamente no nos enteraremos de que tecnologías se están utilizando por debajo. En realidad lo que se hace es leer el diccionario y generar código mediante la herramienta WAD, esta internamente genera código para sqlc, DAL, los html, css, javascript, los servlet java, xmlengine, etc. El problema es que hay muchas cosas que no se pueden desarrollar mediante MDD, en esos casos tendremos que picar a mano nosotros todo este código.

 

El MVC de OpenERP es mucho más sencillo.

 

MVC de OpenERP

Unas de las principales diferencias entre OpenERP y Openbravo ERP es que en OpenERP no hay código en base de datos, la base de datos está completamente limpia y eso tiene muchas ventajas. El modelo está compuesto por una base de datos pero lo que nosotros veremos a nivel de desarrollo será únicamente el ORM, de hecho hasta la fecha no he necesita tocar nada de la base de datos, ni siquiera añadir una columna o una restricción. ¿Y como es posible esto?, pues porque cualquier clase en OpenERP deriva de la clase osv.osv y está implementa el ORM. A este puedes indicarle los atributos que necesitas, de que tipo son y él se encargará del mapeo haciendo totalmente transparente el acceso a datos.

La parte del controlador es completamente código python. Por un lado tendremos las clases que dan sustento a nuestras ventanas y si queremos extenderlas por ejemplo añadiendo o sobreescribiendo métodos es muy sencillo, simplemente hay que utilizar herencia. Además nadie nos impide crearnos nuestras propias clases para hacer lo que se nos ocurra.

En cuanto a la vista esta se define en xml. Hay que recordar que en la arquitectura de OpenERP teníamos un servidor al que nos conectábamos por xml-rcp/net-rpc, esto quiere decir que el servidor le envía los datos al cliente en xml y este será el encargado de construir la interfaz en base a esos datos. Por tanto lo único que tenemos que hacer es definir esos xml que representan a la interfaz, muy sencillo todo.

Como cualquier aplicación software tanto Openbravo ERP como OpenERP tienen sus ventajas e inconvenientes, las dos plataformas de desarrollo son muy potentes pero desde mi punto de vista OpenERP tiene una arquitectura mucho mejor definida.

Nota:

Estoy ofreciendo unos mini cursos de desarrollo en OpenERP por 200€.

 

Cheli