API Script para replicar información entre diferentes instancias Sofia2

Se ha creado una nueva API Script APIReplicationRest en el motor de scripting que permite generar/replicar instancias mediante Rest. Contiene dos comandos insertInstance e insertInstanceProxy, dependiendo de si la conexión tiene proxy, necesita autenticación o no.

insertInstance

La sintaxis que utiliza es la siguiente:

apireplicationrest.insertInstance(SERVICE_URL, TOKEN, KP_INSTANCE,ONTOLOGY_NAME,ONTOLOGY_INSTANCE);

Un ejemplo de uso sería como el siguiente:

En este caso, para un script de tipo Ontología se generaría una réplica de esa instancia.

insertInstanceProxy

Tendremos que conocer los datos de conexión del proxy así como la autenticación en caso de que fuera necesario. La sintaxis que utiliza es la siguiente:

apireplicationrest.insertInstanceProxy(SERVICE_URL, PROXY_SERVER, PROXY_PORT, PROXY_USER, PROXY_PASS, TOKEN, KP_INSTANCE,ONTOLOGY_NAME,ONTOLOGY_INSTANCE);

Un ejemplo de uso sería como el siguiente:

A diferencia del caso anterior, en este ejemplo la conexión tiene proxy y se inserta una instancia nueva en la ontología.

Combinando estas operaciones con las existentes en el API Sofia del motor de scripting, esta funcionalidad abre camino a múltiples aplicaciones cuando se necesita replicar la información a otros sistemas.

API Script para replicar información entre diferentes instancias Sofia2

API Manager: Clonado de APIs

En la última release de Sofia2 (2.23) se ha incorporado una nueva funcionalidad a la hora de gestionar los APIs para simplificar la creación de nuevas versiones: Clonar APIs.

Se seleccionará un API creado previamente y, tras acceder a la pantalla de consulta del mismo, se encontrará disponible la opción de clonarlo. El estado del API original es indiferente.

Tras pulsar sobre el botón clonar se generará una nueva versión del API (correlativa a la última versión existente) con todas sus propiedades y operaciones idénticas a la del original. El estado del nuevo API será Creado, para permitir introducir modificaciones y adecuarlo a las necesidades requeridas.

API Manager: Clonado de APIs

Mejoras Dashboards Sofia2

En las últimas versiones publicadas de Sofia2, se han ido añadiendo progresivamente mejoras y características a los dashboards que se pueden crear en la plataforma. A continuación veremos un resumen de las novedades que se han ido incluyendo.

Nuevos estilos de Dashboard disponibles:

A parte de los estilos iniciales que había en la plataforma, se han creado algunos nuevos, aplicables tanto a dashboards antiguos como a los nuevos creados:

· Dark Theme

 

· Dark Theme Free

 

· Dark Blue Theme

Redimensionado, plegado y zoom de cada Gadget:

Se ha habilitado la posibilidad de redimensionar en altura el Gadget, en anchura dependerá de la posición del mismo dentro del layout elegido. Esta característica, estará solo disponible en el modo edición, quedando deshabilitada en el modo visualización del dashboard.

Para poder redimensionar el gadget, basta con situar el cursor en la parte inferior del gadget. Veremos cómo cambia el cursor al situarse en esta posición, y, arrastrando podremos lograr el redimensionado.

image0083

El plegado funcionará tanto en modo edición como en modo visualización, dejando al usuario final del dashboard la posibilidad de minimizar cualquier gadget. Para poder usarlo se deberá usar el botón de opciones del gadget en la esquina superior . Para algunos estilos de dashboard estos botones aparecerán solo cuando el cursor esté en el título del gadget.

El zoom de cada gadget, estará también disponible tanto en modo edición como visualización. Con este zoom se habilitará una vista individual y más grande para el gadget, pudiendo interactuar de la misma manera a como se haría normalmente. Para usarlo habrá que hacer clic en el botón del gadget.

Disponibilización de los Dashboards por URL externa:

Se ha disponibilizado por URL todos los dashboard, de forma que pueda incluirse en otras páginas o como enlaces de las mismas.

Nuevos Gadgets incluidos:

· Gadget HTML5: Gadget que permite incluir contenido HTML5 escrito. A diferencia del gadget URL, este permite insertar el contenido completo HTML5, incluida la carga por url de librerías externas de Javascript u hojas de estilo. Una posibilidad interesante es la de usar librerías de sofia2 y poder crear por ejemplo kp productores y conseguir interactuar con otros gadgets.

 

· Gadget Inline Markdown: Se trata de un gadget inline (se crea dentro del dashboard) y posibilita la creación rápida de html markdown.

 

 

· Actualización del Gadget Gauge

 

Algunas de estas características pueden verse en el siguiente vídeo de la plataforma https://youtu.be/8YTJQtRZGwA

Mejoras Dashboards Sofia2

Sofia2 en FIMART 2015 (Plataforma Soluciones Smart Rural)

Del 10 al 12 de Noviembre de 2015 estuvimos en el evento FIMART 2015, un evento en el que las empresas muestran soluciones de aplicación al ámbito Rural.

