Un motor de reglas de negocio es un sistema de software que ejecuta una o más reglas de negocio en un entorno de producción . Estas reglas pueden provenir de normativas legales («Un empleado puede ser despedido por cualquier motivo o sin motivo alguno, pero no por una causa ilegal»), políticas de la empresa («Todos los clientes que gasten más de 100 dólares en una sola compra recibirán un 10 % de descuento») u otras fuentes. Un sistema de reglas de negocio permite definir, probar, ejecutar y mantener estas políticas de la empresa y otras decisiones operativas de forma independiente del código de la aplicación .
Los motores de reglas suelen admitir reglas, hechos, prioridad (puntuación), exclusión mutua, precondiciones y otras funciones.
El software de motor de reglas se suele proporcionar como un componente de un sistema de gestión de reglas de negocio que, entre otras funciones, ofrece la capacidad de: registrar, definir, clasificar y gestionar todas las reglas, verificar la coherencia de las definiciones de las reglas ("Los clientes de nivel Oro tienen derecho a envío gratuito cuando la cantidad del pedido es > 10" y "la cantidad máxima de pedido para los clientes de nivel Plata es = 15"), definir las relaciones entre las diferentes reglas y relacionar algunas de estas reglas con las aplicaciones de TI que se ven afectadas o necesitan aplicar una o más de las reglas.
Caso de uso de TI
En cualquier aplicación informática , las reglas de negocio pueden cambiar con mayor frecuencia que otras partes del código. Los motores de reglas o de inferencia funcionan como componentes de software integrables que ejecutan reglas de negocio externalizadas o separadas del código de la aplicación. Esta externalización o separación permite a los usuarios modificar las reglas sin necesidad de intervención del departamento de TI . El sistema en su conjunto se adapta con mayor facilidad gracias a estas reglas de negocio externas, pero esto no elimina los requisitos habituales de control de calidad y otras pruebas.
Historia
Un artículo en Computerworld rastrea los motores de reglas hasta principios de la década de 1990 y a productos de empresas como Pegasystems , Fair Isaac Corp, ILOG [ 1 ] y eMerge [ 2 ] de Sapiens .
Estrategias de diseño
Los esfuerzos de muchas organizaciones en materia de reglas combinan aspectos de lo que generalmente se considera diseño de flujo de trabajo con el diseño de reglas tradicional. Esta falta de separación entre ambos enfoques puede generar problemas con la capacidad de reutilizar y controlar tanto las reglas de negocio como los flujos de trabajo. Los enfoques de diseño que evitan este dilema separan el rol de las reglas de negocio y los flujos de trabajo de la siguiente manera: [ 3 ]
- Las reglas de negocio generan conocimiento;
- Los flujos de trabajo realizan tareas empresariales.
En concreto, esto significa que una regla de negocio puede detectar una situación empresarial y generar un evento (normalmente transmitido a través de una infraestructura de mensajería) o crear conocimiento empresarial de nivel superior (por ejemplo, evaluar la serie de reglas organizativas, de producto y normativas relativas a si un préstamo cumple o no con los criterios de concesión de crédito). Por otro lado, un flujo de trabajo respondería a un evento que indicara, por ejemplo, la sobrecarga de un punto de enrutamiento, iniciando una serie de actividades.
Esta separación es importante porque un mismo criterio empresarial (la hipoteca cumple con los criterios de evaluación crediticia) o evento empresarial (el enrutador está sobrecargado) puede ser gestionado por diversos flujos de trabajo. Integrar el trabajo realizado en respuesta a la creación de conocimiento basada en reglas dentro de la propia regla reduce considerablemente la posibilidad de reutilizar las reglas de negocio en toda la organización, ya que las hace específicas para cada flujo de trabajo.
Para crear una arquitectura que emplee un motor de reglas de negocio, es fundamental establecer la integración entre una plataforma de gestión de procesos de negocio ( BPM ) y una plataforma de gestión de reglas de negocio ( BRM ), basada en procesos que responden a eventos o analizan decisiones empresariales definidas por reglas de negocio. Existen algunos productos en el mercado que ofrecen esta integración de forma nativa. En otros casos, este tipo de abstracción e integración deberá desarrollarse dentro de un proyecto u organización específicos.
La mayoría de los motores de reglas basados en Java proporcionan una interfaz técnica a nivel de llamada, basada en el estándar de interfaz de programación de aplicaciones (API) JSR-94 , para permitir la integración con diferentes aplicaciones, y muchos motores de reglas permiten integraciones orientadas a servicios a través de estándares basados en la web como WSDL y SOAP .
La mayoría de los motores de reglas permiten desarrollar una abstracción de datos que representa las entidades y relaciones de negocio sobre las que se deben escribir las reglas. Este modelo de entidad de negocio suele poder poblarse a partir de diversas fuentes, como XML , POJO , archivos planos , etc. No existe un lenguaje estándar para escribir las reglas. Muchos motores utilizan una sintaxis similar a la de Java , mientras que otros permiten definir lenguajes personalizados y adaptados a las necesidades del negocio.
La mayoría de los motores de reglas funcionan como una biblioteca invocable. Sin embargo, cada vez es más común que se ejecuten como un proceso genérico, similar al comportamiento de los sistemas de gestión de bases de datos relacionales (RDBMS ). La mayoría de los motores tratan las reglas como una configuración que se carga en su instancia de proceso, aunque algunos son generadores de código para toda la instancia de ejecución de reglas y otros permiten al usuario elegir.
Tipos de motores de reglas
Existen varios tipos diferentes de motores de reglas. Estos tipos (generalmente) se diferencian en la forma en que se programa la ejecución de las reglas.
La mayoría de los motores de reglas utilizados por las empresas son de encadenamiento hacia adelante , que a su vez se pueden dividir en dos clases:
- La primera clase procesa las llamadas reglas de producción/ inferencia . Este tipo de reglas se utilizan para representar comportamientos del tipo SI condición ENTONCES acción. Por ejemplo, una regla de este tipo podría responder a la pregunta: "¿Debería concederse una hipoteca a este cliente?" ejecutando reglas del tipo "SI alguna-condición ENTONCES conceder-una-hipoteca-al-cliente".
- El otro tipo de motor de reglas procesa las llamadas reglas de acción basadas en reacciones o condiciones de eventos . Los motores de reglas reactivos detectan y reaccionan a los eventos entrantes y procesan patrones de eventos. Por ejemplo, un motor de reglas reactivo podría usarse para alertar a un gerente cuando ciertos artículos están agotados.
La principal diferencia entre estos tipos radica en que los motores de reglas de producción se ejecutan cuando un usuario o aplicación los invoca, generalmente sin estado. Un motor de reglas reactivo reacciona automáticamente cuando ocurren eventos, generalmente con estado. Muchos (y de hecho la mayoría) de los motores de reglas comerciales más populares cuentan con capacidades tanto para reglas de producción como de reacción, aunque pueden priorizar una sobre la otra. Por ejemplo, la mayoría de los motores de reglas de negocio son principalmente motores de reglas de producción, mientras que los motores de reglas de procesamiento de eventos complejos se centran en las reglas de reacción.
Además, algunos motores de reglas admiten el encadenamiento hacia atrás . En este caso, un motor de reglas busca resolver los hechos para que se ajusten a un objetivo específico. A menudo se le denomina orientado a objetivos porque intenta determinar si algo existe basándose en la información existente.
Otro tipo de motor de reglas alterna automáticamente entre el encadenamiento hacia atrás y hacia adelante varias veces durante una ejecución de razonamiento, por ejemplo, el sistema de lógica empresarial de Internet, que se puede encontrar buscando en la web.
Una cuarta clase de motor de reglas podría denominarse motor determinista. Estos motores de reglas pueden prescindir tanto del encadenamiento hacia adelante como del encadenamiento hacia atrás, y en su lugar utilizan enfoques de lenguaje específico del dominio para describir mejor las políticas. Este enfoque suele ser más fácil de implementar y mantener, y ofrece ventajas de rendimiento sobre los sistemas de encadenamiento hacia adelante o hacia atrás.
En ciertas circunstancias, la inferencia basada en lógica difusa puede ser más apropiada, empleando heurísticas en el procesamiento de reglas en lugar de reglas booleanas. Algunos ejemplos incluyen la clasificación de clientes, la inferencia de datos faltantes, el cálculo del valor del cliente, etc. El lenguaje DARL [ 4 ] y su motor de inferencia y editores asociados son un ejemplo de este enfoque.
Motores de reglas para el control de acceso/autorización
Un caso de uso común para los motores de reglas es el control de acceso estandarizado a las aplicaciones. OASIS define una arquitectura y un estándar de motor de reglas dedicados al control de acceso llamado XACML (Lenguaje de Marcado de Control de Acceso Extensible). Una diferencia clave entre un motor de reglas XACML y un motor de reglas de negocio es que un motor de reglas XACML no tiene estado y no puede cambiar el estado de ningún dato. El motor de reglas XACML, llamado Punto de Decisión de Política (PDP), espera una pregunta binaria de Sí/No, por ejemplo, "¿Puede Alice ver el documento D?", y devuelve una decisión, por ejemplo, Permitir/Denegar.
Véase también
Referencias
- ↑ "¿Sabe dónde están todas las reglas de negocio de su empresa?" . Computerworld . 39 (21). IDG Enterprise (publicado el 23-05-2005): 25. 23 de mayo de 2005. ISSN 0010-4841 . Recuperado el 02-02-2014 .
Los motores de reglas existen desde principios de la década de 1990, cuando empresas como Pegasystems Inc. en Cambridge, Massachusetts, Fair Isaac Corp. en Minneapolis e ILOG en Mountain View, California, los vendían. Normalmente se utilizaban en industrias con muchas reglas, como las finanzas y los seguros. Sin embargo, en los últimos años, muchos proveedores han entrado en el mercado y más empresas están viendo los motores de reglas como una forma de obtener mayor flexibilidad en las operaciones comerciales.
- ↑ "Plataforma de desarrollo de software basada en reglas eMerge" .
- ↑ ¿ Su motor de reglas está basado en eventos? Obtenido de http://www.sapiens-tech.com/iDuneDownload.dll?GetFile?AppId=225&FileID=216581&Anchor=&ext=.pdf Archivado el 30 de septiembre de 2018 en Wayback Machine .
- ↑ "El idioma DARL" . Archivado del original el 1 de septiembre de 2018. Consultado el 1 de septiembre de 2018 .
Bibliografía
- Taylor, James; Raden, Neil (2007). Sistemas (suficientemente) inteligentes. Prentice Hall. ISBN 0-13-234796-2.
- David Linthicum (14 de febrero de 2007). "Motores de reglas y SOA". InfoWorld, 14 de febrero de 2007. Recuperado el 23 de septiembre de 2009 de http://www.infoworld.com/d/architecture/rules-engines-and-soa-158 .
Enlaces externos
- ¿Cuáles son las directrices para decidir si se debe utilizar un motor de reglas?
- Motores de reglas
- Sistemas de apoyo a la toma de decisiones
- Sistemas expertos