Mejores prácticas de BRMS

descrIPcIón detallada de la tecnología
red Hat JBoss BrMs
y JBoss BPM suIte
Prácticasrecomendadas
IntroduccIón
Másinformaciónacercade
RedHatJBossBPMSuite
Expertos empresariales y desarrolladores de aplicaciones en organizaciones de todos los
tamaños necesitan poder modelar, automatizar, medir y mejorar sus procesos y políticas
críticos. Esto es posible con Red Hat® JBoss® BRMS gracias a la integración total de
funciones de administración de reglas comerciales (BRM) y procesamiento de eventos
complejos (CEP).1
Red Hat JBoss BPM Suite es una plataforma integral para la gestión de procesos comerciales
(BPM) que se puede implementar en entornos físicos, virtuales, móviles y de nube. Incluye
todas las reglas empresariales y capacidades de procesamiento de eventos complejos (CEP)
de JBoss BRMS, junto con herramientas avanzadas y soporte de tiempo de ejecución para el
modelo de procesos empresariales y los procesos empresariales compatibles con Notation
v2.0 (BPMN2). 2
En el resto del documento solo se hará referencia a JBoss BPM Suite, ya que incluye todas las
funciones de JBoss BRMS, un "súper conjunto" que cuenta con todas las prestaciones que se
describen en el presente artículo (reglas, eventos y procesos).
Este artículo proporciona información sobre el proceso de creación de reglas. También
muestra cómo JBoss BPM Suite puede ayudarle a escalar aplicaciones basadas en reglas, a
fin de poder gestionar las necesidades de proyectos empresariales presentes y futuras. Se
analizarán tanto las aplicaciones basadas en procesos como las basadas en reglas.
Este documento presupone conocimientos prácticos de JBoss BPM Suite y no detalla los
conceptos básicos. Resulta útil contar con formación previa en arquitectura de software,
ya que este artículo describe las decisiones de diseño y los procesos para garantizar la
escalabilidad de los proyectos conforme avanza la creación de la arquitectura de empresa.
Procesos
Examinemos con más detalle un típico entorno empresarial. Podemos ir profundizando por
capas para comprender mejor cómo proporcionamos proyectos BPM aptos para escalar. La
Ilustración 1 muestra que existen varias capas de componentes:
•Capa de inicialización
•Capa de implementación
•Capa de interacción
facebook.com/redhatinc
@redhatnews
linkedin.com/company/red-hat
redhat.com
1 Red Hat JBoss BRMS, http://www.redhat.com/products/jbossenterprisemiddleware/business-rules
2 Red Hat JBoss BPM Suite, http://www.redhat.com/products/jbossenterprisemiddleware/business-process
En la capa de inicialización se recopilan datos y se introducen en los procesos. Se describirán algunas
prácticas recomendadas para usted y sus clientes, y cómo iniciar procesos de forma escalable.
La capa de implementación es donde se realiza el mantenimiento de los procesos, con la ayuda del
repositorio de procesos, de herramientas, de los usuarios empresariales y de los desarrolladores
que los diseñan. Además aquí encontrará detalles sobre diversas implementaciones, como las
ampliaciones específicas de dominios para determinados tipos de nodos en nuestros proyectos.
La capa de interacción es donde los procesos se conectan con todos los sistemas heredados,
sistemas de gestión interna, capas de servicios y sistemas de reglas, incluidos los sistemas y
servicios de terceros.
Arquitectura BPM
Capa de interacción
REGLAS
EJB/POJO
ESB
Servicios web
Capa de implementación del proceso
Tareas humanas
Informes de la
consola JBPM,
paneles BAM
EJB/POJO
Repositorio de procesos
Colas
Capa de
inicialización
de proceso
Creación de BPMN2
para usuarios
empresariales
Cliente
Creación de BPMN2
para desarrolladores
Desarrollador
JB0013
Ilustración 1. Capas de arquitectura BPM
caPa de InIcIalIzacIón
Durante los últimos diez años, hemos ido recopilando las prácticas recomendadas para la
inicialización de procesos de diferentes empresas de gran tamaño (financieras, minoristas,
logísticas, de seguros). Las empresas de éxito reúnen los datos de clientes, usuarios o del
sistema que necesitan para iniciar el proceso y, a continuación, introducen esos datos mediante
startProcess. Este paso se puede integrar en la aplicación utilizando la API de JBoss BPM Suite,
el servicio RESTful o una solicitud de servicio web de Java™ estándar.
Independientemente del modo en que recopile los datos necesarios para inicializar sus
procesos, querrá determinar cómo escalar la configuración de inicialización desde el principio.
Los proyectos en un principio y con bastante frecuencia, se inician sin pensar mucho en las
necesidades que puedan hacer falta en un futuro, lo que puede suponer problemas a la hora de
escalar.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
2
ClienteS
Cuando se habla del cliente, podemos estar refiriéndonos a una
persona, a un sistema o a un usuario que proporciona datos de inicio
para el proceso inicial. La Ilustración 2 ofrece un resumen general
sobre la forma en que los clientes proporcionan datos de procesos
que, a continuación, se empaquetan en una solicitud que se sitúa en
una de las colas de procesos. Desde las colas, podemos priorizar y
dejar que los diferentes mecanismos sean los que recopilen estas
solicitudes de procesos e inicien una instancia de proceso con los
datos de solicitud proporcionados. Aquí mostramos Enterprise
JavaBeans (EJB), beans controlados por mensajes (MDB) y nubes,
que representan algunas de las formas de programación que se
podrían utilizar para vaciar las colas de procesos.
EJB/POJO
Colas
Capa de
inicialización
de proceso
ColaS
JB0014
Ilustración 2: Inicialización
de proceso escalable.
Las colas pueden ser tan sencillas como las tablas de las bases
de datos o tan elaboradas como las colas de mensajes. Se pueden
configurar de la forma que mejor se ajuste al proyecto como, por
ejemplo, siguiendo el modelo LIFO (último en entrar, primero en
salir) o el modelo FIFO (primero en entrar, primero en salir). La
ventaja de utilizar colas de mensajes es que puede priorizarlos
siguiendo un mecanismo de sondeo.
El motivo para optar por esta configuración es doble. En primer
lugar, al no iniciar directamente el proceso desde la interfaz de cliente, se está garantizando la
continuidad de la solicitud, ya que no se perderá en su ruta al motor de procesos. En segundo
lugar, tendrá la opción de priorizar los procesos futuros que podrían no satisfacer los requisitos
del proyecto. Por ejemplo, piense en una nueva solicitud de proceso que deba iniciarse 10
segundos después del envío por parte del cliente. Si ese proceso de 10 segundos se coloca al final
de una cola de una hora, supondrá un problema. Con la priorización de las colas, podrá ajustar su
mecanismo de sondeo para activar las colas adecuadas en el orden adecuado cada vez.
JavaylanuBe
Los iconos de nube representan los servicios que puede utilizar el software para invocar al
método startProcess final con el fin de inicializar la instancia del proceso que se solicita y de
transferirle los datos iniciales. Centralizar esta interacción con la API principal de JBoss BPM
Suite resulta clave para crear un único servicio que garantice el mínimo trabajo en caso de que
se deba modificar la API, cuya versión podría desear cambiar por migraciones de versión o
proyectos de ampliación con el fin de ampliar la interacción del servicio con jBPM.
CaPadeiMPleMentaCión
Esta capa se centra en los diseños del proceso empresarial, las implementaciones de acciones
personalizadas en los procesos y las ampliaciones de las formas en que trabaja con los procesos.
La adopción del estándar BPMN2 para el diseño y la ejecución de procesos ha simplificado la
construcción en esta capa de la arquitectura BPM. Los motores de procesos se ven obligados
a cumplir el estándar BPMN2, lo cual impone limitaciones en lo que se puede hacer durante el
diseño de los procesos.
En JBoss BPM Suite, el concepto de sesiones con estado le ayudará a construir arquitecturas de
procesos altamente escalables. Las sesiones con estado mantienen la información de procesos,
tanto los datos como una instancia de la especificación del proceso.
Normalmente, al ejecutar aplicaciones basadas en reglas, se ejecuta una única sesión (pero
no una con estado) con todas las reglas y los datos que utiliza dicha sesión. Así que buscamos
utilizar una única sesión con estado por instancia de proceso también. Para ello, podemos ajustar
nuestras implementaciones para utilizar una única sesión con estado por instancia, permitiendo
así la simultaneidad y facilitando la gestión del ciclo de vida de la instancia del proceso.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
3
CaPadeinteRaCCión
Son muchas las ventajas que ofrece el contar con una buena estrategia de acceso a la lógica
empresarial, a los distintos sistemas (de backend o de gestión interna), las interfaces de usuario,
los servicios de terceros o a cualquier otra aplicación o recurso que precise de procesos
empresariales para realizar el trabajo.
Muchas empresas aíslan estas interacciones con una capa de servicios dentro de una
arquitectura orientada a servicios (SOA). Esta SOA aporta flexibilidad y permite el escalado en
las distintas cargas de trabajo que se pueda encontrar.
Nos gustaría analizar algunos sistemas de backend a modo de ejemplo para ver cómo optimizar
los proyectos de procesos en su empresa.
Por ejemplo, la arquitectura de JBoss BPM Suite incluye un servidor de tareas humanas
independiente que se ejecuta como un servicio y que implementa la especificación Web ServicesHuman Task (WS-HumanTask). Puede alojar otro servidor en su empresa exponiendo el ciclo de
vida de WS-HumanTask en un servicio.
El componente de supervisión de la actividad empresarial (BAM) está configurado para ser
autosuficiente y acceder a las fuentes de datos directamente, en función de la configuración del
usuario. Le permite diseñar y crear todo tipo de informes útiles, además de configurar colas o
productores de eventos de una forma sencilla.
reglas
A diferencia de BPM, que se centra en el modelado de secuencias de acciones con flujos bien
definidos, las tecnologías de gestión de reglas comerciales (BRM) son más adecuadas para las
acciones de modelado sin conexión directa y que se activan mediante escenarios. Para entender
mejor este concepto, basta con recordar que el caso de uso más común para la implementación
de reglas es la gestión de decisiones.
La gestión de decisiones consiste en la externalización y consolidación de todas las reglas
y variables (o datos) implicadas en la toma de decisiones para un dominio dado, así como
su gestión. Estas reglas consolidadas se ponen a disposición de las aplicaciones a través de
servicios de decisión y se puede gestionar, auditar y mantener de forma centralizada. Consolidar
reglas y variables de este modo supone atribuirles un ciclo de vida independiente de las
aplicaciones del usuario, además de disfrutar de otras ventajas.
oBJetivoS
Las organizaciones adoptan la gestión de reglas comerciales para aplicaciones a fin de lograr
numerosos y variados objetivos, entre otros:
laautomatizacióndelasdecisiones: la primera ventaja y la más obvia es la automatización de
las decisiones en la aplicación empresarial. Las decisiones operativas ocupan la mayor parte
del tiempo en cualquier entorno empresarial a diario. Y no nos estamos refiriendo a decisiones
estratégicas a largo plazo que requieren de la intervención humana. La realidad es que la inmensa
mayoría de las decisiones operativas de un entorno empresarial se pueden automatizar para
reducir así los tiempos de respuesta y mejorar el rendimiento empresarial. Así se logra mayor
calidad y coherencia, así como la posibilidad de auditar los procesos de toma de decisiones a lo
largo del tiempo.
expresividadyvisibilidad: por lo general, los motores de reglas empresariales (BRE)
proporcionan metáforas y lenguajes de nivel superior para la creación de reglas. Al utilizar estas
representaciones de alto nivel, las reglas son cada vez más concisas, lo cual facilita los procesos
de comprensión y validación de estas por parte de los usuarios empresariales. Además permite a
los usuarios empresariales crear ellos mismos las reglas.
Rendimientoyescalabilidad: BRE cuenta con algoritmos especializados para la compilación
y ejecución de reglas. Estos algoritmos funcionan mejor que las reglas codificadas de forma
manual y garantizan la optimización de la búsqueda de soluciones por parte del motor de reglas.
BRMS puede ejecutar y escalar cientos de miles de reglas sin problemas.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
4
Centralizacióndelconocimiento: al externalizar y consolidar las reglas, las empresas pueden
garantizar la correcta implementación de las mismas y su compatibilidad con todas las
aplicaciones que las utilizan. Esta arquitectura también promueve la clara separación entre
lógica, datos y tareas, lo que permite a la empresa aumentar la agilidad y reducir el tiempo
de comercialización. Por último, al tener centralizados los conocimientos empresariales, el
cumplimiento y la optimización se pueden auditar con más facilidad.
aPlIcacIones coMPatIBles con Bre
El desarrollo de aplicaciones compatibles con BRE no difiere en gran medida del desarrollo de
aplicaciones tradicionales. Pese a no ser tan distintos, existen algunas prácticas recomendadas que
se pueden seguir para aprovechar al máximo las ventajas que ofrecen las herramientas de BRMS.
aRquiteCtuRa
ParticióndelabaseKie
Una base Knowledge is everything (KIE), o KieBase, normalmente contiene recursos como reglas,
procesos y modelos de dominio relacionados con un tema, entidad de negocio o unidad de trabajo.
Saber realizar la partición de los activos de estas KieBase puede afectar en gran medida a la
solución. Las herramientas de BRMS funcionan mejor para la optimización de conjuntos de reglas
que para la optimización de reglas individuales. Cuanto mayor sea el conjunto de reglas, mejores
serán los resultados en comparación con los que tendría el mismo conjunto de reglas dividido en
varios conjuntos de reglas.
Aun así, aumentar el conjunto de reglas incluyendo reglas no relacionadas tiene el efecto
contrario: el motor no puede optimizar las reglas independientes y la aplicación debe hacer
frente a la sobrecarga de lógica adicional. La primera práctica recomendada es realizar la
partición de KieBases implementando solo las reglas relacionadas en una única KieBase. Evite
utilizar KieBases monolíticas y KieBases detalladas.
PaRtiCióndeSeSioneSKie
La creación de sesiones Knowledge is everything, o KieSessions, apenas supone rendimiento
adicional. Normalmente, los sistemas BRMS escalan mejor cuando aumenta el número de reglas
y peor si aumenta el volumen de datos (hechos). Es decir, las KieSessions de menor tamaño son
mejores para el rendimiento general del sistema.
Las sesiones individuales también son fáciles de realizarse en paralelo, por lo que un sistema con
varias sesiones escalará mejor en hardware con varios procesadores. Además, debemos reducir
al mínimo la fragmentación de datos o hechos. Incluya solo los hechos relacionados en la misma
sesión con las reglas relacionadas. Los datos suelen hacer referencia a una transacción, a un
servicio o a una unidad de trabajo. Al crear una sesión, es preferible agregar todos los hechos a
la sesión en un lote y, a continuación, activar las reglas, en lugar de agregar hechos individuales y
activar las reglas después de cada adición.
diSeñodeModelodedoMinio
Un BRE se asemeja en muchos aspectos a una base de datos, desde los algoritmos de relaciones
subyacentes hasta las optimizaciones como, por ejemplo, la indexación de datos. Esta es la razón
por la que muchas de las prácticas recomendadas para el uso de bases de datos también se
aplican a los BRE.
Una de las más importantes consiste en diseñar cuidadosamente el modelo de dominio. La
calidad del modelo de dominio es directamente proporcional al rendimiento y la facilidad de
mantenimiento de las reglas. Un modelo de dominio mal diseñado no solo afecta al tiempo de
ejecución del motor, sino que además incrementa el tiempo y los costes. Las reglas son mucho
más difíciles de crear y mantener a lo largo del tiempo.
Un buen modelo de dominio representa las relaciones entre varias entidades de la forma más simple
posible. Los modelos más planos, por lo general, facilitan la escritura de restricciones, mientras que
las entidades de menor tamaño (entidades con pocos atributos) ayudan a evitar los bucles.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
5
CReaCióndeReglaS
olvídesedelmicrocontrol
Las reglas deben ejecutar acciones basadas en escenarios; esta es la condición para las reglas.
Siguiendo este sencillo principio, las reglas se mantienen sin conexión directa. Esto permite a los
desarrolladores de reglas gestionarlas de forma individual.
Los motores de reglas optimizan aún más las reglas disociadas. Las estrategias de resolución
de conflictos como la prominencia, los grupos de agenda o los flujos de reglas solo se utilizan
cuando hay que organizar conjuntos de reglas, nunca reglas individuales.
nosobrecarguelasreglas
Cada regla debe describir una asignación entre un escenario y una lista de acciones. No intente
sobrecargar la reglas con varios escenarios, ya que esto dificultará su mantenimiento a largo
plazo. Aumentará además la complejidad de las pruebas y vinculará innecesariamente escenarios.
Utilice las capacidades de inferencia y encadenamiento del motor para modelar escenarios
complejos mediante la división en varias reglas. El motor compartirá las condiciones comunes
entre los diferentes escenarios y así el rendimiento no se verá afectado. Por ejemplo:
Regla "1: Los adolescentes y los jubilados obtienen un descuento"
si
La persona tiene entre 16 y 18 años o si tiene 65 años o más
entonces
Asignar un 25 % de descuento
fin
Regla "2: Los jubilados pueden comprar entradas para la zona A"
si
La persona tiene 65 años o más
entonces
Permitir la venta de entradas para la zona A
fin
Las anteriores reglas están sobrecargadas. Ambas definen políticas sobre lo que es un jubilado,
así como las acciones que se deben realizar para ellos. Suponga que la empresa cuenta con 1000
reglas que se aplican a personas jubiladas y que para cada regla es necesario activar la condición
"La persona tiene 65 años o más".
Imagine ahora que la política de la empresa para personas jubiladas o la legislación
gubernamental sobre dicha materia cambian, y se pasa a considerar como jubilado a una persona
a partir de los 60 años. Este simple cambio en la política implicaría una modificación en cada una
de las 1000 reglas existentes, por no mencionar los cambios en los escenarios de prueba o en los
informes, por citar alguno.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
6
Una forma mucho más práctica de crear las mismas reglas sería contar con una para definir lo
que es una persona jubilada y otra para definir lo que es un adolescente. Una vez hecho esto, se
utilizarían los datos inferidos en el resto de reglas que necesitaran seleccionar bien adolescentes
o bien jubilados Por ejemplo:
Regla "0: Los adolescentes tienen entre 16 y 18 años" Regla "0.b: Los
jubilados tienen más de 65 años"
si
La persona tiene entre 16 y 18 años de edad
entonces
Afirmación: La persona se considera adolescente
fin
regla "0.b: Los jubilados tienen más de 65 años"
si
La persona es mayor de 65 años
entonces
Afirmación: La persona se considera persona jubilada
fin
Regla "1: Los adolescentes y los jubilados obtienen un descuento"
si
Adolescente o jubilado
entonces
Asignar un 25 % de descuento
fin
Cuando se crean reglas como estas, el usuario se beneficia de las capacidades de inferencia del
motor, además de conseguir reglas más fáciles de entender y de mantener. Además, si en algún
momento la política sobre jubilados cambiara, la modificación simplemente afectaría a una regla,
y no a 1000. Es decir, se reducirían drásticamente los costes y la complejidad.
loshechosdecontrolnosoneficaces
Los hechos de control son hechos introducidos en el dominio y utilizados en las reglas con el
único fin de controlar explícitamente la ejecución de las reglas. Son arbitrarios, no representan
ninguna entidad en el dominio y normalmente se utilizan como la primera condición de la
regla. Los hechos de control se utilizan bastante en motores que no cuentan con estrategias de
resolución de conflictos tan sólidas y expresivas como JBoss BPM Suite. Los hechos de control
presentan muchos inconvenientes. Por ejemplo, pueden:
•Conllevar el microcontrol de ejecuciones de reglas
•Provocar enormes ráfagas de trabajo con activaciones y cancelaciones de reglas innecesarias.
•Degradar la visibilidad y expresividad de las reglas, lo que dificulta la comprensión y la
creación de dependencias entre reglas por parte de otros usuarios.
•No ser eficaces
Se debe evitar el uso de hechos de control. Existe un caso en el que su uso es aceptable
y es para evitar realizar una costosa operación conjunta que no debe suceder hasta que se
cumpla una condición determinada.
redhat.com
Descripción DetallaDa De la tecnología Red Hat JBoss BRMS y JBoss BPM Suite
7
descrIPcIón detallada de la tecnologíaRedHatJBossBRMSyJBossBPMSuite
lateCnologíaadeCuadaPaRaeltRaBaJoaPRoPiado
acerca de red Hat
Red Hat es el proveedor
líder de soluciones de código
abierto que utiliza un enfoque
impulsado por la comunidad
para proporcionar tecnologías
fiables y de alto rendimiento de
cloud computing, virtualización,
almacenamiento, Linux
y middleware. Red Hat también
ofrece servicios galardonados
de soporte, capacitación
y consultoría. Es una empresa
S&P con más de 80 oficinas
en todo el mundo que ayuda
a los clientes a impulsar sus
negocios.
NORTEAMÉRICA
1 888 REDHAT1
JBoss BPM Suite incluye numerosas características avanzadas que ayudan a los usuarios y
creadores de reglas a ir dando forma a su negocio. Por ejemplo, si alguien necesita consultar
datos de sesión para tomar una decisión o para devolver los datos a la aplicación, el usuario
puede utilizar consultas en lugar de reglas.
Las consultas son como reglas pero siempre se solicitan por el nombre, nunca ejecutan
acciones y siempre devuelven datos. Las reglas siempre las ejecuta el motor (que no se
puede solicitar), siempre deberían ejecutar acciones cuando coinciden y nunca devuelven
datos.
Otra característica que incluye JBoss BPM Suite son los modelos declarativos. Los
modelos declarativos son tipos de hechos declarados y definidos como parte de la base de
conocimientos. Por ejemplo:
declarar Persona
nombre: String
edad : int
fin
Los modelos declarativos son una forma perfecta para desarrollar prototipos rápidos y
modelar tipos de hechos auxiliares que solo utilizan las reglas y no las aplicaciones. JBoss
BPM Suite integra modelos de dominio desarrollados en objetos Java normales (POJO). El
uso de este modelo simplifica la prueba y la integración de aplicaciones y debe ser la opción
preferida siempre que las reglas y las aplicaciones utilicen las mismas entidades de dominio.
euRoPa,oRienteMedio
yÁFRiCa
00800 7334 2835
[email protected]
aSiayPaCíFiCo
+65 6490 4200
[email protected]
aMÉRiCalatina
+54 11 4329 7300
[email protected]
facebook.com/redhatinc
@redhatnews
linkedin.com/company/red-hat
redhat.com
#12286847_v1_0814
Copyright © 2014 Red Hat, Inc. Red Hat, Red Hat Enterprise Linux, el logotipo Shadowman y JBoss son marcas comerciales de
Red Hat, Inc. registradas en Estados Unidos y en otros países. Linux® es la marca comercial registrada de Linus Torvalds en
Estados Unidos y en otros países.