Sofia4boot: Soporte para trabajar con Sofia2 en aplicaciones Spring Boot

 

Sofia2 se aplica usualmente a escenarios IoT y BigData, pero también puede usarse como Plataforma/Arquitectura de desarrollo para el desarrollo a medida de proyectos.

 

En este sentido Sofia2 aporta:

 

  • Facilidad de uso: Sofia2 es compatible con las metodologías de desarrollo actuales, permite a los desarrolladores realizar iteraciones de forma rápida y continua sobre el modelo de datos y todo desde un interfaz Web. En contraposición un desarrollo tradicional modelo relacional impone un estricto conjunto de limitaciones al desarrollo, tanto a nivel de modelo de datos, de creación de reglas, cambios,…

 

  • Modelo de datos. Con Sofia2, el desarrollador solo tiene que crear el modelo de datos en un lugar: la Consola Web del propio producto. En un desarrollo los desarrolladores necesitan crear y mantener el modelo de datos en tres lugares mediante el uso de diferentes interfaces: la aplicación, la propia base de datos y la capa ORM.

 

  • Soporte JSON. El almacenamiento en JSON, pilar básico de numerosas aplicaciones actuales, se realiza sin dificultades y no requiere conversión. Con una SGBDR, los desarrolladores necesitan “aplanar” y transformar JSON para almacenarlo en tablas relacionales, y más tarde tienen que recuperar las capas al realizar la extracción de la base de datos.

 

  • APIs multilenguaje: Aparte del conector REST que puede usarse de forma sencilla desde cualquier lenguaje, se ofrecen APIS multilenguaje cuando se necesitan protocolos más avanzados y eficientes. Las APIs permiten comunicar de forma más sencilla con la plataforma, se ofrecen APIS Java, Javascript, C/C++, Python, Android, iOS, Node.js, Arduino,… todas estas APIs bajo licencia Apache y sin coste.

 

En este post presentamos Sofia4Bot, una librería Java que permite desarrollar aplicaciones Spring y Spring Boot que usan Sofia2 como Backend, de forma muy sencilla: basta una anotación y una clase DTO que representa nuestra ontología.

 

Preparar un proyecto Spring Boot para hacer uso de Sofia4Boot es muy sencillo y solo son necesarios tres pasos

 

  1. Añadir la dependencia de Sofia4Boot al nuestro proyecto

 

 

Os recordamos el repositorio maven de Sofia2

 

 

  1. Configurar el fichero application.properties de nuestra aplicación, para añadirle las siguientes propiedades de conexión con la plataforma, son los datos de URL, PUERTO y ENDPOINT de conexión con la plataforma y el TOKEN, KP e INSTANCIA para la gestión de la seguridad que hace la plataforma Sofia2.

 

 

  1. Inicializar Sofia2Boot, para ello en el arranque de SpringBoot le indicamos que queremos usar el Sofia2Initializer:

 

 

Ya tenemos todo listo para empezar a usar Sofia2 como repositorio de datos. Al estilo de SpringData Sofia4Boot solo requiere que definamos la Interface de nuestro Repository. El framework se encargará por debajo de realizar toda la lógica de negocio.

 

Si por ejemplo queremos trabajar con la ontología Alarma, podemos crear una interface RepositoryAlarma:

 

 

Esta interface la anotaremos con @Sofia2Repository(“Alarma”). Con esto le indicamos al framework que es una interfaz de repositorio Sofia2 que trabaja con la ontología Alarma. Tras esto, lo único que debemos hacer es definir los métodos de acceso a datos. Sofia4Boot soporta las operaciones de Query, Insert, Update y Delete. Para cada una de estas operaciones existe una anotación:

 

@Sofia2Query

@Sofia2Update

@Sofia2Delete

 

Nos permiten en la propia anotación definir la sentencia SQL de la operación

 

@Sofia2Query(“select * from Alarma where Alarma.causa=$causa”)

@Sofia2Update(“update Alarma set Alarma.causa=$valor where Alarma.causa=$param”)

@Sofia2Delete(“delete from Alarma where Alarma.causa=$parametro”)

 

Como podemos deducir de la propia sentencia se soporta el uso de parámetros para hacer sentencias dinámicas. Estos parámetros los definiremos como parámetros del método que estamos definiendo List update(@Param(“$valor”)String valor,@Param(“$param”) String param);

 

Es suficiente con indicar a través de la anotación @Param con que parámetro de la consulta se asocia el parámetro del método.

 

@Sofia2Insert

 

Es todavía más sencillo de usar, el método solo necesita un parámetro que será el DTO de la ontología que vamos a insertar.

 

SofiaId insert(Alarma alarmaOntologia);

 

Estos métodos nos devuelven el identificador a través del SofiaId o de una Lista de SofiaId de los elementos que han sido credos, modificados o borrados y en el caso de las consultas una Lista del objeto de la ontología.

 

Veamos cómo queda la interfaz completa:

 

 

Y su invocación desde un controlador, donde directamente invocamos las operaciones que hemos definido pero no hemos tenido que implementar. Para Spring Boot existirá un bean que implementa nuestra interfaz ya que sofia4Boot se encarga de crearlo por nosotros y de toda la lógica de conectividad con Sofia2, preparación de los mensajes y transformación de datos en JSON a nuestros objeto Java.

 

 

Podéis descargaros el proyecto de ejemplo desde nuestro repositorio github en https://github.com/Sofia2/sofia4bootexample.git

 

Para ejecutarlo basta con hacer

 

mvn spring-boot:run

 

 

Para probar el ejemplo una vez creado el Controlador podemos hacer a través de una invocación HTTP. Vamos a lanzar la consulta de todos los registros y una inserción desde el cliente POSTMAN. En el caso de la consulta, definimos una operación GET a la URL del controlador, en la URL localhost:8080

 

 

Y nos devuelve un listado con la consulta

 

 

Para la Inserción, definimos la invocación a través de una operación POST y definimos los valores del Objeto Alarma. Al estar en un cliente HTTP, definimos el objeto como JSON

 

 

El retorno de la invocación será el Id de la instancia insertada.

 

 

A medida que ejecutamos inserciones, si volvemos a lanzar la consulta veremos que cada vez aparecen nuevas instancias.

 

 

También podemos crearlo como proyecto Eclipse ejecutando >mvn eclipse:eclipse

 

Sofia4boot: Soporte para trabajar con Sofia2 en aplicaciones Spring Boot

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s