¿Cómo usar API Javascript?

Introducción

Para desarrollar una aplicación cliente de Plataforma en Javascript, debes tener previamente los siguientes archivos JS en el directorio de la aplicación:

Puedes encontrar estos Javascript aquí: https://github.com/onesaitplatform/onesait-cloud-platform-clientlibraries/tree/master/javascript-client/js

En el ejemplo se utiliza un archivo adicional llamado JsonEditor.js para mostrar la respuesta de forma más visual, pero no es estrictamente necesario.

Este archivo puedes encontrarlo aquí: https://github.com/onesaitplatform/onesait-cloud-platform-clientlibraries/tree/master/javascript-client/json

Ejemplo

Para realizar este ejemplo, entramos en el siguiente archivo HTML, op_apiJs_websocketExample.html, se encuentra en la siguiente ubicación: https://gitlab.devops.onesait.com/onesait/platform/engine/onesait-platform/onesait-cloud-platform-clientlibraries/-/tree/develop/javascript-client, el cual va a ser

el archivo que tenemos que modificar con las siguientes indicaciones:

Para empezar, debes instanciar un objeto de tipo OPClient para crear un cliente de OnesaitPlatform:

var client = new OPClient();

A continuación, debes crear un objeto donde almacenar los parámetros de configuración (en este caso, los del ejemplo seleccionado):

var config = {};

  • config['url'] = "http://lab.onesaitplatform.com/iot-broker/message";

  • config['deviceTemplate'] = 'TicketingApp'; (Debe ser igual que la template que definiste en IoTClient)

  • config['token'] = '0e9264405327494dac6551d01aac7e97'; (token de deviceTemplate )

  • config['device'] = 'TicketingApp01'; (Nombre que le darás al dispositivo)

Esta variable se pasará como parámetro al objeto cliente previamente definido usando el método configure():

client.configure(config);

Por último, debes conectarte con la plataforma usando el método connect:

client.connect();

Ejemplo con otra Ontología (AirQuality):

Una vez realizado este paso, podrás invocar todos los métodos implementados en el objeto OPClient:

  • Join

  • Query

  • Insert

  • Update

  • UpdateById

  • Remove

  • RemoveById

  • Subscriptions

JOIN

La operación Join será la primera acción que se haga, porque permite conectarse al IoTClient definido. Si todo está bien, devolverá la sessionKey, identificando la sesión actual.

QUERY

La operación Query permite obtener los datos que se almacenaron y asociaron a una ontología determinada. Debes especificar la ontología asociada a la plantilla IoTClient/deviceTemplate en el ControlPanel.

Se aceptan tanto consultas nativas como SQL. También puedes realizar consultas SQL que incluyan SELECT/UPDATE/DELETE.

Nativo con la Ontología/Entidad Ticket

SQL con la Ontología/Entidad Ticket

Si queremos filtrar la consulta:

Consulta de la Ontología/Entidad Ticket con UPDATE:

Utilizando la Query: update Ticket set Ticket.name ="Angela" where _id=OID("62fccab387b0ef1666c25da1") and Ticket.name="Pepe"

Consulta de la Ontología/Entidad Ticket con DELETE:

Utilizando la Query: delete from Ticket where _id=OID("62fccab387b0ef1666c25da1") and Ticket.name="Angela"

INSERT

La operación Insert permite insertar nuevos datos en la ontología. Asegúrate de que los datos tienen la estructura definida en el Esquema JSON de la ontología. De lo contrario no pasará la validación del Esquema. Para asegurarse de que el formato es correcto, la mejor opción es copiarlo directamente del Esquema de la Ontología (Ontology Schema), que devuelve el id de la instancia insertada.

Ten en cuenta que puedes pasar a la función un conjunto de instancias de Ontología como datos, por ejemplo:

Insertando en la Ontología Ticket

