¿Cómo usar el API Spring o Client4SpringBoot?

¿Cómo usar el API Spring o Client4SpringBoot?

Introducción

La plataforma ofrece varios módulos que permiten la adquisición de información, fundamentalmente el API Manager y el DigitalBroker (también conocido como IoTBroker).

El API Manager permite de forma muy sencilla y visual publicar el acceso (queries, actualizaciones, inserciones) a las ontologías como APIs REST ofreciendo interfaces OpenAPI (swagger), de modo que pueda generar un cliente en cualquier tecnología para atacar a estas APIS.

Podéis ver cómo usar el API Manager en cualquiera de estos tutoriales:

(API Manager) Creación y Ciclo de vida de las APIs / (API Manager) Invocación a APIS vía Swagger y generación de cliente con Swagger Editor / (API Manager) Invocar APIs de gestión de la plataforma con Token OAuth2

Usar el API Manager tiene varias ventajas, como tener registradas y catalogadas las interfaces (los servicios) que publica el sistema para su consumo por los clientes.

Pero hay escenarios donde la aproximación del API Manager puede no ser la más adecuada, como pueden ser:

  • Si estoy trabajando en Java con Spring Boot y no quiero estar generando wrappers de las APIS publicadas.

  • Si estoy usando la plataforma como repositorio de datos y tengo un gran número de ontologías a manejar.

  • Si necesito mayor flexibilidad y reducir tiempos de desarrollo.

  • Si soy un dispositivo y quiero usar un protocolo más eficiente como MQTT.

En estos escenarios y en muchos más puede interesar más usar el DigitalBroker como punto de entrada a mi negocio.

¿Qué es Client4SpringBoot?

Client4SpringBoot es una librería Java preparada para funcionar sobre Spring Boot y que simplifica el acceso al DigitalBroker wrapeando las peticiones con un interfaz Repository que permite invocar al DigitalBroker a través de métodos Java.

Nota Importante: Debido a que spring.boot-dev-tools hace una recarga de clases con su propio classloader, no es recomentable utilizarlo en un proyecto que utilice la libreria client4SpringBoot, ya que no se podrán inyectar con @Autowired las clases anotadas como @IoTBrokerRepository, al haber sido cargadas con el classloader de la aplicación en vez de con el classloader de las clases Bean donde se inyectan, provocando un error de este tipo:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field ticketRepository in com.minsait.onesait.platform.examples.iotclient4springboot.repository.CheckTicketRepository required a bean of type 'com.minsait.onesait.platform.examples.iotclient4springboot.repository.TicketsRepository' that could not be found.


Action:

Consider defining a bean of type 'com.minsait.onesait.platform.examples.iotclient4springboot.repository.TicketsRepository' in your configuration.





Veamos ahora el aspecto que tiene la libreria:

La forma de acceder a las ontologías es a través de un interfaz en el que se definen las consultas sobre el DigitalBroker:

luego configuraré la conexión con el DigitalBroker y a través de la inyección de dependencias de Spring podré usar este Repository para acceder al DigitalBroker. 



¿Cómo se usa?

Veamos cómo se usa Client4SpringBoot con un ejemplo. En el ejemplo harás lo siguiente:

  • Crearás una Ontología de ejemplo, por ejemplo una ontología para representar una Incidencia reportada por un ciudadano en una ciudad (CitizenTicket) y una conexión con la Plataforma (Token,...)

  • Crearás un proyecto Maven y lo configuraremos con la librería para poder comunicar con la plataforma insertando y recuperando datos de la ontología previamente creada.

¡¡¡Vamos allá!!!

Accediendo al Entorno y creando la Ontología y el DigitalClient para el ejemplo

  • Comienza por conectarte al ControlPanel de un Entorno de la Plataforma. En el ejemplo utilizarás el entorno de experimentación habilitado https://www.onesaitplatform.online/controlpanel/
    Si aún no tienes usuario, puedes crearlo directamente pulsando New Account.
    Una vez dentro del ControlPanel ya puedes comenzar a trabajar. Lógate y ve a la opción de Menú My Ontologies:


    Selecciona CREATE para crear una nueva Ontología. En este caso, selecciona Crear Ontología Paso a Paso:

    aunque también podrías elegir cargar datos de un fichero.

    En el ejemplo crearás la ontología con estos datos: 

  •  Recuerda que los nombres de las ontologías son únicos, por tanto tu Ontología debería incluir algo para hacerla única como: CitizenTicket_<iduser>
    Luego, selecciona una plantilla base para la creación de la ontología. En el ejemplo seleccionaremos EmptyBase de GENERAL:
    Esta plantilla no tiene ningún atributo base, por lo que podrás crear mi ontología como consideres.
    Ve pulsando en ADD NEW PROPERTY para ir añadiendo tus propiedades:

     
    En el ejemplo, crea estos atributos:

    • mail: String required (representa el email de contacto de la persona).

    • explanation: String required (representa la descripción de la incidencia).

    • status: String required (el status de la incidencia, al registrarse será PENDING).

    • coordinates: GeoJSON tipo Point optional (coordenadas en la que se registró la incidencia).

    • fullName: String optional (nombre completo del remitente de la incidencia).

En el ControlPanel se vería así:

lo siguiente es pulsar el botón  . Esto actualiza el JSON-Schema que representa internamente la ontología y puedes editarlo dentro: