Oracle Business Rules

Uno de los componentes que menos atención atrae en toda la Suite de Oracle SOA, es el Business Rules Engine.

En nuestro caso (S&P Solutions) hemos realizado proyectos donde el Business Rules ha sido una pieza clave, por lo que podemos hablar de cosas concretas en cuanto a su uso, complejidad  y valor en una implementación.

Este artículo es simplemente un resumen de cómo se representan las reglas y cómo utilizarlas.

El uso de Oracle Business Rules está orientado a poder expresar reglas bajo un patrón muy simple, básicamente:

SI <alguna condición > THEN

<realiza una acción/asigna valores>

Todos se puede expresar bajo un patrón IF-----THEN

En donde la condición puede ser tan simple como comparar valores, como poder ejecutar algún procedimiento, que a su vez regrese un valor, para ser comparado posteriormente.

Las reglas son agrupadas en conjuntos, que son nombrados como juegos de reglas, o Rule Sets. Estos juegos ejecutan las reglas de contienen de manera ligada, por lo que siempre es recomendable poder identificar las reglas a ejecutar para poderlas agrupar y su ejecución pueda ser determinada en conjunto.

Por ejemplo:

clip_image002

Aquí se muestra 1 juego de reglas llamado Ruleset_1, que contiene cinco reglas.

Esas cinco reglas se ejecutarán de manera encadenada y el resultado de una puede ser ligada con la posterior.

Adentro de cada una de esas reglas, existen expresiones similares a la siguiente:

clip_image003

La condición y acción a tomar se puede representar de la siguiente manera:

clip_image005

Simplemente leemos que si el gasto Anual es mayor a 2000 pesos, entonces la orden del cliente es tomada como Alta.

Otra punto importante a destacar es la prioridad que tendrá la regla para ejecutarse:

clip_image007

Claro está que el engine pude expresar reglas mucho mas complejas, como:

clip_image009

Aquí vemos que la regla primer evalúa si es una Orden, y después con expresiones tipo case, va decidiendo cuál es la condición que cumple, y si lo hace, entonces estable un valor para el descuento.

Otro factor importante a expresar es la validez de la regla. Por default, la regla será válida, sin embargo , también es factible establecer el tiempo en el cual la regla será válida. Por ejemplo:

clip_image010

Otra forma de expresar las reglas, es usando una tabla de decisión. En ocasiones esto es mucho mas efectivo y práctico, porque se puede expresar fácilmente en cualquier hoja de cálculo, y posteriormente hacer una traducción a la herramienta. En ocasiones, esto facilita la expresión de las reglas.

Por ejemplo, la siguiente tabla.

Estas reglas lo que expresan es si un conductor es elegible para poderle otorgar una Licencia.

Se evalúa la edad, y si ya tomó un entrenamiento. En base a las opciones, entonces se establece una acción:

clip_image012

En este siguiente ejemplo vemos cómo hay mas condiciones, que son expresadas en la columna de la izquierda, y a su vez las Reglas que son el resto de columnas hacia la derecha. Finalmente vemos las Acciones en la parte inferior:

clip_image013

Por lo que , en conclusión, la sintaxis con la cual se pueden expresar las reglas, para que posteriormente sean tomadas como base para una implementación usando Oracle Business Rules, puede ser algo muy simple con patrones: IF----THEN. O bien creando tablas de decisión.

¿De qué depende la utilización de una u otra alternativa? Realmente dependerá de la simpleza de las acciones y de las condiciones, así como del volumen de éstas últimas. Si el volumen es mayor a tres condiciones, recomendaría el uso de una tabla.