Instance: {"Ticket": {"identification": "Nuevo Ticket","status": "true","email": "ticket@gmail.com","name": "Pepe","response_via": "","file": {"data": "","media": {"name": "","storageArea": "SERIALIZED","binaryEncoding": "Base64","mime": "application/pdf"}},"coordinates": {"coordinates": {"latitude": 12,"longitude": 45},"type": "Point"}}}

Como se muestra en la imagen, esta operación devolverá el ID del registro insertado (o los IDs en caso de que los datos sean un array), que podrás utilizar más tarde para realizar operaciones 'por id'.

UPDATE

Para actualizar una instancia existente, puede actualizar toda la instancia o actualizar los campos seleccionados.

En el primer caso, puede que quieras usar updateById. Funciona de forma similar a la función Insert.

Instance: {"Ticket": {"identification": "Nuevo Update de Ticket","status": "true","email": "ticket@gmail.com","name": "Pepe","response_via": "","file": {"data": "","media": {"name": "","storageArea": "SERIALIZED","binaryEncoding": "Base64","mime": "application/pdf"}},"coordinates": {"coordinates": {"latitude": 12,"longitude": 45},"type": "Point"}}}

Como se muestra en la imagen, en esta operación se modificaran los datos del id asociado, en este caso los atributos “identification” y “status“

En el segundo caso, puedes usar la función 'update'. Permite modificar un conjunto de instancias seleccionadas mediante un parámetro “query”. Esta función sólo acepta consultas nativas. Si quieres hacer actualizaciones mediante SQL, usa la función query (Como hemos visto anteriormente).

Update con la Ontología/Entidad Ticket

Utilizamos la Query: db.Ticket.update({'Ticket.email':{$eq:'nuevoticket@gmail.com'}}, ($set:{'Ticket.email':'Nuevogamil@gamil.com'}}))

En la imagen anterior, se puede observar que como resultado se obtiene el numero de registros modificados por la consulta.

DELETE

Si quieres borrar una sola instancia, puedes usar 'removeById'.

 

Como resultado se obtiene la confirmación de la eliminación del registro (Se indica que se ha eliminado un registro).

Por otro lado, si quieres eliminar todas las instancias que coincidan con un filtro en particular, usa la función 'remove'. Esta función, de forma similar a la función update, sólo acepta queries nativas como parámetro.

Delete en la Ontología Ticket

SIMULATE

La simulación sirve para introducir o insertar datos en nuestra entidad, en la cual le ponemos tiempo que es la rapidez en la que se va ejecutando, así podemos comprobar y simular que todo funciona correctamente y no se produce ningún fallo.

Si queremos detener la simulación pulsando el botón “Stop“ se detendrá la generación de registros.

SUBSCRIPTIONS

Este API te permite suscribirte a una Ontología. Al suscribirte, cualquier inserción/actualización relacionada con la ontología suscrita, se notificará a tu cliente, causando una ejecución de tu función de callback definidapasada para manejar las notificaciones de suscripción.

Al suscribirte, recibirás un subscriptionId en la función de callback, que podrás utilizar más tarde para filtrar los mensajes de suscripción que lleguen, por ejemplo.

Echa un vistazo a la función de suscripción:

La primera función de callback devolverá como respuesta el mensaje con el ID de suscripción asociado.

La segunda función de callback se ejecutará cada vez que llegue una notificación/mensaje de suscripción.

En el campo Subscription se introducirá el identificador de la suscripción existente en plataforma, en “Measure Value“ introduciremos el valor que se utilizara para realizar la validación definida en la suscripción. Tras Pulsar sobre el botón “Suscribe“, el cliente realizara la suscripción y se mostrara en el campo subscriptionId el identificador de dicha suscripción.

Si se realizan inserciones en la entidad que cumplan la condición definida en la suscripción, se recibirá una notificación en el cliente y se mostrará el mensaje por pantalla incluyendo la instancia insertada.

Para des suscribirse bastara con pulsar en el botón “Unsubscribe“.

La función para cancelar la suscripción :

La función de callback se ejecutará cuando llegue el mensaje de confirmación.