Skip navigation

Category Archives: rules-engine

Hay dos maneras de modelar un proceso de negocio: con un paradigma imperativo o declarativo. El primero utiliza un grafo que representa el orden o flujo de las tareas a realizar. El segundo es utilizando un conjunto de reglas que describen la relación entre las tareas.

El reto para los desarrolladores es entender el proceso y hacer la implementación de una solución con el paradigma adecuado. Si un procesos de negocio que no tiene una secuencia definida se implementa con BPM o BPEL, puede acabar con un grafo con cientos o miles de nodos y bifurcaciones (para un ejemplo ver figura de abajo), lo que lo haría difícil de mantener.

click para agrandar

Por otro lado, no es recomendable modelar con reglas un flujo con una secuencia fija de acciones.

Read More »

En  Give Your Business Logic a Framework with Drools se encuentra un buen ejemplo:

        if ((user.isMemberOf(AdministratorGroup) && user.isMemberOf(teleworkerGroup)) ||
                user.isSuperUser() {
            // more checks for specific cases
            if ((expenseRequest.code().equals("B203") ||
                    (expenseRequest.code().equals("A903") && (totalExpenses < 200) &&
                            (bossSignOff > totalExpenses)) && (deptBudget.notExceeded)) {
                // issue payments
            }
            else if {
                // check lots of other conditions
            }
        }
        else {
            // even more business logic
        }
    }

Este extracto de código muestra que las reglas son difíciles de programar y mantener en Java. Un problema potencial puede ser la frecuencia de cambio de las reglas, para este ejemplo, que los roles y los códigos cambien frecuentemente. Para aplicar un cambio de esta clase implica por lo menos modificar el código, compilar e instalar la aplicación, pudiendo llevar horas o días. Una forma de evitar este proceso es tener separadas las reglas de negocio del código y una manera efectiva de hacerlo es utilizando un motor de reglas.

En su forma más simple, un motor de reglas de negocio está compuesto de tres elementos: un conjunto de reglas, la base de conocimientos (conocida como área de trabajo) y el procesador de reglas. Las reglas son sentencias de la forma IF-THEN, de tal manera que si se cumplen todas las condiciones del IF se ejecutan todas las acciones del THEN. El motor utilizará la base de conocimientos para decidir que reglas deben activarse.
Read More »

Follow

Get every new post delivered to your Inbox.