En nuestro caso aprovechamos para posicionar Sofia2 como Plataforma sobre la que construir Soluciones en el ámbito Rural, desde:

Soluciones en el ámbito de la Agricultura de precisión,

Monitorización del ganado:

O en el Turismo Rural.

Podéis descargar la presentación que realizó nuestro compañero Eduardo Martínez, del equipo Smart Cities de Indra, dentro de las jornadas aquí.

También podéis ver la grabación de la presentación en nuestro canal Youtube.

Sofia2 en FIMART 2015 (Plataforma Soluciones Smart Rural)

Control Throtling en API Manager

En la última Release de Sofia2 se ha incorporado un nuevo control de seguridad a la hora de realizar peticiones al módulo API Manager.

De esta forma, a la hora de definir un nuevo API, se incorpora un control que permite establecer el número de peticiones que podrá realizar cada usuario por minuto.

Una vez dado de alta y en cuanto esté disponible para invocación, el comportamiento del API será el habitual, con una salvedad:

Si en menos de un minuto un usuario realiza un número mayor de peticiones al API que el establecido por configuración, se le denegará la realización del uso de la API durante el resto del minuto, devolviendo un código de error 429 para cada petición. Tras terminar el minuto, se volverá a habilitar el acceso al API para dicho usuario.

Si a la hora de definir el API no se habilita este límite, no se aplicará ningún tipo de restricción de uso de dicho API a los usuarios.

Control Throtling en API Manager

Smart cities: una apuesta integradora

La base de una ciudad inteligente es el manejo de los datos. La clave para lograrlo es contar con un plan de actuación global que permita llevar todas las piezas bien engranadas hasta el final, en lugar de pretender apuntarse a la moda ‘smart’ con soluciones aquí y allá. Sociedad, empresas y administraciones ya tienen claro que la transversalidad es el camino a seguir.

"Los ayuntamientos y las empresas estamos ahora enfocados en una estrategia de integraciOn. La tendencia son las plataformas urbanas controladas por un cerebro que dirige todos los servicios", explica Alberto Bernal, responsable de Smart Cities de Indra

Leer más

Smart cities: una apuesta integradora

Gadgets BDH y native BDTR

En la nueva versión de Sofia2, se han añadido dos nuevas capacidades importantes a los gadgets, que aumentarán las capacidades a la hora de realizar dashboards más complejos y analíticos desde la plataforma:

  • Acceso en modo nativo a la BDTR: Con esta nueva versión, se permite a todos los gadgets acceder a la base de datos en tiempo real, mediante una query en mongoDB para dicha base de datos de referencia en BDTR. Este acceso, será permitido para cualquier query que devuelva una estructura JSON, posibilitando, por ejemplo, filtrados o etapas de agregación.

Cuando se cree el gadget, el campo de acceso al dato del eje/valor/columna, será un texto libre, donde se deberá insertar el nombre del campo o ruta al mismo, que se devuelva en la query lanzada.

En la siguiente imagen, se puede ver cómo quedaría un conteo de todas las instancias de la ontología ontoWebCompras, realizando dicho conteo con una etapa de agregación, que nos devolverá una única instancia con el campo “count”, el cual será el que se escriba en el campo “valor” del formulario.

 

 

 

Una vez creado, podremos visualizar el valor devuelto por la query nativa de mongoDB

2

 

  • Acceso a la base BDH: Se ha añadido dicha capacidad a todos los gadgets, para la base de datos histórica de referencia Hadoop. Mediante una query en formato SQL-LIKE, se podrán lanzar queries hacia dicha base de datos y recibiendo los datos directamente en el gadget, de forma transparente, de igual forma a como se haría con la BDTR. Lo único necesario será marcar el selector de BDH en las opciones de gadget.

En el siguiente ejemplo, se lanza una query en SQL-LIKE sobre la BDH de hadoop para la ontología feedBiciCoruna:

3

También es posible lanzar queries agregadas y con renombrado de campos sobre la base de datos histórica:

4

Otra característica interesante, y que nos será de utilidad a la hora de graficar datos más complejos o dependientes de varios, es el acceso multicampo a la instancia, tanto para BDTR como para BDH. Esto será posible en el campo transformación correspondiente del campo.

Por ejemplo, si queremos utilizar los datos geometry de la BDH en un gadget de tipo mapa, tendremos que unirlos en una misma estructura de geoJSON de tipo “point”, que será usada en el campo, al estar estos divididos en dos campos independientes, latitud y longitud.

Usando la nueva función geoJSONPointFromLatLng(longitudeField,latitudeField) e insertando en la misma los parámetros correspondientes, podremos crear dicha estructura que podrá ser utilizada en el gadget. El acceso a otro campo, tendrá la siguiente estructura:

$[fieldPath]

Sustituyendo para el ejemplo concreto, podremos usar el campo “latitude” de referencia y acceder al longitude de la manera explicada, quedando la siguiente transformación del campo:

                                                          geoJSONPointFromLatLng($[longitude],$0)

También sería válida, aunque no recomendable, una estructura como la siguiente e ignorar el campo de referencia:

                                                 geoJSONPointFromLatLng($[longitude], $[latitude])

4

 

Gadgets BDH y native BDTR