Consultas a Entidades con FlowEngine (Nodos Query Static y Query Dynamic)
Esta guía describe los nodos Query Static y Query Dynamic, mostrando ejemplos para cada uno. La metodología que sigue la guía es la creación de una ontología, definiciones de las consultas y creación del flujo en FlowEngine.
Creación de la Entidad (Ontología)
Empieza por crear una ontología llamada queryNoderedTest. Usando la opción Creación Paso a Paso, agrega el campo "campo", escriba cadena; y el campo "valor" de tipo número. Actualiza el esquema y genera la instancia.
JSON de la ontología queryNoderedTest
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "queryNoderedTest",
"type": "object",
"required": [
"queryNoderedTest"
],
"properties": {
"queryNoderedTest": {
"type": "string",
"$ref": "#/datos"
}
},
"datos": {
"description": "Info queryNoderedTest",
"type": "object",
"required": [
"field",
"value"
],
"properties": {
"field": {
"type": "string"
},
"value": {
"type": "number"
}
}
},
"description": "Creation of an ontology for the ues of query nodes in the Flow Engine.",
"additionalProperties": true
}Puedes insertar datos usando el CRUD de la propia ontología o usando el FlowEngine y su nodo Insert.
Definición de nodo Query Static
Una consulta estática se basa en la información añadida en el momento de la creación. Una vez establecidos los datos iniciales, los campos no se pueden modificar.
A través de este nodo se pueden realizar varios tipos de solicitudes, tanto de datos como de información, tales como: select, update y delete.
Propiedades del nodo
Name (Nombre): Campo opcional utilizado para identificar el nodo con un nombre específico.
Ontology (Ontología): Nombre de la ontología sobre la que deseas consultar, actualizar o eliminar datos.
Query Type (Tipo de consulta): Hay dos opciones dependiendo del tipo de base de datos con la que trabajes.
SQL
Nativo. Se usa si tienes una base de datos MongoDB.
Query (Consulta): Sentencia de consulta, actualización o supresión de datos, a poner en marcha.
Los datos de salida dependerán del tipo de consulta que se registre en el nodo.
Definición de nodo Query Dynamic
In a dynamic query, the information can be updated at any time. As with the static query, the requests that can be made are query, updated and deleted.
Propiedades del nodo
Name (Nombre): Campo opcional utilizado para identificar el nodo con un nombre específico.
Este nodo espera recibir información de una función, este código se pasará mediante el nodo function. Los parámetros que han de introducirse son:
Ontology (Ontología): Nombre de la ontología sobre la que deseas consultar, actualizar o eliminar datos.
Query Type (Tipo de consulta): Hay dos opciones dependiendo del tipo de base de datos con la que trabajes.
SQL
Nativo. Se usa si tienes una base de datos MongoDB.
Query (Consulta): Sentencia de consulta, actualización o supresión de datos, a poner en marcha.
Los datos de salida dependerán del tipo de consulta que se registre en el nodo.
Creación de flujo en FlowEngine
Flujo con Query Static
Empieza por crear un flujo con consulta estática. Los nodos a utilizar son:
Inject. Activa el flujo manualmente o a intervalos.
Query Static. Se usa para realizar la consulta con bases de datos estáticas.
Debug. Monitorea los mensajes.
Flujo de consulta, select.
Haz doble clic en el nodo estático de consulta para abrir la ventana correspondiente a la imagen de la derecha. Rellena estos campos:
Name: (Nombre): select query
Ontologies available (Ontologías disponibles): queryNoderedTest
Ontology (Ontología): queryNoderedTest
Query type (Tipo de consulta): SQL
Query (Consulta): select * from queryNoderedTest
En el nodo Debug, la opción msg. se cambia por el objeto msg completo. El resultado que se obtiene en el payload es un mensaje de texto con la información de la ontología. Si quieres convertirlo en un objeto, debes crear un objeto parse.
Flujo de actualización, update.
Haz doble clic en el nodo estático de consulta para abrir la ventana correspondiente a la imagen de la derecha. Rellena estos campos:
Name: (Nombre): update query
Ontologies available (Ontologías disponibles): queryNoderedTest
Ontology (Ontología): queryNoderedTest
Query type (Tipo de consulta): SQL
Query (Consulta): update queryNoderedTest set queryNoderedTest.value=24;
En el nodo Debug, la opción msg. se cambia por el objeto msg completo. El resultado que se obtiene en el payload es un contador con la cantidad de objetos que se han modificado. En este ejemplo, sólo se modifica un valor.
Flujo de borrado, delete.
Haz doble clic en el nodo estático de consulta para abrir la ventana correspondiente a la imagen de la derecha. Rellena estos campos:
Name: (Nombre): delete query
Ontologies available (Ontologías disponibles): queryNoderedTest
Ontology (Ontología): queryNoderedTest
Query type (Tipo de consulta): SQL
Query (Consulta): delete from queryNoderedTest where queryNoderedTest.value=24;
En el nodo Debug, la opción msg. se cambia por el objeto msg completo. El resultado que se obtiene en el payload es un contador con la cantidad de objetos que se han borrado. En este ejemplo, sólo se borraun valor.
Flujo con Query Dynamic
Empieza por crear un flujo con consulta dinámica. Los nodos a utilizar son:
Inject. Activa el flujo manualmente o a intervalos.
Function. Función JavaScript contra los mensajes recibidos por el nodo.
Query Static. Se usa para realizar la consulta con bases de datos estáticas.
Debug. Monitorea los mensajes.
En la ventana del nodo de consulta dinámica, introduce el nombre que recibirá el nodo, en este caso Dynamic query. Cambia además la opción Debug de msg a complete msg object.
En el nodo Función, escriben lo campos solicitados por la consulta dinámica, es decir: ontología, tipo de consulta y consulta; puedes asignar a este nodo un nombre, query node.
msg.ontology = 'queryNoderedTest';
msg.queryType = 'SQL';
msg.query = 'Select * from queryNoderedTest where queryNoderedTest.value='+msg.payload.value;
return msg;
En este caso la consulta se ha hecho con select pero, como en el caso estático, puedes escribir una consulta con update o delete.
Debes configurar el nodo Inject. En payload, elige la opción JSON e introduce los datos que deseas buscar. En el nodo Function, escribe msg.payload.filtro, para que, cuando se escriba el campo en Inject, se haga con filtro. El resultado sería: Payload: {"filtro": 28.6}.
In this case, the query has been done with select but, as in the static case, you can write a query with update or delete.
The Inject node needs to be configured. In payload, choose the JSON option and enter the data you want to search. In the Function node, msg.payload.filtro is written, so when writing the field in Inject it will be done with filtro. The result would be: Payload: {"filtro": 28.6}.
Nodo Inject
Nodo Function
Pulsa sobre Deploy y se ejecuta el flujo. El resultado que obtienes como payload es un conjunto vacío ya que el valor de la búsqueda, 28.6, no está incluido en los datos.