Mejoras en el Rules Engine
En la versión 3.0.0-Jailbreak de la Onesait Platform hemos incorporado algunas mejoras significativas en el Rules Engine, un motor de reglas que nos permite crear reglas de negocio.
A continuación os mostramos brevemente en qué consisten estas mejoras y os dejamos un video explicativo.
Soporte de tablas de decisión
Hasta ahora sólo era posible la creación de reglas definidas en lenguaje DRL (Drools Rule Language), pero a partir de esta versión también se podrán definir reglas basadas en DDT (Drools Decision Tables).
Las Tablas de Decisión en Drools tienen que estar definidas en formato Excel (*.XLS, *.XLSX), donde cada fila es una regla y cada columna en esa fila es una condición o acción para esa regla. Idealmente, las reglas se crean sin tener en cuenta el orden de las filas, lo que facilita su mantenimiento.
A continuación podemos ver un ejemplo de una tabla de decisión:
Podemos encontrar más información al respecto en este artículo de nuestro Portal del Desarrollador.
Soporte de consultas
Hasta ahora si queríamos realizar una consulta sobre una ontología desde una regla, teníamos que programar en DRL una llamada REST al IoTBroker de la Plataforma. Para mejorar esta funcionalidad, hemos añadido un nuevo Wrapper (QueryWrapper) que va a permitir ejecutar consultas de manera sencilla y totalmente transparente para el usuario, lo que supone una mejora significativa.
A continuación podemos ver un ejemplo de una regla definida en DRL que hace uso del nuevo QueryWrapper:
package com.minsait.onesait.platform.rulesengine;
import com.minsait.onesait.platform.rulesengine.model.OntologyJsonWrapper;
import com.minsait.onesait.platform.rulesengine.model.QueryWrapper;
global com.minsait.onesait.platform.rulesengine.model.OntologyJsonWrapper output;
dialect "mvel"
function Boolean existEmployee(Object id){
QueryWrapper queryWrapper = new QueryWrapper("employee", "select * from employee as c where c.employee.id = " + Integer.parseInt(id.toString()), "client", "917069adcdf94d96832e711acc9c6631", "http://localhost:19000");
queryWrapper.run();
return !queryWrapper.getQueryResult().isEmpty();
}
rule "Create new employee"
when
input: OntologyJsonWrapper()
eval( !existEmployee(input.getProperty("id")))
then
output.setRootNode("employee")
output.setProperty("id", input.getProperty("id"));
output.setProperty("rol", "Consultant");
end
Si queréis conocer en profundidad esta parte, os recomendamos este otro artículo del Portal del Desarrollador.
Mejoras en las pruebas
Por último, hemos habilitado una nueva funcionalidad en la parte de las pruebas de las reglas, donde a partir de ahora va a ser posible cargar un fichero JSON desde nuestro equipo local.
Todo esto lo tenemos explicado con detalle en este artículo.
YouTube | Release 3.0.0 Feature – Enhancements in the Rules Engine