Plataforma

Nuevo framework BusinessCloud

Nuevo framework BusinessCloud

Creación de un nuevo framework

Desde sus inicios, gran parte del éxito de Yunbit se ha basado en la creación de una tecnología de base reutilizable que permita el desarrollo rápido de proyectos y facilite la personalización y extensibilidad de todo el producto. Dicha tecnología de base tiene sus raíces en desarrollos que nacieron hace más de 10 años, y por tanto, llegó un momento en que se nos empezó a quedar muy antigua.

Hace unos pocos años decidimos que había llegado el momento de renovar nuestra tecnología, reescribiendo todo desde el principio y utilizando algunas de las prácticas establecidas en la industria como son el patrón modelo-vista-controlador, orientación a servicios, etc. Para ello evaluamos los frameworks PHP más conocidos del mercado para utilizarlos como punto de partida: Symfony, Zend, Cake, CodeIgniter… Pero ninguno de ellos acababa de encajar bien con nuestros requerimientos, que eran un poco especiales:

Estructura de datos basada en metamodelo

Nuestra arquitectura multi-inquilino se basa en tener una sola copia del código base, ejecutándose sobre diferentes bases de datos (una por cada cliente); a consecuencia de esto, muy al principio del desarrollo del producto identificamos la necesidad de gestionar de forma sencilla las estructuras de tablas y campos, de manera que pudiéramos añadir tablas nuevas y campos nuevos a tablas existentes en muchas bases de datos a la vez. Para ello diseñamos un metamodelo (estructura de tablas que define el modelo de datos) y una serie de módulos que sincronizan la estructura real de las tablas con dicho metamodelo.

A la hora de pasar a un framework modelo-vista-controlador, necesitábamos que los modelos (concretamente la pieza de acceso a base de datos que se suele llamar ORM) también estuvieran asociados a dicho metamodelo. También buscábamos que las modificaciones del metamodelo se pudieran hacer a través de un interfaz web y tuvieran repercusión inmediata en las aplicaciones.

Plantillas

Nuestra tecnología en su versión 5.3.X incluye un modelo de plantillas cuya adopción supuso un éxito total. Basado en el sistema de plantillas del foro phpBB, permite crear plantillas con toda la potencia necesaria para nuestras aplicaciones, con HTML prácticamente puro y muy poca complejidad, lo que se adapta muy bien a nuestra división del trabajo dado que los diseñadores pueden trabajar con ellas directamente sin necesidad de saber programar. Teníamos claro que la nueva versión de la tecnología tenía que conservar este esquema. Prácticamente todos los frameworks examinados recomiendan una metodología consistente en mezclar HTML y PHP de forma tradicional, que no encaja con nuestra forma de trabajar.

Piezas del framework

Principalmente por estas dos razones, nos embarcamos en la aventura de crear un framework MVC desde cero. A continuación describimos sus componentes:

Dispatcher

Este módulo hace de punto de entrada y se encarga de manejar los URLs amigables: todos los URLs de la tecnología BusinessCloud se traducen a invocaciones de controladores, acciones sobre esos controladores y parámetros para las acciones.

Modelos

El único requisito para un modelo en BusinessCloud es heredar de la clase GBCModel, muy sencilla y que impone muy pocos requerimientos. No obstante, la verdadera potencia radica en el hecho de que cada objeto del metamodelo genera una clase modelo asociada.

Cada modelo se divide en dos: la clase gestionada y la clase modelo. Una clase gestionada no se puede instanciar directamente, siempre hay que instanciar la clase modelo (que hereda de la gestionada). La clase gestionada es la que realiza las consultas a base de datos para leer los datos de la tabla asociada al modelo; la clase modelo tiene una serie de puntos de extensión que permiten añadir lógica de negocio personalizada.

El metamodelo genera la clase modelo sólo si no existe, pero siempre que se modifica, sobreescribe la clase gestionada. Esto permite que si se añaden campos, el modelo los reconozca inmediatamente, sin perder la lógica de negocio personalizada que se pueda haber añadido a la clase modelo.

Controladores

Nuevamente, un controlador BusinessCloud puede ser cualquier clase que herede de GBCController; pero además, el metamodelo genera controladores para todos los objetos del modelo, que implementan la funcionalidad CRUD completa mediante un interfaz REST asociado a los comandos HTTP y a dos tipos de representación de datos: XML y JSON. En estos controladores, la autenticación está integrada en el protocolo HTTP, por lo que no hace falta realizar una operación de login específica.

También hay una serie de controladores base que se pueden usar para crear servicios REST personalizados, módulos con interfaz web tradicional, que requieran o no autenticación, etc.

Vistas

Aunque se pueden crear vistas totalmente personalizadas, lo más habitual es utilizar o extender una de las existentes: XML, JSON, o HTML (asociada al ya descrito sistema de plantillas).

Beneficios del nuevo framework BusinessCloud

Aunque el alcance que nos propusimos inicialmente aún no está completado, gracias al nuevo framework ya disponemos de una serie de funcionalidades que nos facilitan el trabajo interno y suponen mejoras significativas para nuestros clientes:

Rediseño estético y de navegación

Coincidiendo con la puesta en marcha del nuevo framework, le hemos dado un lavado de cara a toda la aplicación, y además hemos renovado por completo la navegación principal, que ahora no sólo es más vistosa y eficiente en su uso, sino también mucho más configurable y extensible.

Control de errores

En la versión 5.3.X creamos  una serie de módulos y metodologías orientados a recibir notificaciones si se produce un error en nuestros sistemas de producción. Esto nos permite tener control de los posibles problemas y anticiparnos a los avisos de incidencia de los usuarios. El problema es que, tal como lo definimos, dependía demasiado de que el desarrollador recuerde utilizarlos, y enturbiaba ligeramente el código.

Con BusinessCloud hemos pasado a un sistema basado en excepciones, y un manejador de excepciones y notificaciones integrado en el propio framework. De esta manera, todo error que el programador decida no procesar (o se olvide de ello) es capturado y notificado.

Listados gestionables

Uno de los grandes objetivos de BusinessCloud era tener un sistema similar a Salesforce, en el que un interfaz web sea suficiente para extender el modelo de datos y las aplicaciones asociadas. Aunque aún no hemos llegado a cumplirlo al 100%, sí que tenemos la posibilidad de crear listados y filtros basados en los modelos y servicios del metamodelo, en los que podemos elegir qué campos se muestran y de qué forma.

El siguiente paso será conseguir lo mismo con formularios de alta y modificación sobre los registros de las tablas asociadas.

Servicios REST para integraciones externas

Gracias a la orientación total a servicios, todas las tablas de datos tienen asociado un servicio REST básico, muy fácilmente extensible. Por eso, siempre que un cliente necesite realizar una integración con un sistema externo, podemos proporcionarle servicios de datos ya preparados, o, si necesitan determinada lógica de negocio, añadirla muy fácilmente a los servicios existentes.

En Yunbit ofrecemos una plataforma completa de soluciones en la nube para la gestión de grandes y pequeñas empresas. El framework BusinessCloud es la base sobre la que se edifica la plataforma; resultado de la experiencia de más de 10 años en desarrollo de aplicaciones de negocio en entornos web. Ofrece solidez tecnológica, rápida personalización, agilidad en los desarrollos y facilidad para conectarse con servicios externos.

Valora el artículo:

1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (6 valoraciones, media: 5,00 sobre 5)
Cargando...
Avatar photo Mario Villar Director Tecnológico Ver más artículos de Mario Villar

Otros artículos de la categoría Gestión empresarial