Guía práctica - Trabajos de Grado | Ingeniería de Sistemas

Transcripción

Guía práctica - Trabajos de Grado | Ingeniería de Sistemas
Modelado e implementación de un
proceso de negocio BPM mediante
herramientas SOA de software libre.
Guía práctica
Trabajo de grado: Modelado e implementación de un proceso de negocio BPM mediante herramientas SOA
de software libre.
Caso: Selección y Contratación de profesores de cátedra de la Pontificia Universidad Javeriana
Estudiante: Cristian David Romero Melgarejo, [email protected]
Directora: Ing. María Consuelo Franky de Toro, [email protected]
Bogotá D.C. Segundo semestre del año 2011
Índice
Tabla de ilustraciones ..........................................................................................................................................4
1.
2.
3.
4.
5.
Introducción ..................................................................................................................................................6
1.1.
Acerca de la guía .................................................................................................................................6
1.2.
Acerca del demo ..................................................................................................................................6
1.2.1.
Descripción del Proceso de selección .........................................................................................6
1.2.2.
Descripción del Proceso de contratación .....................................................................................8
1.2.3.
Descripción del Demo ..................................................................................................................9
Conceptos de BPM y su implantación con herramientas SOA ................................................................. 10
2.1.
Procesos de negocio ......................................................................................................................... 10
2.2.
Gestión de Procesos de negocio (BPM) ........................................................................................... 11
2.2.1.
Definición ................................................................................................................................... 11
2.2.2.
¿Qué hace BPM? ...................................................................................................................... 12
2.3.
Arquitectura orientada a servicios (SOA) .......................................................................................... 13
2.4.
Bus de servicios empresariales (ESB) .............................................................................................. 16
Instalación de herramientas ...................................................................................................................... 18
3.1.
Eclipse ............................................................................................................................................... 18
3.2.
Plugins ............................................................................................................................................... 18
3.3.
JBoss AS ........................................................................................................................................... 19
3.4.
JBoss ESB ........................................................................................................................................ 19
Modelación de procesos en BPMN ........................................................................................................... 20
4.1.
Introducción ....................................................................................................................................... 20
4.2.
Demo ................................................................................................................................................. 21
4.2.1.
Proceso de selección .................................................................................................................... 22
4.2.2.
Proceso de contratación ............................................................................................................... 23
Modelación de procesos en jBPM............................................................................................................. 25
5.1.
Introducción ....................................................................................................................................... 25
5.2.
¿Qué permite modelar el editor gráfico de jBPM? ............................................................................ 26
5.2.1.
Descripción general .................................................................................................................. 26
5.2.2.
Nodos ........................................................................................................................................ 27
A.
B.
C.
D.
E.
F.
G.
Responsabilidad de los Nodos ...................................................................................................... 27
Tipo de Nodo: Tarea ..................................................................................................................... 27
Tipo de Nodo: Estado .................................................................................................................... 27
Tipo de Nodo: Decisión ................................................................................................................. 27
Tipo de Nodo: Fork........................................................................................................................ 28
Tipo de Nodo: Join ........................................................................................................................ 28
Tipo de Nodo: Nodo ...................................................................................................................... 28
2|Guía Práctica. BPM - SOA
H.
I.
J.
K.
5.2.3.
5.3.
Adaptación a partir de un modelo BPMN .......................................................................................... 31
5.4.
Demo ................................................................................................................................................. 35
5.4.1.
6.
Tipo de Nodo: Start-State .............................................................................................................. 29
Tipo de Nodo: End-State ............................................................................................................... 29
Tipo de Nodo: Mail-Node .............................................................................................................. 29
Tipo de Nodo: ESB-Service .......................................................................................................... 29
Transiciones .............................................................................................................................. 29
Archivo XML generado .............................................................................................................. 39
Implantación del proceso de negocio usando la consola de JBoss ......................................................... 42
6.1.
Introducción ....................................................................................................................................... 42
6.2.
Demo ................................................................................................................................................. 43
6.2.1.
Alcance ...................................................................................................................................... 43
6.2.2.
Formularios ............................................................................................................................... 43
A.
Complemento de código en el nodo ............................................................................................ 43
B.
Creación de la forma .................................................................................................................... 44
C. Integración del nodo con la forma ................................................................................................ 46
6.2.3.
Creación de usuarios ................................................................................................................ 46
7.
6.2.4.
Nodo de correo electrónico ....................................................................................................... 48
6.2.5.
Nodo de decisión....................................................................................................................... 49
6.2.6.
Nodos para llamar servicios web .............................................................................................. 50
6.2.7.
Uso del bus de servicios ........................................................................................................... 53
Integración de una aplicación JEE5 con el bus de servicios de JBoss .................................................... 58
7.1.
8.
Introducción ....................................................................................................................................... 58
7.1.1.
Anotación @CreateProcess ...................................................................................................... 58
7.1.2.
Anotación @ResumeProcess ................................................................................................... 58
7.1.3.
Anotación @StartTask .............................................................................................................. 58
7.1.4.
Anotación @BeginTask ............................................................................................................. 59
7.1.5.
Anotación @EndTask ............................................................................................................... 59
7.1.6.
Relación Entre Anotaciones ...................................................................................................... 60
Referencias ............................................................................................................................................... 61
3|Guía Práctica. BPM - SOA
Tabla de ilustraciones
Ilustración 1. Relación entre servicios de negocio y procesos en SOA [18] .................................................... 10
Ilustración 2. Ejemplo de un modelo en notación BPMN [19] ........................................................................... 12
Ilustración 3. Elementos arquitecturales de SOA [18] ...................................................................................... 14
Ilustración 4. Perspectiva empresarial de SOA [18] ......................................................................................... 15
Ilustración 5. Arquitectura del bus de servicios empresariales ......................................................................... 16
Ilustración 6. Ejemplo de proceso en BPMN [19] ............................................................................................. 20
Ilustración 7. Proceso de selección de profesores de cátedra de la Pontificia Universidad Javeriana ............ 23
Ilustración 8. Proceso de contratación de profesores de cátedra de la Pontificia Universidad Javeriana ....... 24
Ilustración 9. Ejemplo inicial de un modelo desarrollado con jBPM ................................................................. 26
Ilustración 10. Creación de un nuevo proyecto ................................................................................................ 35
Ilustración 11. Asignando nombre a un nuevo proyecto ................................................................................... 35
Ilustración 12. Creación de un nuevo elemento ............................................................................................... 36
Ilustración 13. Creación del elemento Process Definition ................................................................................ 36
Ilustración 14. Nombrando el proceso .............................................................................................................. 37
Ilustración 15. Partes importantes para la realización de diagramas ............................................................... 37
Ilustración 16. Demo en notación BPMN .......................................................................................................... 38
Ilustración 17. Demo jBPM................................................................................................................................ 39
Ilustración 18. Pestañas de navegación en Eclipse ......................................................................................... 39
Ilustración 19. Estructura del código jpdl generado por el grafo ....................................................................... 41
Ilustración 20. Vista general de los componentes de la consola [27] ............................................................... 42
Ilustración 21. Alcance del desarrollo del demo utilizando la Consola ............................................................. 43
Ilustración 22. Código en jPDL asociado al formulario de una tarea humana .................................................. 44
Ilustración 23. Código xhtml del formulario de la tarea humana....................................................................... 46
Ilustración 24. Estructura de código en forms.xml ............................................................................................ 46
Ilustración 25. Código SQL para inserción de usuarios .................................................................................... 47
Ilustración 26. Relación de la creación de usuario con el proceso ................................................................... 47
Ilustración 27. Código SQL para inserción de grupos ...................................................................................... 47
Ilustración 28. Código SQL para relación de usuarios con grupos .................................................................. 48
Ilustración 29. Estructura del nodo para enviar un correo electrónico ............................................................. 48
Ilustración 30. Método para el envío de un correo electrónico ......................................................................... 49
Ilustración 31. Estructura del nodo de decisión ................................................................................................ 50
Ilustración 32. Estructura de la celda para el checkbox de aprobación ........................................................... 50
Ilustración 33. Ruta de creación del servicio web ............................................................................................. 51
Ilustración 34. Estructura de la clase que contiene el servicio web.................................................................. 51
Ilustración 35. Muestra de la búsqueda del .wsdl ............................................................................................. 52
Ilustración 36. Estructura de la celda para el checkbox de aprobación ........................................................... 53
Ilustración 37. Cambio de tipo de nodos ........................................................................................................... 53
Ilustración 38. Creación de la cola para el servicio de correo electrónico en el descriptor hornetq-jms.xml ... 53
Ilustración 39. Creación de la cola para el servicio de invocación de un servicio web en el descriptor hornetqjms.xml .............................................................................................................................................................. 53
Ilustración 40. Creación del mbean para el servicio de correo electrónico en el servidor JMS en el descriptor
jbm-queue-service.xml ...................................................................................................................................... 54
Ilustración 41. Creación del mbean para el servicio de invocación de un servicio web en el servidor JMS en el
descriptor jbm-queue-service.xml ..................................................................................................................... 54
4|Guía Práctica. BPM - SOA
Ilustración 42. Creación del mbean para el servicio de correo electrónico en el servidor JMX en el descriptor
jbmq-queue-service.xml .................................................................................................................................... 54
Ilustración 43. Creación del mbean para el servicio de invocación de un servicio web en el servidor JMX en el
descriptor jbmq-queue-service.xml ................................................................................................................... 54
Ilustración 44. Creación de los canales de correo electrónico e invocación de servicio web en el descriptor
jboss-esb.xml .................................................................................................................................................... 55
Ilustración 45. Estructura de los servicios registrados en el bus en el descriptor jboss-esb.xml ..................... 56
Ilustración 46. Líneas a insertar en el descriptor de despliegue de colas del bus en el descriptor
deployment.xml ................................................................................................................................................. 56
Ilustración 47. Cambio en las clases. ............................................................................................................... 57
Ilustración 48. Solicitud de materia prima ......................................................................................................... 60
5|Guía Práctica. BPM - SOA
1. Introducción
1.1.
Acerca de la guía
Este documento pretende ser una guía para las Pymes que busquen implementar sus procesos de negocio
bajo la filosofía de BPM (Gestión de procesos de negocio), apoyados en una arquitectura orientada a
servicios (SOA).
Es importante anotar que con cualquiera de las suites o conjunto de herramientas SOA la curva de
aprendizaje es elevada, es decir, el tiempo que toma aprender y desarrollar un manejo intermedio de éstas
suele ser extenso. Por esta complejidad, surge la motivación de elaborar la presente guía con el ánimo de
facilitar el camino a las Pymes.
Por otro lado, las suites SOA son herramientas muy costosas y en general fuera del alcance del presupuesto
disponible por empresas Pymes. Por esta razón, esta guía fue elaborada pensando en esa situación, dando
todas las definiciones y ejemplos a partir de las herramientas libres provistas por el proveedor RedHat-Jboss.
1.2.
Acerca del demo
Dos de los procesos más comunes a los que se enfrenta una empresa son los de selección y contratación de
los recursos humanos que harán posible la operación y el desarrollo de funciones dentro de ella. Por ésta
razón, se escogieron como casos de estudio, los procesos de selección y contratación de profesores de
cátedra de la Pontificia Universidad Javeriana.
1.2.1. Descripción del Proceso de selección
El proceso de selección consiste en los siguientes pasos:
1. El director de departamento o instituto crea una vacante para un profesor de cátedra dentro del
sistema.
2. El profesional de compensación de la oficina de relaciones laborales de la Universidad revisa la
apertura de la vacante y las características con las que es solicitada.
3. Luego de efectuarse la revisión, la misma persona del paso anterior, evalúa si la vacante es o no
aprobada, para continuar o examinar el proceso hasta éste punto.
4. Si la vacante fue rechazada, el profesional de compensación notifica vía correo electrónico al director
de departamento o instituto sobre esta situación.
a. Luego de la notificación del rechazo, se procede a eliminar la vacante creada en el sistema,
para que sea creada de nuevo con las correcciones impuestas.
6|Guía Práctica. BPM - SOA
5. Si el director de departamento o instituto solicito la publicación de la vacante en los medios externos
dispuestos por la Universidad, se ejecutará esta acción.
6. Independientemente de si se solicitó publicación externa, se publica la vacante en el sistema interno
de la Universidad.
7. En este punto, los candidatos pueden ingresar a llenar su hoja de vida y adjuntar la documentación
de soporte.
8. El director de departamento o instituto puede asociar los candidatos inscritos a las vacantes
disponibles.
9. El director de departamento o instituto hace una preselección de las hojas de vida, dados los perfiles
de los postulantes.
10. Si en la preselección se solicitó la realización de una entrevista con el Decano Académico para
asegurar algún punto del perfil de la persona, se ejecutará esta acción.
11. El director de departamento o instituto prepara la oferta e ingresa el salario sugerido en el sistema
ERP e inicia el proceso de aprobación a través del workflow al decano académico.
12. El decano académico recibe y revisa la solicitud y documentación de soporte sobre la oferta
económica.
13. Luego de revisarla, el decano deberá aprobar o rechazar la solicitud.
14. Si la solicitud fue rechazada, el decano académico le notifica al director de departamento o instituto,
vía correo electrónico, para que realice los ajustes respectivos.
15. Si la solicitud fue aprobada, se le notifica vía correo electrónico al asistente para asuntos
profesorales.
16. El asistente para asuntos profesorales recibe y revisa la solicitud y documentación de soporte sobre
la oferta económica.
17. El asistente para asuntos profesorales debe aprobar o rechazar la solicitud.
18. Si la solicitud fue aprobada, se le notifica vía correo electrónico al vicerrector académico.
19. Si la solicitud fue rechazada, el asistente para asuntos profesorales le notifica vía correo electrónico
al decano académico para la realización de los ajustes respectivos.
a. El decano académico realizará los ajustes a la oferta económica realizada, si así se lo indica
el asistente para asuntos profesorales.
20. El vicerrector académico recibe y revisa la solicitud y documentación de soporte sobre la oferta
económica.
21. El vicerrector debe aprobar, devolver o rechazar la solicitud.
7|Guía Práctica. BPM - SOA
22. Si la solicitud fue rechazada, el vicerrector académico le notifica, vía correo electrónico, al decano
académico y el proceso vuelve a comenzar desde el numeral 2.
23. Si la solicitud fue devuelta, el vicerrector académico le notifica vía correo electrónico al asistente para
asuntos profesorales.
a. El asistente para asuntos profesorales revisa las razones por las cuales la oferta fue
devuelta. Él decide si devuelve o no la oferta al decano académico.
b. Si no la devuelve, se realiza la gestión indicada con el decano académico para pasar a
revisión directa con el vicerrector académico.
c.
Si es devuelta al decano académico y después de que sea realizada la gestión de
corrección, el decano académico le notifica al vicerrector académico.
24. Si la solicitud fue aceptada, el vicerrector académico le notifica vía correo electrónico al Jefe de la
oficina de relaciones laborales.
25. El jefe de la oficina de relaciones laborales le realiza la oferta económica al candidato, con copia al
analista de nómina, profesional de inducción y secretario de facultad.
26. El analista de nómina de la oficina de relaciones laborales prepara el contrato para el candidato.
27. Se realiza la vinculación laboral en el ERP, la asociación de la clase y genera el contrato en el
Sistema de administración de estudiantes (SAE). Esta tarea está a cargo del secretario de facultad.
28. El candidato revisa los términos de su contrato y la oferta económica realizada.
29. El candidato deberá evaluar si acepta o no el contrato con la Universidad.
30. Si el candidato no acepto, se le solicita al analista de nómina la terminación del contrato por
inconsistencia.
31. Si el candidato acepta, se procede a realizar el proceso de contratación.
1.2.2. Descripción del Proceso de contratación
El proceso de contratación consiste en los siguientes pasos:
1. Dados los recursos de información se define si el profesor es nuevo.
2. En caso de que un profesor sea nuevo:
a. Verifica el nombramiento y realiza la solicitud de una apertura bancaria para el pago de la
nómina.
b. Se realiza el proceso del examen médico.
c.
Se realiza el proceso de la carnetización institucional.
8|Guía Práctica. BPM - SOA
d. Se realizan las afiliaciones a seguridad social AHC: Se solicitan los datos respectivos para
los trámites de afiliación a seguridad social
e. Se le asigna una cuenta de correo electrónico al profesor.
f.
Se genera el contrato en el sistema ERP con la firma digital del director de recursos
humanos y se notifica a la facultad.
g. El secretario de facultad le notifica al candidato que debe acercarse a la facultad para firmar
el contrato.
3. Se firma el contrato y es remitido a la dirección de recursos humanos de la Universidad. Posterior a
esto, se archiva con los documentos de soporte del mismo.
1.2.3. Descripción del Demo
A partir de la descripción de los procesos, se modelarán en BPMN, en jBPM y luego se implantará un
subconjunto utilizando las herramientas SOA de JBoss. Esta guía ilustrará todos los pasos tanto de
modelaje como de implantación con el ánimo de que las Pymes puedan realizar implantaciones similares
de sus procesos de negocio.
Para observar todas las características del demo, debe incluir la carpeta dentro del IDE que haya
escogido para desarrollo, preferiblemente Eclipse Ganymede. Luego, podrá ejecutarlo registrado el
buildfile en el plugin de Ant, y corriendo la función deploy.
9|Guía Práctica. BPM - SOA
2. Conceptos de BPM y su implantación
con herramientas SOA
2.1.
Procesos de negocio
Las tácticas de negocio y los objetivos son definidos típicamente para unos procesos de negocio particulares.
Un proceso de negocio es un grupo de actividades lógicas relacionadas (y generalmente secuenciales) que
usan los recursos de la organización para proveer resultados definidos. Los procesos de negocio entregan
valor en forma de productos o de servicios, frecuentemente a una entidad externa como un consumidor o un
asociado [18].
Generalmente los procesos de negocio cuentan con dos niveles de detalle. Esto se hace para que logre
existir un acuerdo entre los ejecutivos de la compañía y los dueños del proceso de negocio. “Un modelo,
para ejecutivos, contiene un conjunto de escenarios de algo nivel de negocio que muestran el propósito de la
organización. El otro modelo, que es para los dueños del proceso de negocio, contiene un conjunto detallado
de casos de uso que definen como se suplen las necesidades de la organización. Para cada escenario de
negocio de alto nivel, usted puede definir uno, o varios, casos de uso de negocio detallados representando
las mismas actividades en la organización…” (IBM’s Rational Unified Process [RUP] for SOMA) [18].
Los escenarios de negocio creados junto con una primera definición de los procesos de negocio son útiles a
la hora de descomponer y detallar los procesos desarrollados en la empresa. Por ejemplo, si tomamos el
caso de contratación de profesores de una universidad podríamos definirlo a grandes rasgos en una primera
instancia, sin embargo, a medida que detallemos este proceso de negocio podríamos tener nuevos subprocesos o actividades agregadas al macro-proceso, cómo por ejemplo la realización de la evaluación
médica, la carnetización o la inclusión en determinado software que requiera de varios pasos para el uso del
nuevo profesor [18].
Cómo se vio en la sección anterior, una arquitectura orientada a servicios entra a jugar un papel muy
importante con los procesos de negocio. Precisamente su objetivo es reconocer y exponer los activos de
computación de la organización como servicios de negocio reusables que implementen ciertas
funcionalidades básicas, las cuales al ser combinadas permitan el apoyo a la ejecución de complejos
procesos de negocio. En este punto vemos una relación directa entre lo llamado “procesos de negocio” y
“servicios de negocio”. A continuación se detalla esta relación [18].
Ilustración 1. Relación entre servicios de negocio y procesos en SOA [18]
10 | G u í a P r á c t i c a . B P M - S O A

Los servicios de negocio se encargan de dar apoyo a los procesos de negocio a través de la
exhibición de las funcionalidades que se han implementado. Es muy común que la implementación
de los servicios de negocio cambien, precisamente porque a medida que cambia el negocio, puede
que deban ofrecer unas nuevas o mejoradas funcionalidades. Sin embargo, las reglas con las cuales
se publicaron las interfaces muy rara vez cambian, es decir, que la forma de llamar al servicio no
tendrá variación así la forma en que ejecuta las órdenes pedidas si haya cambiado [18].

Los procesos de negocio se valen de los servicios de negocio para alcanzar los objetivos de la
empresa. Cambian debido a cambios en la estrategia de la organización. En estos procesos se
contemplan procedimientos y reglas que sirven a determinados aspectos dentro del negocio [18].

La interacción entre los procesos de negocio y los servicios de negocio se basa en la semántica
definida, como se hablaba en la sección anterior sobre SOA. Tener un estándar y un acuerdo para
lograr la comunicación entre estos dos aspectos es vital para reducir el impacto que puede generar
un cambio en cualquiera de las partes y para simplificar el proceso de construcción de los servicios
de negocio que finalmente apoyaran los procesos de negocio [18].
Es importante separar estos dos aspectos para permitir que por un lado los arquitectos de la sección de
tecnologías de información tengan el conocimiento sobre los servicios de negocio y cómo estos pueden ser
re-usados y configurados de tal forma que sirvan a los procesos de negocio definidos por los analistas de
negocio. A través de esta separación, se simplifica la creación de nuevos procesos y la optimización de los
existentes. Y más importante aún, con los continuos cambios que se presentan en el mercado y dados
nuevos factores de competitividad, una empresa puede ser flexible y mantener sus ventajas con bajos costos
a la hora de realizar soportar estos cambios con la re-configuración de sus procesos de negocio y a su vez
de los servicios de negocio con los que cuente dentro de la organización [18].
2.2.
Gestión de Procesos de negocio (BPM)
2.2.1. Definición
Luego de ver la definición y las características de los procesos de negocio, aparece la pregunta sobre ¿cómo
lograr una gestión efectiva de estos procesos de negocio? Para dar respuesta a ella, surgió una filosofía
llamada BPM.
Así como las personas entienden mejor los objetos o fenómenos a través de modelos, las organizaciones,
compuestas de personas, también lo hacen. Gracias a los modelos, se tiene la capacidad de identificar
visualmente los problemas, y como pueden ser señalados como punto de mejora en una situación dada. Y
los procesos de negocio no son la excepción cuando se habla de modelos. La modelación de procesos
pertenecientes a una organización, o inclusive a través de varias organizaciones, puede resaltar
instantáneamente problemas y es una herramienta importante para la simulación de la eficiencia de ciertos
procesos [20].
La gestión de procesos de negocio (BPM) es un conjunto de métodos, herramientas y tecnologías usadas
para diseñar, modelar, analizar y controlar los procesos operacionales de un negocio. BPM pretende tener
una visión de éstos procesos desde dos ángulos: tecnologías de información y el provisto por los analistas de
negocio. De esta forma se busca llegar a conformar procesos efectivos, agiles y transparentes [23].
11 | G u í a P r á c t i c a . B P M - S O A
La tecnología de BPM debe incluir todo lo necesario para diseñar, representar, analizar y controlar los
procesos operacionales del negocio [23]:

El modelamiento de procesos y diseño hacen posible que se plasme de una forma rápida y rigurosa
la forma en que los procesos entregan valor a la organización y sus clientes. Además, se ilustra que
recursos son necesarios y que rol juegan dentro del proceso.
Ilustración 2. Ejemplo de un modelo en notación BPMN [19]

La integración se relaciona con aspectos de sistemas de control, sistemas de información, fuentes de
datos y otras tecnologías que puedan ser re-utilizadas y re-configuradas de tal forma que se pueda
adaptar a los cambios impulsados por el mercado, cumpliendo detalladamente con las necesidades
de un proceso determinado.

La ejecución es necesaria para que un modelo no se quede solo en diseño, sino que también se
permita ejecutar el modelo planteado.

Monitoreo de las actividades de negocio: Un seguimiento a las actividades dentro del proceso de
negocio es fundamental para obtener retroalimentación a través de métricas, monitoreo, indicadores
y tendencias.

El control le permite responder a ciertos eventos o circunstancias que ocurran en la ejecución del
proceso. Por ejemplo, un cambio de reglas, notificaciones, excepciones y aumento de la capacidad.
Retomando la definición y las funciones que provee SOA, en este punto se puede observar como la filosofía
BPM encaja con la tecnología provista por la arquitectura orientada a servicios. Esta es una de las razones
por las cuales se elaboró la guía bajo el enfoque de BPM – SOA, para ilustrar cómo se integra el modelo de
negocio con el modelo tecnológico dentro de la empresa.
2.2.2. ¿Qué hace BPM?
BPM es una disciplina amplia, pero tiene un propósito funcional específico. Igualmente, los componentes
tecnológicos necesarios para usar la filosofía BPM tendrán unas especificaciones precisas [23]:

Centralidad del proceso: BPM unifica el negocio y las actividades de TI, y coordina las acciones y
comportamientos de las personas y los sistemas alrededor de un contexto común de procesos de
negocio. Usando convenciones y notaciones de modelación de procesos estándar, un gerente de
operación puede, por ejemplo, ver el proceso desde la perspectiva de negocio mientras que el
gerente de IT puede ver los sistemas y elementos de información.
12 | G u í a P r á c t i c a . B P M - S O A

Alineación entre el negocio y TI: BPM facilita la colaboración directa y la responsabilidad conjunta
tanto de los gerentes de operación como de los profesionales de TI a la hora de diseñar,
implementar y optimizar los procesos de negocio.

Mejora continua del proceso: Se busca que se pueda obtener retroalimentación de las actividades
del proceso a través de su monitoreo y comparación con métricas e indicadores.

Composición de soluciones: BPM facilita el diseño rápido, montaje y despliegue de procesos de
negocio. Un profesional de TI debe estar en la capacidad de conectar sistemas y servicios al modelo
diseñado y aprobado por el analista de negocio. Además, cada vez que haya un cambio sobre el
proceso, se debe tener la flexibilidad para que la solución sea adaptada rápidamente.

Transparencia: BPM provee un entendimiento de las actividades para todos los participantes.
Además, ellos deben ser capaces de ver las métricas de negocio en tiempo real y el rendimiento de
los sistemas y servicios disponibles.
Interfaces: BPM debe proveer a los gerentes de interfaces que le permitan usar servicios tanto internos como
externos, y que estos sean re-usables y adaptables a cualquier configuración requerida. La interface de estos
servicios tendrá la información sobre las funciones que cumple, lo cual muy rara vez cambiará, a pesar de
que puede que su implementación cambie continuamente.
2.3.
Arquitectura orientada a servicios (SOA)
Concretamente, una arquitectura orientada a servicios es un estilo arquitectural para construir soluciones
empresariales basadas en servicios. SOA tiene que ver con la construcción independiente de servicios
alineados con el negocio que puedan ser combinados en procesos significativos, de alto nivel de negocio y
con soluciones en el contexto de la empresa. Cualquiera puede crear un servicio, ese no es el reto de SOA.
El valor real de SOA se encuentra cuando servicios reusables son combinados para crear procesos de
negocio agiles y flexibles. Desafortunadamente, esto no pasa por sí solo. Lograr esto puede ser fácil si una
sola organización crea todos sus servicios, pero éste no es el caso de las grandes organizaciones. Así que,
parte de la arquitectura de SOA es responsable de proveer el ambiente necesario para crear y usar servicios
compuestos a lo largo de la empresa [18].
En otras palabras, la arquitectura SOA permite que diferentes organizaciones desarrollen
independientemente los servicios que atiendan a sus necesidades. Sin embargo, a mediano o largo plazo,
estos servicios se pueden integrar para dar más valor a las soluciones creadas y que estas tengan mayor
impacto en los procesos de negocio [18]. Para lograr la integración, se requiere que los servicios:

Sean similares en cuanto a: tamaño, forma, función y otras características.

Se adecuen a los estándares de la empresa.

Se comuniquen a un nivel técnico.

Se comuniquen a un nivel semántico.

No tengan huecos ni solapamientos en sus responsabilidades [18].
13 | G u í a P r á c t i c a . B P M - S O A
La siguiente figura muestra las capas bajo las cuales se desempeña una arquitectura orientada a servicios,
incluyendo dos capas de conceptos. Las descripciones que se encuentran en la parte izquierda hacen
referencia a los conceptos funcionales que se usan para construir sistemas y procesos. En la parte derecha,
están los conceptos de información que se usan para pasar, describir o manipular datos en los diferentes
niveles funcionales. Aquí se puede ver como las organizaciones son una combinación de procesos con
información ya que cada capa necesita de ambas abstracciones. Las conexiones entre las capas
representan las relaciones entre las funciones [18].
Ilustración 3. Elementos arquitecturales de SOA [18]
De abajo hacia arriba las capas son [18]:

Recursos de la empresa y datos operacionales: Esta capa se compone de aplicaciones existentes,
legacy y sistemas COTS (aplicaciones comerciales fuera de la plataforma), incluyendo aplicaciones
CRM (Customer Relationship Management) y ERP (Enterprise Resource Planning) e
implementaciones antiguas orientadas a objetos. Estas aplicaciones proveen operaciones de
negocio: transacciones que representan unidades lógicas de trabajo en los sistemas de operación de
la empresa. Estas operaciones al ser ejecutadas, por lo general, causaran uno o más registros de
datos persistentes para ser leídos, escritos o modificados en un sistema de almacenamiento (SOR).

Servicios de integración: Los servicios de integración proveen este servicio entre las aplicaciones
existentes. Un aspecto muy importante es separar la capa de integración de servicios con la de
servicios de negocio para estar en la capacidad de mantener un ambiente empresarial flexible.
14 | G u í a P r á c t i c a . B P M - S O A
Comúnmente, esto involucra la transformación de datos y funciones de lo que es deseado en el nivel
de servicios de negocio a lo que es posible en los sistemas existentes.

Servicios de negocio: Proveen servicios de negocio de alto nivel a la empresa. Esta capa se
relaciona con la anterior para romper la dependencia directa entre los procesos y los sistemas
existentes, así, en caso de que haya un cambio en alguna de las dos capas, solo tendrá que ser
modificada la intermediaria. Los servicios son manejados bajo ciertos parámetros para asegurar que
se cumplan ciertos contratos respecto a las funciones que deben proveer. Estos contratos son
llamados: acuerdos a nivel de servicios (SLA). Para ilustrar mejor que es un SLA, podríamos ver el
caso de una revisión de ítems como servicio, cuyo grupo de funciones lógicas podrían ser: Listar
todos los ítems, Eliminar ítem por código de ítem o guardar los cambios sobre la lista.

Procesos de negocio: Un proceso de negocio consiste en una serie de operaciones que son
ejecutadas en una secuencia ordenada acorde a un conjunto de reglas de negocio. A menudo, los
procesos de negocio son descritos en un modelo de procesos de negocio, cómo los realizados con la
notación estándar BPMN (Business Process Modeling Notation) y ejecutados por un sistema de
gestión de procesos de negocio: BPMS. La secuencia, selección y ejecución de las operaciones es
llamada Orquestación. Los procesos de negocio proveen conjuntos de acción o actividades de larga
duración. Están compuestos por servicios de negocio y típicamente hacen uso de múltiples
invocaciones a servicios. Ejemplo de algunos procesos de negocio podrían ser: La contratación de
profesores de cátedra de una universidad, el proceso de pago a proveedores internacionales, la
matrícula de estudiantes a un colegio o la creación de órdenes de compra. Más adelante se hablará
en detalle sobre el concepto de BPM por ser de especial relevancia para esta guía.
La siguiente figura muestra una perspectiva empresarial de cómo se implementa SOA, y el uso que hace del
bus de servicios (Ver sección 2.4 de este documento, Bus de Servicios Empresariales ESB) para comunicar
el modelo de negocio con los servicios y componentes definidos a nivel lógico.
Ilustración 4. Perspectiva empresarial de SOA [18]
15 | G u í a P r á c t i c a . B P M - S O A
Como parte de la determinación del uso que se le dará a la arquitectura se debe observar el ambiente de
desarrollo, los frameworks, la infraestructura y las herramientas. No es suficiente con la descripción de
cuáles son los servicios; la arquitectura debe permitir una fácil y eficiente creación de esos servicios.
Inclusive, se debe especificar como la arquitectura encaja con el proceso de desarrollo y lo apoya en la
medida para agregar valor. Es importante que la arquitectura entienda los aspectos de los servicios que
deben ser consistentes a lo largo del rango de ambientes de desarrollo, y crear estándares, documentos
guías, ejemplos, frameworks, plug-ins o similares que apoyen esos ambientes y procesos de desarrollo [18].
Por último, y no por ello menos importante, se deben consideran las métricas y las medidas de éxito. Una
arquitectura orientada a servicios solo es efectiva si esta apoya la consecución de las metas de negocio por
las que fue creada. El proceso debe tener métricas y métodos para la recolección de medidas que permitan
demostrar cuan efectiva fue la implementación de la SOA [18].
2.4.
Bus de servicios empresariales (ESB)
Un bus de servicios empresariales (Enterprise Service Bus – ESB) es un software que provee servicios
fundamentales para arquitecturas complejas. En el caso de SOA, un ESB provee muchas de las
características para su implementación. Se podría definir un ESB como aquel mecanismo que gestiona el
acceso a aplicaciones y servicios (incluidos los sistemas legacys) para proveer una interface única, simple y
consistente a los usuarios finales [21].
Ilustración 5. Arquitectura del bus de servicios empresariales
Entre los propósitos más relevantes de un ESB se encuentran: ocultar la complejidad que implica la
comunicación entre servicios heterogéneos, simplificar el acceso a servicios y aplicaciones, hacer que la
complejidad y las comunicaciones sean transparentes para el usuario. La clave del éxito de un ESB radica en
cuan hábil es para soportar un servicio incremental y la integración de las aplicaciones, no pensado desde el
punto de vista de la tecnología disponible, sino de los requerimientos del negocio [21]. De acuerdo con uno
de los proveedores de esta herramienta, IBM, un ESB “no es un nuevo producto de software, es una nueva
forma de observar cómo se integran las aplicaciones, se coordinan recursos y se manipula la información”
[21].
La arquitectura de un bus de servicios que soporta una arquitectura orientada a servicios, contiene [24]:
16 | G u í a P r á c t i c a . B P M - S O A

Aprovechamiento de las aplicaciones legacy. Son técnicamente elementos muy antiguos de
almacenamiento o procesamiento de información que son de misión crítica para la organización,
pero que son muy susceptibles a la hora de ser modificados y demasiado importantes para ser
descartados y por lo tanto deben ser reutilizados. Estratégicamente, el objetivo es construir una
nueva arquitectura que dará todo el valor esperado, pero tácticamente, los activos de legado deben
ser aprovechados e integrados con las nuevas tecnologías y aplicaciones.

Capacidad de comunicación de servicios. Esta es una de las capacidades críticas de un ESB, la cual
busca la interacción entre servicios a través de una variedad de protocolos y la transformación a
partir de un protocolo a otro cuando sea necesario. Otro aspecto importante de una implementación
de ESB es la capacidad de soportar los modelos de servicio de mensajería compatible con las
interfaces de la arquitectura orientada a servicios (SOA), así como la capacidad de brindar:
seguridad, transacciones o información de correlación entre los mensajes.

Capacidad de integración. Para apoyar una arquitectura orientada a servicios en un entorno
heterogéneo, el ESB debe integrarse con una variedad de sistemas que no soportan directamente el
estilo de servicio de interacciones. Esto puede incluir sistemas de legacy, aplicaciones
empaquetadas, COTS, etc.

Capacidad de transformación. Los distintos componentes conectados a un bus de servicios esperan
que sus entradas se presenten en ciertos formatos, y estos pueden ser diferentes a los presentados
en las salidas de otros servicios que le envían mensajes. Una de las características de mayor valor
en un ESB es que encapsula los detalles de implementación de todos los componentes, logrando
que cualquier otro de ellos no conozca estos detalles sobre otro componente. Los servicios de
transformación permiten asegurar que los mensajes y datos recibidos por cualquiera de los
componentes está en el formato que espera recibirlos, eliminando así la carga de que este se
encargará de realizar su propia transformación. El ESB está en capacidad de transformar mensajes
en diferentes formatos: XML, de Objetos, entre otros.

Capacidades de seguridad. El manejo de la seguridad es uno de los factores claves a la hora de
implementar un ESB. Un ESB debe permitir tanto proveer un modelo de seguridad para los
consumidores de los servicios, como integrarse con los distintos modelos de seguridad de
proveedores de este servicio. En general, se busca que la seguridad tenga aspectos de:
autenticación, validación y encriptación/des-encriptación.

Capacidades de gestión y monitoreo. En un ambiente SOA, las aplicaciones y los servicios usados
pueden cambiar a lo largo del tiempo. Administrar esos cambios es un gran reto, en especial cuando
se deben garantizar ciertos requerimientos, por ejemplo, de disponibilidad del sistema. Por esta
razón, es importante que un ESB sea capaz de localizar servicios de forma dinámica y se comporte
de acuerdo a las necesidades estipuladas.
17 | G u í a P r á c t i c a . B P M - S O A
3. Instalación de herramientas
3.1.
Eclipse
Diríjase al siguiente enlace: http://www.eclipse.org/ganymede/ y descargue la versión llamada “Eclipse IDE
for Java Developers”. Luego, comience la instalación en su máquina y si no desea realizar ninguna
configuración especial, puede aceptar la que viene por defecto.
3.2.
Plugins
Esta sección se toma totalmente de la guía elaborada por la Ingeniera María Consuelo Franky, titulada
Instalación y configuración de las herramientas para Java EE 5. Curso: Desarrollo de aplicaciones en Java
EE 5 en base a framework. Presentación: “1-guia-configuracion-javaee5.pdf”, encontrada en:
http://orion.javeriana.edu.co/gf/project/javeviajes/docman/?subdir=7
El conjunto de plugins JBoss Tools All para Eclipse ofrece facilidades adicionales para el desarrollo de
aplicaciones Java EE 5, agregando las perspectivas de Web Development y Seam con vistas (windows)
especializadas en:

Explorador de proyectos JSF (vista Web Projects)

Paleta para diseñar páginas JSF (vista JBoss Tools Palette con elementos HTML, Facelets, jax4jsf,
RichFaces, Seam; se puede extender con otros elementos como ADF, ICEfaces, etc.)

Herramientas Hibernate que permiten ejecutar consultas JPQL (vistas Hibernate Configurations,
Query Parameters, Hibernate Query Result, Hibernate Dynamic SQL Preview)

Asociar proyectos a servidores registrados en Eclipse (vista JBoss Server View)

Diseño de procesos de negocio jBPM (vista Overview, editor jBPM Graphical Process Designer)

Lista de componentes Seam de un proyecto, indicando el contexto de cada componente (vista Seam
Components, solo funciona para proyectos generados con el asistente “Seam Web Project”)

Antes de instalar este conjunto de plugins debe cerrarse Eclipse y agregar al principio del archivo
eclipse.ini (bajo el directorio de instalación de Eclipse) la opción -clean Con esta opción Eclipse
refrescará sus plugins instalados cada vez que se inicie.
Para la instalación descomprimir el archivo: JBossTools-ALL-win32-3.0.2.v200909151014R-H192-GA.zip
en el directorio raíz de la instalación de Eclipse. El archivo lo puede encontrar en el siguiente link:
http://es.sourceforge.jp/projects/sfnet_jboss/downloads/JBossTools/JBossTools3.0.x/JBossTools-ALL-win323.0.2.v200909151014R-H192-GA.zip/
Luego se puede invocar Eclipse y abrir las perspectivas agregadas (Web Development y Seam)
18 | G u í a P r á c t i c a . B P M - S O A
3.3.
JBoss AS
Descargue el Application Server de la dirección: http://www.jboss.org/jbossas/downloads/ y ubíquelo en una
carpeta fácil de recordar para usted. Luego, en Eclipse y abriendo la pestaña del plugin JBoss AS instalado,
registre el servidor.
Esta acción se realiza dando click derecho, seleccionando la opción para agregar un nuevo servidor, y dentro
de este sólo deberá proveer un nombre y la dirección donde se encuentra la carpeta descargada. Luego,
podrá correr el servidor normalmente.
3.4.
JBoss ESB
Luego de tener instalado JBoss Application Server, deberá descargar JBoss ESB 4.9 en la siguiente
dirección: http://www.jboss.org/jbossesb/downloads.
Cuando haya descargado la carpeta, regístrela en el IDE Eclipse. Ingrese a jbossesb4.9/install/deployment.properties.example y borre la extensión .example de tal forma que éste descriptor
tenga extensión .properties. Luego, ábralo y edite las siguientes propiedades de tal forma que quede como
se indica a continuación:
# application server root directory
org.jboss.esb.server.home=/jboss-4.2.3.GA
# the instance of jboss you are running(default)
org.jboss.esb.server.config=default
Tenga en cuenta que la sección resaltada en rojo deberá tener la dirección de la carpeta de su computador
donde se encuentra el JBoss AS.
Luego registre el buildfile y ejecute la tarea ant – deploy. Esto instalara todo lo necesario dentro de JBoss AS
para que en todas las ocasiones que inicie este servidor, se disponga para usted las herramientas brindadas
por el Bus de servicios de JBoss.
19 | G u í a P r á c t i c a . B P M - S O A
4. Modelación de procesos en BPMN
4.1.
Introducción
A medida que las empresas se desarrollan, sus procesos de negocio se van haciendo más complejos y el
mercado comienza a exigir que sean más organizadas en cuanto a la integración de los procedimientos que
manejan y a la efectividad con la que apoyan la consecución de metas planteadas. Cuanto más exigencias
tenga una empresa y mayor maduración tenga, sus procesos serán repetibles y escalables, organizados de
tal forma que se puedan re-configurar y brindar flexibilidad en la operación de la compañía [19].
Uno de los pilares de la gestión y dirección de las empresas consiste en tener claros estos procesos que
permiten la supervivencia en el mercado. Si se comprende con detalle estos procesos, será factible
evaluarlos y mejorarlos. En otras palabras, se podrá organizar el trabajo de mejor manera y considerar las
siguientes preguntas para mejorar la productividad [19]:






¿Cuáles pasos son realmente necesarios?
¿Quién debería realizarlos?
¿Deben quedarse en la empresa o en el subcontratado?
¿Cómo deben ser realizados?
¿Qué funcionalidades se necesitan?
¿Qué resultados se esperan y como serán monitoreados?
Para facilitar el proceso de dar respuesta a estas preguntas, se toma la decisión de modelar los procesos,
preferiblemente bajo un estándar que facilite la comunicación entre entidades o personas y el entendimiento
por cada una de ellas sobre las actividades que se deben seguir dentro del proceso. Generalmente, estos
modelos guiarán el trabajo y la forma en que se organizan los recursos para alcanzar los objetivos. Para ver
como se ilustra el flujo de trabajo se puede ver la imagen a continuación [19].
Ilustración 6. Ejemplo de proceso en BPMN [19]
En la ilustración anterior, se pueden ver actividades que dan inicio al proceso (círculo verde) o que indican la
finalización del mismo (círculo rojo). Además, se tienen actividades realizadas por humanos (las cuales están
indicadas con el símbolo de una persona en la parte superior derecha) y actividades realizadas
automáticamente (las cuales están indicadas con el símbolo de un piño en la parte superior derecha).
20 | G u í a P r á c t i c a . B P M - S O A
Finalmente, el rombo indica las decisiones que deben ser tomadas por cierto actor o de forma automática por
un servicio o sistema. Las convenciones completas serán explicadas en la sección 5.3
En la industria, el estándar utilizado para la modelación de procesos es BPMN, el cual provee una serie de
herramientas conceptuales para expresar los procesos de negocio en un lenguaje intuitivo, el cual puede ser
interpretado luego en un lenguaje de ejecución, como BPEL, el cual es un estándar para componer servicios
asíncronos y síncronos en un flujo colaborativo de proceso [25]. Además es una notación usada para diseñar
todos los procesos organizacionales uniformemente, para que de esta forma se pueda comunicar fácilmente
cada proceso con otras personas tanto dentro como fuera de la organización [16].
Otra de las razones por la cual BPMN es ampliamente utilizado como estándar, es que además de facilitar la
comunicación entre los analistas del dominio, les permite apoyarse para tomar decisiones basadas en
técnicas como análisis de costo, análisis de escenario y simulación. Sin embargo, los modelos BPMN
también son usados como la base para especificar los requerimientos de software y en tales casos, son
entregados a los desarrolladores de software encargados de la elaboración del sistema [17].
4.2.
Demo
A continuación se mostrará la modelación BPMN que se realizó de los dos procesos de la dirección de
gestión humana de la Pontificia Universidad Javeriana: selección y contratación de profesores de cátedra. De
estos casos se tomará un subconjunto para implantarlo como demo con el fin de ilustrar el uso de
herramientas SOA.
Se explicaran los componentes de dichos diagramas, sin embargo, para ver más detalles sobre la notación
usada y cómo podría usted elaborar sus propios modelos de procesos, por favor diríjase a la sección 5.3 de
este documento. Tenga en cuenta que la descripción de la notación y la realización de estos modelos fue
hecha a partir del uso del modelador de procesos de negocio de Bizagi: http://www.bizagi.com/.
Antes de realizar cualquier modelo, debe partir de la premisa bajo la cual debe identificar que entidades
intervienen en el proceso de negocio. Entienda por entidades aquella agrupación de individuos o
instituciones homogéneos pero que entre el grupo de entidades es heterogénea respecto a los demás.
También tenga en cuenta que bien puede usted dividir a todos los involucrados en el proceso como
entidades diferentes, dependiendo del grado de complejidad y tipo de tareas que deba realizar cada uno.
Luego de identificar las entidades, debe resaltar los individuos o departamentos que dentro de ellas actúan
para llevar a cabo las actividades del proceso de negocio. Cada uno de estos individuos o departamentos
tendrá una ‘línea’ dentro del pool llamada lane. De esta forma, usted tendrá tantos pools como entidades
haya identificado, y dentro de cada uno de los pool tendrá tantos lanes como individuos o departamentos
pertenecientes a cada entidad haya determinado.
Finalmente, debe conocer que actividades realiza cada individuo dentro del contexto de su entidad y de qué
tipo es esa actividad: si es manual o automática, y dentro de estos dos tipos podrá encontrar ciertas
variaciones como envió de correos, solicitud de servicios, tiempos de espera, etc.
La modelación en Bizagi es sencilla de realizar, simplemente debe seleccionar el elemento que desea
insertar en el menú de la derecha y arrástralo hasta la hoja en blanco. A partir de esta acción puede realizar
cualquier diagrama. Además, provee de cierta flexibilidad que dando click derecho sobre cada componente
insertado, le permitirá indicar más exactamente el tipo de componente, es decir, a través de esta acción
21 | G u í a P r á c t i c a . B P M - S O A
puede ilustrar si una actividad es el envío de un correo electrónico, la recepción de un correo, una tarea
humana o una actividad automática.
Nota: Dado que el alcance de esta guía no pretende ahondar mucho en la modelación de procesos en
BPMN, le recomendamos que para más detalles consulte la guía oficial provista por la OMG (Object
Management Group) o ingrese a la documentación provista en la página de Bizagi: http://www.bizagi.com/.
4.2.1.
Proceso de selección
El proceso de selección de profesores de cátedra en la Pontificia Universidad Javeriana se realiza siempre
que un director de departamento o un instituto soliciten la contratación de una persona para uno de estos
cargos. En éste participan cuatro entidades representadas en cuatro diferentes pools: La facultad, la oficina
de relaciones laborales, la vicerrectoría académica y los candidatos. En la imagen del proceso mostrada en
la ilustración 6 (que puede detallar mejor, junto con las abreviaciones correspondientes, en la imagen
adjunta a este documento llamada: GRH BPMN modelo selección), cada pool se muestra con colores
diferentes. Encontrará en el pool de la facultad, en el lane del director de departamento o instituto el símbolo
de comienzo del proceso representado a través de un círculo verde.
Finalizado todo el proceso de negocio, en el caso de que un candidato haya rechazado la propuesta, podrá
ver que en el pool de la oficina de relaciones laborales, en el lane del asistente de nómina se dará
terminación a la oferta laboral y se acabará la instancia del proceso, que se simboliza con un círculo rojo. Si
por el contrario, un candidato decidió aceptar la oferta realizada, se dará paso al proceso de contratación y
posterior a este se darán por finalizados los procesos de selección y contratación del profesor de cátedra.
Del modelo, también es importante destacar el envío y recepción de correos electrónicos, los cuales se
identifican porque en la parte derecha superior de cada actividad hay una figura con forma de carta y tienen
una flecha con dirección izquierda – derecha si es de envío, mientras que las actividades de recepción de
correos tienen la misma identificación de la figura pero la flecha esta con dirección derecha – izquierda.
Para ver el detalle del proceso de selección de profesores de cátedra de la Pontificia Universidad Javeriana,
puede dirigirse a la primera sección de este documento, donde se explica detalladamente el flujo y podrá
comparar sus características respecto al siguiente diagrama en notación BPMN.
22 | G u í a P r á c t i c a . B P M - S O A
Ilustración 7. Proceso de selección de profesores de cátedra de la Pontificia Universidad Javeriana
También encontrará actividades de decisión, representadas por un rombo amarrillo. En ellas las decisiones
se toman de acuerdo a ciertas reglas y dependiendo de su respuesta tomarán un rumbo u otro. En el
modelo, podrá ver que cada camino será tomado si la respuesta a esa pregunta coincide con el nombre que
se le dio a la relación que lleva a la siguiente actividad.
4.2.2.
Proceso de contratación
El proceso de contratación de un profesor de cátedra se realiza inmediatamente después de que termina el
proceso de selección. En éste participan tres entidades representadas en tres diferentes pools: La oficina de
operaciones, la facultad que solicito el profesor y el o los candidatos elegidos. En la imagen del proceso
mostrado en la ilustración 7 (que puede detallar mejor, junto con las abreviaciones correspondientes, en la
imagen adjunta a este documento llamada: GRH BPMN modelo contratación), el pool de la oficina de
operaciones se representa en el degradado de azul oscuro. En ellos encontrara los puntos de inicio del
proceso y de finalización, representados con un círculo verde y rojo respectivamente.
Para ver el detalle del proceso de contratación de profesores de cátedra de la Pontificia Universidad
Javeriana, puede dirigirse a la primera sección de este documento, donde se explica detalladamente el flujo y
podrá comparar sus características respecto al siguiente diagrama en notación BPMN.
23 | G u í a P r á c t i c a . B P M - S O A
Ilustración 8. Proceso de contratación de profesores de cátedra de la Pontificia Universidad Javeriana
Además, verá que dentro del proceso hay dos actividades que deben ser realizados por personas
representados con el símbolo de un humano. Y encontrará cinco actividades más que deben ser realizadas
por el sistema bien sea automáticamente o con el llamado a ciertos servicios de negocio pertenecientes a la
misma oficina de operaciones.
En el pool de la facultad y en su lane de secretario de la facultad, verá que esta persona solo envía un correo
electrónico. Luego en el pool de los candidatos, en el lane de candidato se hace la firma del contrato y
finalmente se archivan los documentos generados, actividad bajo la responsabilidad del auxiliar de archivo
cuyo lane está ubicado en el pool de la oficina de operaciones.
24 | G u í a P r á c t i c a . B P M - S O A
5. Modelación de procesos en jBPM
5.1.
Introducción
En la actualidad, las compañías necesitan crecer de manera rápida para permanecer en el mercado que cada
vez es más competitivo; la mayoría de estas compañías comprenden el problema y optan por diseñar
procesos de negocio, sin embargo, no están organizados ni mucho menos automatizados, la razón es que
implementar soluciones para automatizar los procesos resulta costoso. Actualmente las empresas invierten
entre $500.000 - $1’000.000 de dólares para esta tarea [2], pero lo que muchas de ellas desconocen es que
existen herramientas libres para implementar tales soluciones, una gran alternativa para que las empresas
sean competitivas en el mercado a un precio favorable.
Jboss jBPM es una de estas herramientas libres la cual permite modelar procesos de negocio. Una de sus
mayores ventajas es que establece un puente entre los analistas de negocio y los desarrolladores [1]. Esta
guía presenta varias características sobre jBPM versión: 3.X, entre ellas: la forma de modelar los procesos de
negocio, el uso de anotaciones para conducir el proceso de negocio y un demo.
Existen en el mercado varios editores libres para BPM. Sin embargo, vale la pena destacar que gracias a que
se cuenta con la suite SOA de JBoss para implementar los procesos de negocio modelados, se puede hacer el
paso del diagrama jBPM a su desarrollo. Lo anterior, se hace sin costos de licencia lo que facilita su
adquisición y ajuste a presupuesto de las Pymes en éste caso. Gracias a esa situación y a la curva de
aprendizaje elevada para la utilización de esta herramienta, se decidió realizar esta guía.
25 | G u í a P r á c t i c a . B P M - S O A
5.2. ¿Qué permite modelar el editor gráfico de
jBPM?
5.2.1. Descripción general
Una definición de proceso jBPM representa la especificación formal de un proceso de negocio y está basada
en un grafo dirigido. El grafo está compuesto de nodos y transiciones. Cada nodo del grafo tiene un tipo
específico. El tipo del nodo define el comportamiento en tiempo de ejecución. Una definición de proceso tiene
exactamente un estado inicial. [3]
Ilustración 9. Ejemplo inicial de un modelo desarrollado con jBPM
Un Token indica en que nodo del grafo se encuentra la ejecución. A medida que la ejecución avanza, el token
va de nodo en nodo según sea la instrucción dada. [3]
Una instancia de proceso es una ejecución de una definición de proceso jBPM. Cuando una instancia de
proceso es creada, un Token es creado para el camino principal de la ejecución. Este Token es llamado el
Token Raíz de la instancia de proceso y es posicionado en el estado inicial de la definición de proceso. [3]
Una señal hace que el Token continúe en la ejecución del grafo. Cuando el Token recibe una señal sin
nombre, éste dejará su nodo actual y saldrá hacia la transición por defecto. Sin embargo, si en la
especificación de la señal viene un nombre de transición definido, el Token dejará el nodo actual y saldrá por
la transición definida. [3]
Tan pronto un Token entra a un nodo, éste será ejecutado. Los nodos en sí mismos son responsables por la
continuidad de la ejecución del grafo y de su comportamiento dependerá los caminos que siga el Token de ese
punto en adelante. Un nodo que espera una señal para continuar con la ejecución será llamado un nodo
estado. [3]
26 | G u í a P r á c t i c a . B P M - S O A
El gráfico representa la secuencia del proceso de negocio y cómo se comporta desde una vista gerencial. Sin
embargo, oculta muchos detalles técnicos que más adelante serán modelados por las acciones en código
Java. [3]
5.2.2. Nodos
Un nodo tiene un tipo específico. El tipo determina qué pasará cuando la ejecución llegue a este nodo en el
tiempo de ejecución. En jBPM existen ciertos tipos de nodos pre-implementados que pueden ser usados, o
bien, se podrían crean nuevos tipos de nodos escribiendo el código correspondiente para implementar un
comportamiento específico [3].
El propósito de este documento solo es presentar un resumen, si desea conocer más información al respecto
consulte el Manual [6].
A. Responsabilidad de los Nodos
Cada nodo tiene dos responsabilidades principales:
 Primero, pueden ejecutar código Java plano, es decir la función que deben realizar dentro del proceso.
Por ejemplo, actualizar una base datos, enviar un email, etc.

Segundo, un nodo es responsable por la propagación (continuidad) de la ejecución del proceso. Un
nodo podrá: No propagar la ejecución; Propagar la ejecución por una de las transiciones; Propagar la
ejecución por varios caminos (fork), creando varios tokens; Finalizar la ejecución del camino. [3]
Muchas de las herramientas de flujos de trabajo y sistemas BPM son propietarias. En este sentido, jBPM
representa una ventaja ya que a través del lenguaje JPDL (jBPM Process Definition Language) [4], se le
otorga el don a los desarrolladores de crear modelos más complejos y poderosos. A continuación, se
discutirán los tipos de nodos más importantes de JPDL.
Se podría decir que JPDL es a jBPM, lo que BPEL es a BPMN. JPDL permite darle vida al modelamiento
realizado en jBPM, dando paso a la ejecución de los nodos propuestos. Es un esquema XML en el cual se
relaciona el modelo con las clases o direcciones de servicios que deberá ejecutar cuando se encuentre en un
nodo determinado.
B. Tipo de Nodo: Tarea
Un nodo de tarea representa una o más tareas que son realizadas por humanos. Así
que cuando la ejecución llega a un nodo de Tarea, se esperará hasta que el usuario
realice su tarea cuya finalización creará la señal que dará continuidad al token hacia
los nodos siguientes. El tiempo que tardan los usuarios desde que llega la ejecución al nodo hasta que
completan sus tareas, se llama estado de espera. [3]
C. Tipo de Nodo: Estado
Es un nodo de espera en el cual no se ejecuta ninguna tarea. Su principal uso es
cuando se espera la señal de otro sistema para continuar con la ejecución. [3]
D. Tipo de Nodo: Decisión
Existen dos formas de modelar una decisión. La diferencia radica en “Quién” está
tomando la decisión. ¿La decisión deberá ser tomada por el proceso, según la
definición de proceso?, o ¿La decisión dependerá de una entidad externa?
27 | G u í a P r á c t i c a . B P M - S O A
a. Un nodo de decisión debe ser usado si es el propio proceso el responsable de tomar la decisión. Hay
dos formas para especificar el criterio de decisión. Una es añadiendo condiciones a las transiciones
mediante scripts, los cuales pueden estar en XML o beanshell script. Los nodos recorrerán estas
transiciones, hasta que encuentren una que satisfaga las condiciones. La primera que retorne true,
marcará el camino a seguir.
b.
Cuando la decisión no depende del proceso, sino de una entidad externa, la solución ideal es ubicar
un nodo de estado con varias transiciones de salida. Cuando llegue la señal, ésta deberá indicar cuál
es el camino a tomar. [3]
E. Tipo de Nodo: Fork
Un fork divide un camino de ejecución en múltiples caminos de
ejecución concurrente. El comportamiento por defecto del Fork,
crea un token hijo para cada transición que se desprende de
este nodo. De esta forma se crea una relación de padre - hijo. [3]
F. Tipo de Nodo: Join
Un Join por defecto asume que todos los tokens que llegan a él,
son hijos de un mismo padre. Esta situación se presenta cuando
con anterioridad se usó un nodo fork y se pretende que la
ejecución concurrente de los tokens hijos creados llegue a un solo punto. Luego de que todos lleguen a este
punto, se seguirá por una única transición.
Cuando uno o más tokens hijos no han llegado, el nodo se comportará como un nodo de estado a la espera de
ellos. [3]
G. Tipo de Nodo: Nodo
Este nodo permite escribir el propio código a través de una acción. Éste nodo, al
igual que los anteriores, será representado en el grafo pero no sé darán detalles
técnicos ya que la implementación lógica no es relevante para el analista de
negocio. [3]
Si se desea invocar un Web-Service, este nodo permitirá realizar esta acción. El siguiente ejemplo puede
aclarar esta implementación [7]:
Se puede observar como los
Nodo tipo <<Node>> son
invocaciones a Web-Services
que posiblemente residan en un
Bus de Servicios, mientras que
los nodo tipo <<Task Node>>
son acciones de revisión por
parte
de
los
usuarios
interesados.
28 | G u í a P r á c t i c a . B P M - S O A
H. Tipo de Nodo: Start-State
Este nodo es el primero en un proceso. Al ser el primero debe cumplir que a él no
llega ninguna transición y solo podrá haber un Start-State por proceso. Otra
característica importante es que éste nodo no se ejecuta. Solo sirve para indicar que
un proceso se ha creado y aún no comienza su ejecución. Un proceso sin nodo Start
es válido, pero no puede ser ejecutado. [4][5]
I. Tipo de Nodo: End-State
Una definición de proceso tiene solo un nodo de este tipo. La instancia de proceso
es finalizada cuando la ejecución llega a este punto. [9]
J. Tipo de Nodo: Mail-Node
Este nodo se encarga precisamente de enviar un email, según la configuración dada.
Se tiene un gran número de configuraciones que van desde el mensaje en sí mismo
hasta el servidor como un todo. En el caso del nodo y en código JPDL, un email
podría ser enviado de la siguiente forma [8]:
<mail-node name="send email" to="#{universidad}" subject="investigación" text="Se
ha cumplido el objetivo">
<transition to="the next node" />
</mail-node>
Se hablará sobre la forma de implementar este nodo en en el capítulo dedicado al uso de la Consola de
JBoss.
K. Tipo de Nodo: ESB-Service

Cuando se invoca un nodo de este tipo, se conoce como Orquestación de Servicios.
De esta forma se pueden invocar servicios ESB registrados en el bus JBoss ESB y
embebidos en algunas acciones especiales dentro de la definición del proceso. Hay
tres tipos de comunicación en este sentido:
Llamado de una vía, cuando se desea enviar información del proceso jBPM al bus ESB, generalmente
se hace dentro de las transiciones;

Comunicación de dos vías, realizado en un nodo aparte, sirve para enviar peticiones y recibir
información;

Comunicación de dos vías con tiempo de espera, se establece un tiempo límite de espera de las
respuestas [10].
Los servicios ESB se explicarán más adelante en el capítulo dedicado al uso de la Consola de JBoss.
5.2.3. Transiciones
Las transiciones tienen un nodo fuente y un nodo destino. El nodo fuente es representado con la propiedad
FROM y el nodo destino es representado con la propiedad TO.
Una transición puede tener un nombre, el cual será especificado en sus propiedades. Es importante que esta
propiedad sea única. Adicionalmente, cada nodo conocerá la lista de transiciones con las que se relaciona, en
29 | G u í a P r á c t i c a . B P M - S O A
caso de que la programación así lo requiera, la transición por defecto será la primera en la lista de un nodo
fuente. [3]
Nota: Si desea ver más ejemplos o aclarar alguna particular puede dirigirse al documento: Características y
posibilidades con jBPM 3.X [11]
30 | G u í a P r á c t i c a . B P M - S O A
5.3.
Adaptación a partir de un modelo BPMN
En la sección anterior se mostró como se trabajaba con jBPM a la hora de modelar ciertas actividades
necesarias dentro de un proceso. De la misma manera, BPMN tiene sus propias siglas descritas a
continuación y como éstas se pueden ‘traducir’ a jBPM.
Elemento
jBPM
BPMN
Tarea
Desempeñada por humanos, será
asignada a una persona cuando el
proceso sea ejecutado, la instancia
del proceso esperara a que la tarea
sea completada por la persona
encargada.
Es un tipo de nodo especial.
Permite al desarrollador escribir un
nodo definido por él. Típicamente es
usado cuando el desarrollador
necesita escribir código para hacer
que el sistema desempeñe alguna
acción.
Representan el trabajo realizado dentro de una
organización. Consumen recursos. Pueden ser simples
o compuestas. Se divide en los tipos que se muestran
en la imagen anterior. El tipo de tarea similar a la tarea
de jBPM es la denominada Usuario.
Las más importantes en nuestro ejemplo, son las tareas
de usuario, que son las realizadas por un humano. Las
tareas de servicio, que son realizadas automáticamente
bien sean por un servicio interno o externo. Y
finalmente, las tareas de envío o recepción que tienen
que ver con el correo electrónico.
Decisión
Se utiliza cuando la decisión que se
toma es basada en datos y no por el
usuario, si no por el proceso en sí
mismo.
Compuerta Exclusiva basada en eventos.
Divergencia: Ocurre cuando en un punto del flujo
basado en los datos del proceso se escoge un solo
camino de varios disponibles.
Convergencia: Es utilizada para confluir caminos
excluyentes.
Las compuertas son utilizadas para controlar la
divergencia y convergencia del flujo.
Eventos de inicio: Indican cuando un proceso inicia,
no tienen flujos de secuencia entrantes.
Inicio
Solo sirve para indicar que un
proceso se ha creado y aún no
comienza su ejecución.
Evento de inicio sin especificar: No se especifica
ningún comportamiento en particular para iniciar el
31 | G u í a P r á c t i c a . B P M - S O A
proceso.
Evento de inicio de Mensaje: Un proceso inicia
cuando un mensaje es recibido.
Evento de Inicio de Temporización: Indica que un
proceso inicia cada ciclo de tiempo o en una fecha
específica.
Evento de Inicio de Condición: Un proceso inicia
cuando una condición de negocio se cumple.
Evento de Inicio de Señal: El proceso inicia cuando se
captura una señal lanzada desde otro proceso. Tenga
en cuenta que una señal no es un mensaje, un mensaje
tiene claramente definido un destinatario, la señal no.
Evento de Inicio Múltiple: Indica que existen muchas
formas de iniciar el proceso y que al cumplirse una de
ellas iniciará el proceso.
Fin
Una definición de proceso tiene solo
un nodo de este tipo. La instancia
de proceso es finalizada cuando la
ejecución llega a este punto.
Evento de Fin sin especificar: Indica que un camino
del flujo llego al fin.
Evento de Fin de Mensaje: Permite enviar un mensaje
al finalizar el flujo.
Evento de Fin de Señal: Permite enviar una señal al
finalizar el flujo.
Evento de Fin Múltiple: Indica que varios resultados
pueden darse al finalizar un flujo.
Evento de Fin de Cancelación: Permite enviar una
excepción de la cancelación al finalizar el flujo. Solo se
utiliza en subprocesos transaccionales.
32 | G u í a P r á c t i c a . B P M - S O A
Evento de Fin de Error: Permite enviar una excepción
de error al finalizar el flujo.
Evento de Fin de Compensación: Este tipo de fin
indica que es necesaria una compensación al finalizar
el flujo.
Fork/Join
Representa actividades que se
pueden realizar en paralelo. Un
Fork divide el camino de ejecución,
para luego ser unidos por un Join.
Compuerta Paralela:
Divergencia: Se utiliza cuando varias actividades
pueden realizarse concurrentemente o en paralelo,
corresponde a Fork en jBPM.
Convergencia: Permite sincronizar varios caminos
paralelos en uno solo. El flujo continúa cuando todos
los flujos de secuencia de entrada hayan llegado a la
figura, corresponde a Join en jBPM.
Transiciones
Secuencia: representan el control de flujo y secuencia
de los objetos del flujo (actividades, compuertas,
eventos).
Especifica la ruta entre nodos.
Pueden tener nombre en el grafo.
-------------------------------------------------------------------Mensaje: representan la interacción entre varios
procesos. No representan flujos de control, representan
señales o mensajes.
--------------------------------------------------------------------Asociaciones: Se usan para asociar información
adicional del proceso.
Subprocesos
Subproceso: Actividad compuesta que incluye un
Es usado cuando se necesitan
conjunto
interno lógico de actividades y que puede ser
modelar subprocesos a un alto nivel
analizado en más detalle.
que se requieren dentro del proceso.
Nos permite romper un modelo muy
complejo en varios más manejables.
Subproceso embebido: Depende del proceso padre.
No contiene ni pools ni lanes.
33 | G u í a P r á c t i c a . B P M - S O A
Subproceso reusable: Es un proceso definido como
un diagrama de procesos independiente y que no
depende del proceso padre.
Canales /
Swimlanes
No se representan gráficamente, sin
embargo, si se especifican en XML.
Se definen grupos o roles que luego
serán útiles para asignar las tareas
a las personas.
Pool: Actúa como contenedor de un proceso,
representa un Participante Entidad o Rol. Siempre
existe al menos uno, así no se diagrame.
Lane: Subdivisiones del Pool. Representan los
diferentes participantes al interior de una entidad.
Nota: La tabla anterior fue generada a partir de: [13] [14] [15].
34 | G u í a P r á c t i c a . B P M - S O A
5.4.
Demo
Para la modelación de procesos, se ha tomado como referente el proceso de selección y contratación de
profesores de cátedra de la Pontificia Universidad Javeriana [12]. De esta forma, podrá ver la transformación
de cualquier diagrama hacia un esquema jBPM.
Para este ejemplo se han elaborado los diagramas correspondientes en notación BPMN con el fin de que
tenga un referente de un estándar internacional, y luego se muestra como su notación se transforma en un
diagrama jBPM.
Para crear un diagrama de jBPM, utilizando Eclipse con los plugins indicados en el capítulo de instalación,
debe iniciar un nuevo proyecto.
Ilustración 10. Creación de un nuevo proyecto
Asigne un nombre a su proyecto.
Ilustración 11. Asignando nombre a un nuevo proyecto
35 | G u í a P r á c t i c a . B P M - S O A
Dé click derecho sobre el nombre del proyecto y cree un nuevo elemento “Other”.
Ilustración 12. Creación de un nuevo elemento
Ahora, busque el elemento Process Definition dentro de la carpeta JBoss jBPM.
Ilustración 13. Creación del elemento Process Definition
36 | G u í a P r á c t i c a . B P M - S O A
Finalmente, escriba el nombre que le dará a su proceso.
Ilustración 14. Nombrando el proceso
Luego tendrá acceso a todas las herramientas de modelación que brinda jBPM. Verá que el proceso creado
corresponde a un archivo XML, y que como puede ver en la siguiente imagen, tiene 4 modos de edición:
Diagram, Deployment, Design y Source.
En el modo de edición Diagram, tiene acceso a todos los tipos de nodo, descritos en la sección anterior, en el
menú de la izquierda. Deberá seleccionar uno y arrástralo para comenzar la modelación de su proceso.
Igualmente, con la opción llamada “Transition” podrá agregar las relaciones entre los diferentes nodos que
haya puesto en el diagrama.
Ilustración 15. Partes importantes para la realización de diagramas
37 | G u í a P r á c t i c a . B P M - S O A
Para observar mejor la modelación de un proceso, lo ilustraremos con el caso de desarrollo escogido: El
proceso de selección y contratación de profesores de cátedra de la Pontificia Universidad Javeriana.
Primero, si usted ya tiene sus diagramas en otra notación, por ejemplo BPMN, verá que es sencillo modelar
el mismo proceso en jBPM. A continuación se muestra una parte del proceso de selección de profesores de
cátedra (El proceso completo se encuentra en la imagen adjunta a este documento: GRH BPMN Modelo
Selección) modelado con la notación BPMN. Verá que cada uno de los nodos tiene un tipo de nodo, bien sea
enviar un e-mail o realizar una tarea humana. Además, a la izquierda puede ver que cada uno de esos nodos
tiene un responsable, en este caso el profesional de compensación de la entidad: Oficina de relaciones
laborales.
En el siguiente ejemplo, verá cómo llega un mensaje o una señal al nodo llamado: revisión de la vacante
ORL_PC. En este punto el profesional de compensación de la oficina de relaciones laborales (ORL_PC) hará
una revisión de la vacante propuesta para profesor de cátedra de la Universidad. Luego, de realizar la
revisión, pasara a un nodo de decisión donde se preguntará si aprueba o no la propuesta de esa vacante. De
no hacerlo, enviara una notificación vía e-mail al Director de departamento o instituto (ORL_PC – DDI). Si la
aprueba, y se requiere publicación en medios publicitarios, ira a un servicio que realice esta actividad.
Finalmente, en este ejemplo, el flujo de actividades termina con la publicación de la vacante en el sistema
interno de la Universidad.
Ilustración 16. Demo en notación BPMN
En las imágenes adjuntas no solo encontrara el proceso de selección, sino también el de contratación (Ver
imagen adjunta a este documento: GRH BPMN Modelo Contratación). Ahora, la imagen 15, que encuentra a
continuación, corresponde a la misma sección de proceso anterior pero con la imagen generada desde la
modelación con jBPM.
Igual que BPMN y como se ilustro al inicio de la sección de modelación, jBPM provee un ambiente para crear
nodos de cualquier tipo, y en este caso equivalentes a los ya presentados con la notación anterior. Los nodos
fueron creados arrastrándolos dentro del diagrama y las relaciones entre ellos, con la opción “Transition” del
menú lateral. Si desea ver y comparar los modelos generados con una y otra notación, también se ha
38 | G u í a P r á c t i c a . B P M - S O A
adjuntado a este documento dos imágenes donde se usó jBPM (Ver imágenes adjuntas a este documento:
GRH jBPM Modelo Contratación y GRH jBPM Modelo Selección).
La explicación correspondiente del diagrama, donde podrá detallar cuál es la función de cada nodo, la podrá
encontrar en el archivo adjunto llamado: Documentación modelo jBPM.
De esta forma, puede crear sus diagramas de proceso inicialmente desde jBPM, o puede crearlos a partir de
los diagramas con los que ya cuente dentro de su organización. Para facilitar la conversión, en este caso de
la notación estándar internacional BPMN, hacia jBPM puede consultar la siguiente sección. Luego, se
mostrará el archivo XML generado por el gráfico y como se interpreta.
Ilustración 17. Demo jBPM
5.4.1. Archivo XML generado
Ilustración 18. Pestañas de navegación en Eclipse
El archivo XML generado a partir del diagrama realizado en jBPM se puede visualizar haciendo click en la
pestaña llamada “Source”.
Las siguientes son las líneas escritas en lenguaje JPDL, encontradas en el archivo XML, a partir del modelo
realizado en jBPM con el caso de la selección de profesores de la Pontificia Universidad Javeriana (Ver
imagen adjunta a este documento: GRH jBPM Modelo Selección). Tenga en cuenta que éste archivo no tiene
tildes para evitar posibles problemas después a la hora de ejecutar el diagrama.
En primera instancia, fíjese en la sección de código resaltada en rojo. Es un nodo tipo start, lo puede
reconocer por el inicio y final de la etiqueta: start-state. Además, encuentra que tiene una propiedad name.
Todos los nodos cuentan con esta propiedad que indica cual será el nombre que identificara a este nodo (sin
embargo, para el caso de los fork y los join, el nombre no aparecerá en el diagrama). Es importante, porque
además de identificar el nodo en el diagrama, permite la creación de las relaciones entre nodos.
39 | G u í a P r á c t i c a . B P M - S O A
Precisamente, el atributo transition to es el que indica hacia donde se dirigirá la ejecución luego de terminar
las tareas del nodo que contiene la propiedad. En el ejemplo, luego de que el nodo start-state llamado inicio
de la señal, la ejecución pasará directamente al nodo llamado crear vacante DDI. (Recuerde que las siglas y
la explicación de cada nodo la puede encontrar en el archivo adjunto a este documento, llamado:
Documentación modelo jBPM).
Las transiciones y su direccionalidad se pueden ver representadas a través de la propiedad to, la cual tiene
como valor el nombre del nodo al cual se deben dirigir.
Cuando se crea un modelo con el editor gráfico podrá editar los nombres de las transiciones. Si lo considera
importante para su entendimiento, puede poner nombre a todas las transiciones entre nodos. Sin embargo,
los casos más relevantes para realizar esta acción es cuando se tiene nodos de decisión. Fíjese en la
sección que está en azul, en ella se aclara que dependiendo de la decisión, el nodo destino será requiere
publicación o notificacion encargado ORL_PC – DDI. (Recuerde que las siglas y la explicación de cada nodo
la puede encontrar en el archivo adjunto a este documento, llamado: Documentación modelo jBPM).
A continuación, se mostrará un segmento del código JPDL que corresponde a la imagen del demo de jBPM.
Si desea ver el código entero de ambos diagramas, podrá ver los archivos adjuntos a esta guía titulados:
Selección XML y Contratación XML.
Las etiquetas resaltadas en color verde muestran como cada tipo de nodo es ‘traducido’ al lenguaje JPDL
con el cual se podrán hacer posteriores referencias a métodos de clases o servicios del bus que permitan
desarrollar determinada funcionalidad. Por ejemplo, un nodo de tarea será identificado con la etiqueta: tasknode; un nodo de decisión lo identificará con la etiqueta: decision; un nodo de correo electrónico lo
identificará con la etiqueta: mail-node.
El código resaltado en color rojo muestra un ejemplo de cómo, al dibujar un nodo start en el diagrama,
automáticamente se crea este código para ilustrar el nodo de inicio y la primera transición hacia donde se
dirige. En el código resaltado en azul, se da el ejemplo de un nodo de decisión, el cual dentro de sus
transiciones incluye el atributo name, para que la persona que interpreta el diagrama pueda seguir la
secuencia de acciones cuando existe una decisión por tomar y dependiendo de su resultado la ejecución
seguirá por un camino u otro.
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns=""
name="Seleccion catedra">
<start-state name="inicio">
<transition to="crear vacante DDI"></transition>
</start-state>
<task-node name="crear vacante DDI">
<transition to="revision de la vacante ORL_PC"></transition>
</task-node>
<task-node name="revision de la vacante ORL_PC">
<transition to="aprobacion de la vacante"></transition>
</task-node>
40 | G u í a P r á c t i c a . B P M - S O A
<decision name="aprobacion de la vacante">
<transition to="requiere publicacion" name="si"></transition>
<transition
name="no"></transition>
to="notificacion
encargado
ORL_PC
-
DDI"
</decision>
<decision name="requiere publicacion">
<transition to="publicar vacante externo" name="si"></transition>
<transition to="publicar vacante sistema" name="no"></transition>
</decision>
<mail-node name="notificacion encargado ORL_PC - DDI">
<transition to="eliminacion de vacante"></transition>
</mail-node>
<node name="publicar vacante externo">
<transition to="publicar vacante sistema"></transition>
</node>
<node name="publicar vacante sistema">
<transition to="elaboracion hoja de vida C"></transition>
</node>
<task-node name="elaboracion hoja de vida C">
<transition to="asociar candidato DDI"></transition>
</task-node>
(...)
<end-state name="fin"></end-state>
</process-definition>
Ilustración 19. Estructura del código jpdl generado por el grafo
Igualmente, en el caso del modelo para la contratación de profesores de cátedra de la Pontificia Universidad
Javeriana (Ver imagen adjunta a este documento: GRH jBPM Modelo Contratación), se generó un archivo
XML en lenguaje JPDL que encontrará en un documento adjunto a esta guía titulado: Contratación XML.
Podrá observar que en el caso del nodo de decisión también se modificó el nombre de las transiciones.
Tenga en cuenta que los cambios realizados en éste archivo, se verán reflejados automáticamente en la
pestaña Diagram. Más adelante, veremos más atributos que pueden ser agregados a la hora de programar
acciones determinadas que deben ser ejecutadas por cada nodo.
41 | G u í a P r á c t i c a . B P M - S O A
6. Implantación del proceso de negocio
usando la consola de JBoss
6.1.
Introducción
La aplicación web de la Consola de jBPM cumple con varios propósitos. En primer lugar, sirve como una
interfaz central de usuario para interactuar con las tareas en tiempo de ejecución generadas por la ejecución
de procesos. En segundo lugar, se trata de una consola de administración y monitoreo que permite
inspeccionar y manipular instancias de ejecución. La tercera función es BAM (Business Activity Monitoring)
Estas son las estadísticas sobre las ejecuciones del proceso. Esta información es útil para los gerentes ya
que pueden encontrar cuellos de botella o generar otro tipo de optimizaciones [26].
Ilustración 20. Vista general de los componentes de la consola [27]
El desarrollo para ejecución en Consola brinda varios beneficios, entre los que se encuentra un desarrollo
más rápido de la aplicación debido a que no requiere de un trabajo intenso en el diseño gráfico. La consola
ya provee un entorno en el cual solo se deben especificar los campos de los formularios necesarios para la
realización de las tareas humanas y, del modo que veremos, se vinculan los nodos del proceso a estos
formularios. Sin embargo, tenga en cuenta que esta consola es estándar, por lo cual si usted requiere de un
nivel de personalización mayor deberá recurrir al desarrollo de una aplicación.
Para acceder a la consola debe tener un servidor activo y luego, a través de un navegador web, ingresar a la
dirección: http://localhost:8080/jbpm-console. En ella encontrará una pantalla de bienvenida, la cual tendrá
una sección para que se identifique con cualquiera de los usuarios y contraseñas definidos, los cuales
deberán tener diferentes permisos sobre el proceso en ejecución. Para la asignación de estos permisos y la
correspondiente creación de usuarios y contraseñas, remítase a la siguiente sección donde se dará la
demostración de cómo hacerlo.
42 | G u í a P r á c t i c a . B P M - S O A
6.2.
Demo
6.2.1. Alcance
Dado que para mostrar la funcionalidad de la consola es innecesario desarrollar por completo los dos
procesos, se realizará el demo tomando como ejemplo solo una parte del proceso de selección de profesores
de cátedra. Se ilustraran los nodos más importantes: nodo de inicio, nodo de finalización de proceso, correo
electrónico, tarea humana, nodo de decisión y llamado a un servicio del bus. Podrá ver el alcance en la
siguiente imagen:
Ilustración 21. Alcance del desarrollo del demo utilizando la Consola
6.2.2. Formularios
A. Complemento de código en el nodo
Una de las funciones de la consola de jBPM permite enlazar formularios con nodos de tarea. A través de
estos formularios usted podrá mostrar o recopilar información necesaria para la continuidad de su proceso.
En el demo adjunto a este documento usted encontrara en la carpeta processDefinition los archivos de
extensión .xhtml (páginas web) que son enlazados a los nodos de tarea.
Se va a tomar como ejemplo el nodo de tarea llamado: “crear vacante DDI”. Fíjese en el código que se debe
agregar para realizar el enlace.
43 | G u í a P r á c t i c a . B P M - S O A
Con color azul verá las variables del formulario que debe llenar la persona. En este caso, la variable es
llamada tipo_vacante y el usuario que tenga acceso a esta tarea tendrá los permisos de escritura (write) y
lectura (read). Además se indica que antes de pasar a la siguiente etapa, el usuario deberá ingresar este
valor obligatoriamente. Eso se indica con la palabra required.
Por otro lado, y muy importante para la seguridad, fíjese en la sección resaltada en color naranja. El valor
asignado a la variable llamada actor-id es la que corresponde al rol que podrá tener permisos sobre esta
tarea. La forma de crear estos roles la verá más adelante.
También debe asegurarse de poner la etiqueta controller, resaltados en color rojo, dentro de los cuales
especificara las variables usadas en el formulario. Ahora, vista la forma de especificar en jpdl las variables
que se usarán, podrá ver a continuación la forma de realizar y enlazar el archivo xhtml que le dará soporte
gráfico al código realizado.
<task-node name="crear vacante DDI">
<task name="Crear vacante">
<assignment actor-id="DDI"></assignment>
<controller>
<variable name="tipo_vacante" access="read,write,required" />
<variable name="unidad_negocio" access="read,write,required" />
<variable name="familia_puesto" access="read,write,required" />
<variable name="posicion" access="write" />
<variable name="Cd_puesto" access="read,write,required" />
<variable name="titulo_oferta" access="read,write,required" />
<variable name="fecha_inicial" access="read,write,required" />
<variable name="fecha_final" access="read,write,required" />
<variable name="detalles" access="read,write,required" />
<variable name="publicacion" access="read,write,required" />
</controller>
</task>
<transition to="revision de la vacante ORL_PC"></transition>
</task-node>
Ilustración 22. Código en jPDL asociado al formulario de una tarea humana
B. Creación de la forma
Para ver el código completo de los formularios con extensión .xhtml ingrese a la carpeta del demo llamada
“processDefinition”. A continuación sólo vera secciones orientadas a guiar el entendimiento sobre la forma de
creación de formularios. En este caso, se muestra el archivo llamado Vacante.xhtml el cual contiene la
orientación gráfica, por darle una definición, sobre el formulario que aparecerá en la consola.
Las etiquetas en color rojo delimitan la sección del formulario, sin ellas, no será entendible cuáles campos se
deberá incluir en la consola. La etiqueta en color verde sirve para que en el titulo del formulario se muestre el
nombre de la tarea que se esta realizando en el momento.
La sección de código en color naranja es la forma en que se agrega una celda. Cada celda es un campo en
el formulario que contiene un nombre, el cual servirá de guía a la persona que esta llenando los datos, y un
valor que corresponde a la asignación que tiene esta variable. Si esta variable ya existe, aparecerá el valor
establecido anteriormente, mientras que si no tiene valor alguno, se guardará esta información en el contexto
de ejecución de la aplicación. Tenga en cuenta que se esta guardando un vector de variables y por esta
44 | G u í a P r á c t i c a . B P M - S O A
razón se denomina var[‘nombre_de_la_variable’]. El nombre que le de a la variable en un campo debe
corresponder al nombre que le dio en el código del proceso escrito en jpdl.
La sección en código azul es otro ejemplo de celda de datos donde al contrario de usar un elemento tipo
inputText como en la sección naranja, se uso un selectBooleanCheckBox para la necesidad que se requiera.
Podrá encontrar una variedad de elementos como estos dentro de la plataforma UI. En este caso concreto, al
tener un elemento de tipo CheckBox, dentro de la variable quedaran almacenados dos valores: true o false.
True será en caso de que se sea seleccionada la caja y false si ésta se deja vacía. Es importante que tenga
en cuenta que tipo de retorno tienen los elementos escogidos.
Finalmente, la sección morada indica los botones de acción que se tendrán disponible en el formulario. En
este caso, se puede usar los provistos por los componentes tf que principalmente ofrecen:



saveButton: Permitirá guardar los datos de la tarea y regresar más tarde a completarla, tomando en
cuenta la misma instancia de proceso.
cancelButton: Cancelará y eliminara todos los datos que hayan sido llenados. Finaliza el nodo de
tarea.
transitionButton: Da paso a la transición, con una función de guardar ejecutada antes de pasar al
siguiente nodo, de tal forma que se siga con la secuencia natural modelada para el proceso.
<ui:component>
<jbpm:dataform>
<f:facet name="header">
<h:outputText value="#{taskName}"/>
</f:facet>
<jbpm:datacell>
<f:facet name="header">
<h:outputText value="Tipo de vacante:"/>
</f:facet>
<h:inputText value="#{var['tipo_vacante']}" />
</jbpm:datacell>
(…)
<jbpm:datacell>
<f:facet name="header">
<h:outputText value="Requiere publicacion:"/>
</f:facet>
<h:selectBooleanCheckbox name="pub" value="#{var['publicacion']}"/>
</jbpm:datacell>
<jbpm:datacell>
<f:facet name="header">
<h:outputText value="Acciones"/>
</f:facet>
<tf:saveButton value="Guardar"/>
<tf:cancelButton value="Cancelar"/>
45 | G u í a P r á c t i c a . B P M - S O A
<tf:transitionButton value="Crear vacante"/>
</jbpm:datacell>
</jbpm:dataform>
</ui:component>
Ilustración 23. Código xhtml del formulario de la tarea humana
C. Integración del nodo con la forma
Luego de haber realizado las dos secciones anteriores, deberá vincular los archivos para que efectivamente,
cuando se ejecute el proceso y se llegue al nodo de tarea estipulado, se llame el formulario indicado para
que el usuario pueda ingresar o consultar la información pertinente y se logré la operación deseada. Para
vincular el formulario con el nodo debe ingresar al archivo llamado forms.xml dentro de la carpeta de
processDefinition, allí encontrará la estructura resaltada en el cuadro rojo.
Ilustración 24. Estructura de código en forms.xml
Las etiquetas <forms> delimitan el número de formas que se especificarán para la aplicación en consola.
Dentro de ellos existen formas individuales con dos atributos: task y form. Para un mejor entendimiento,
observe la sección anterior en color verde. El atributo task tiene como valor el nombre que tiene la tarea
dentro del nodo y el atributo form tiene el nombre del archivo donde se creo la estructura de la forma. De
esta manera, podrá vincular todas sus tareas humanas a una forma creada por usted mismo.
6.2.3. Creación de usuarios
Para crear los usuarios que tendrán permisos sobre cada uno de los nodos, por ejemplo, en el caso de un
nodo de tarea aquellos usuarios que podrán ingresar o leer información, debe dirigirse a la carpeta dentro del
servidor ~/server/default/deploy/jbpm.esb/jbpm-sql/ y allí editar el archivo llamado import.sql. Dentro de éste
encontrará instrucciones de insert dirigidos a tres tablas diferentes que contienen: los usuarios, los grupos de
usuarios y finalmente como se asocian esos grupos con los usuarios existentes.
46 | G u í a P r á c t i c a . B P M - S O A
En este caso vamos a realizar la siguiente inserción de usuarios en la tabla. Como puede ver en el ejemplo,
verá que se añadieron los usuarios: DDI (Director de departamento o instituto), ORL_PC (Oficina de
relaciones laborales – Profesional de compensación) y C (Candidato). En cuanto al ID, usted podrá ingresar
cualquier número siempre y cuando sea único en la tabla; CLASS_ hace referencia a si es usuario por lo
tanto deberá ir el valor ‘U’ siempre; NAME_ es el rol del usuario; EMAIL_ el correo electrónico y
PASSWORD_ la contraseña que le asignara a ese rol de usuario.
insert
into
JBPM_ID_USER
(ID_,CLASS_,NAME_,EMAIL_,PASSWORD_)
(5,'U','DDI','[email protected]','DDI');
insert
into
JBPM_ID_USER
(ID_,CLASS_,NAME_,EMAIL_,PASSWORD_)
(6,'U','ORL_PC','[email protected]','ORL_PC');
insert
into
JBPM_ID_USER
(ID_,CLASS_,NAME_,EMAIL_,PASSWORD_)
(7,'U','C','[email protected]','C');
Ilustración 25. Código SQL para inserción de usuarios
values
values
values
Es importante que recuerde que los nombres de usuario que cree, serán los usados en el código JPDL
asociado al diagrama de proceso dentro de la etiqueta assignment.
Ilustración 26. Relación de la creación de usuario con el proceso
Luego de esto, se crean los grupos de usuario. En este caso crearemos un grupo de usuarios en la tabla
JBPM_ID_GROUP. Se tiene un ID_ el cual debe ser único en la tabla, CLASS_ la cual debe ser ‘G’ ya que
se esta creando un grupo, un NAME_ el cual será el nombre del grupo, TYPE_ en este caso se crea para
que sea un rol de seguridad y finalmente PARENT_ en el caso de que existan jerarquías dentro de la
organización, sin embargo, en este caso como no aplica se deja el valor en NULL.
insert
into
JBPM_ID_GROUP
(ID_,CLASS_,NAME_,TYPE_,PARENT_)
(3,'G','user','security-role',NULL);
Ilustración 27. Código SQL para inserción de grupos
values
Finalmente, debemos asociar los usuarios creados con el grupo indicado. Para esto, usaremos los ID_ de
usuario y de grupo, con la particularidad de que debemos dejar en valor null el NAME_ y el ROLE_ de la
membresía, ya que lo hemos definido con anterioridad y en nuestro caso no tendrá ninguna aplicación.
Tenga en cuenta que el CLASS_ en este caso se señala con una ‘M’ de membership.
insert into JBPM_ID_MEMBERSHIP
(13,'M',NULL,NULL,5,3);
(ID_,CLASS_,NAME_,ROLE_,USER_,GROUP_)
values
47 | G u í a P r á c t i c a . B P M - S O A
insert into JBPM_ID_MEMBERSHIP
(14,'M',NULL,NULL,6,3);
insert into JBPM_ID_MEMBERSHIP
(15,'M',NULL,NULL,7,3);
(ID_,CLASS_,NAME_,ROLE_,USER_,GROUP_)
values
(ID_,CLASS_,NAME_,ROLE_,USER_,GROUP_)
values
Ilustración 28. Código SQL para relación de usuarios con grupos
Luego de realizar esta creación de usuarios, grupos y membresías en la base de datos, el usuario podrá
ingresar a la consola de jBPM y tomar parte de los nodos bajo los cuales se les ha dado permiso de manejo.
6.2.4. Nodo de correo electrónico
La versión de jBPM 3.X no soporta SSL ni STARTTLS, por lo tanto, esta dificultad hace que no se pueda
implementar un nodo de correo electrónico usando un servidor como Gmail. Sin embargo, existe una
solución a este inconveniente la cual consiste en cambiar el tipo de nodo de mail-node a un node. Luego, con
este nodo, se llamará una acción ejecutada desde una clase que permite enviar correos electrónicos. A
continuación, verá el desarrollo de esta solución.
Primero, en el código escrito en JPDL del nodo tipo node, deberá agregar la siguiente acción:
<node name="notificacion encargado ORL_PC - DDI">
<action name="mail" class="org.jboss.soa.esb.mail.Enviarmail">
</action>
<transition to="crear vacante DDI"></transition>
</node>
Ilustración 29. Estructura del nodo para enviar un correo electrónico
La parte resaltada en rojo indica la ubicación de la clase que tiene el método a ejecutar para enviar un correo
electrónico. Dentro de esta clase usted encontrará lo siguiente. Tenga en cuenta que la clase, resaltada en
color rojo, deberá llamarse de la misma forma descrita en la sección de código anterior.
public class Enviarmail implements ActionHandler {
@Override
public void execute(ExecutionContext arg0) throws Exception {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("usuarioejemplo", "contraseñaejemplo");
}
48 | G u í a P r á c t i c a . B P M - S O A
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject("[Asunto de prueba] Notificación proceso de
selección");
message.setText("Estimado señor(a),"
+
"\n\n
Su
solicitud
ha
sido
Modifíquela y envíela de nuevo.");
Transport.send(message);
System.out.println("Email enviado");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Ilustración 30. Método para el envío de un correo electrónico
rechazada.
El método resaltado en color azul es el que indica que su contenido se debe ejecutar tan pronto como el
nodo llame esta acción. Dentro de este método se encuentran varias secciones resaltadas en color naranja.
A continuación se hará una descripción de cada una de ellas y cómo, para el caso de gmail, usted deberá
configurarlas:






Mail.smtp.host: este atributo deberá tener la característica STMP que usará para enviar los correos.
En el ejemplo usted ve que se usara gmail. Para los demás atributos de configuración del servidor de
correos puede consultar la documentación del servicio que desee usar y fijar estos valores.
Usuarioejemplo y contraseñaejemplo: Se deberá tener una cuenta de correo electrónico con
contraseña, y esos valores se deberán escribir en este campo.
[email protected]: Este es el correo del cuál será emitido el mensaje.
[email protected]: Este es el correo al cuál será remitido el mensaje.
[Asunto de prueba]: Acá podrá especificar el asunto con el cual enviará el mensaje.
Texto del mail: El texto que enviará en el mensaje.
6.2.5. Nodo de decisión
Estos nodos basan su decisión dependiendo del valor que tenga uno de los objetos contenido en cualquiera
de los formularios. Por ejemplo, un nodo de decisión determinaría hacia donde enviar el token de ejecución
dependiendo de si un checkbox esta o no seleccionado o también si se escribió determinada palabra en un
área de texto.
En el caso de éste demo, el primer nodo de decisión se relaciona con la aprobación o negación de la vacante
creada para la contratación de un profesor. Por lo tanto, a continuación veremos el código escrito en JPDL
derivado de la diagramación del modelo y cómo, en la sección resaltada en rojo, se fija el atributo expression
para “consultar” el valor de la variable, en este caso, un checkbox.
49 | G u í a P r á c t i c a . B P M - S O A
El atributo expression mira el valor con el que haya sido enviando el checkbox dentro del formulario en el
momento en que llega al nodo de decisión. Si su valor fue true, fijará la respuesta como un verdadero y
seguirá su ejecución mediante la transición que tenga en su atributo name el mismo valor. En el caso
contrario, la ejecución se dirigirá a través de la transición con name falso.
<decision name="aprobacion de la vacante" expression="#{(aprob.value ==
true)?'verdadero':'falso'}">
<transition to="requiere publicacion" name="verdadero"></transition>
<transition to="notificacion encargado ORL_PC - DDI"
name="falso"></transition>
</decision>
Ilustración 31. Estructura del nodo de decisión
Por otro lado, tenga en cuenta que la celda en el archivo revision_vacante.xhtml se debe relacionar, como se
menciono en la sección 6.2.2, con la variable del checkbox. Además, en este momento es importante el
name que se le haya dado también en la celda. Compare el atributo expression resaltado con rojo en la
sección anterior y verá que su contenido hace un llamado a aprob.value, ahora mire la siguiente sección de
código resaltada en rojo y verá que se tiene el mismo nombre aprob. El llamado a su value, se hace para
saber si fue o no checkeado.
<jbpm:datacell>
<f:facet name="header">
<h:outputText value="Es aprobada:"/>
</f:facet>
<h:selectBooleanCheckbox name="aprob" value="#{var['aprobacion']}"/>
</jbpm:datacell>
Ilustración 32. Estructura de la celda para el checkbox de aprobación
6.2.6. Nodos para llamar servicios web
Como se habló en la sección 5.2.2, los nodos tipos node dan la libertad para realizar acciones más
complejas que la toma de una decisión o de la realización de una tarea humana. Una de las situaciones
frecuentes es invocar servicios de sistemas existentes dado que en general los procesos de negocio
modelan integración de múltiples sistemas de la empresa. Esta integración se puede realizar a través de la
invocación de servicios web, los cuales pueden ser creados internamente en la organización, adquirirlos
gratis o bajo algún tipo de licenciamiento. El alcance de esta guía no abarca el tema de conceptos y gestión
de servicios web, sin embargo, si se mostrará el camino para usarlos en un modelo de proceso, desarrollado
con las herramientas de JBoss.
Para comenzar, y dado nuestro ejemplo del proceso de selección de profesores de cátedra, crearemos un
servicio web para el nodo que implica publicación de una vacante en un sistema externo.
Primero, se debe crear un nuevo proyecto siguiendo la siguiente ruta: File – New – Project – Java / Java
Project. Se da el nombre que se desee y se acepta la creación del mismo. Dentro del proyecto se debe crear
una clase que contendrá el servicio web.
50 | G u í a P r á c t i c a . B P M - S O A
Ilustración 33. Ruta de creación del servicio web
Como puede ver en la ilustración anterior, se creo la clase siguiendo una ruta determinada. Esta práctica es
recomendada como una forma de tener un orden y estándar para la creación de servicios web. La ruta de
carpetas o paquetes índica que se alojará y podrá ser consultado en la dirección
http://javeriana.edu.co/publicarext. En la última carpeta es donde se debe poner la clase creada.
Esta clase tendrá en su implementación los métodos web que podrán ser invocados cuando se tenga acceso
al servicio web. A continuación puede ver un ejemplo sencillo de la implementación de un servicio web, éste
puede tener la complejidad que desee otorgarle.
Tenga en cuenta las anotaciones que debe agregar como @Stateless, @WebService y @WebMethod.
Dentro de la clase puede crear tantos métodos web como sean necesarios para sus operaciones, o bien,
esto es lo que hacen los proveedores cuando le ofrecen a usted una licencia por el uso de algún servicio web
ya creado, como servicios de pago desde tarjetas de crédito, entre otros.
Además de las anotaciones anteriores, también existe @WebParam, ésta se usa dentro de los métodos
cuando necesite que lleguen a ellos valores por parámetro. Por ejemplo, si necesitara un parámetro llamado
identificación en el método publicar(), debería mostrarlo de la siguiente manera:
publicar(@WebParam(name = “identificacion”) String identificacion)
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
@Stateless
@WebService(name = "publicar_ext_vac_ws", targetNamespace =
"http://javeriana.edu.co/publicarext")
public class publicar_ext_vac_ws {
@WebMethod
public void publicar() {
System.out.println("Publicando en un sistema externo");
}
}
Ilustración 34. Estructura de la clase que contiene el servicio web
51 | G u í a P r á c t i c a . B P M - S O A
Una vez creada la clase, debe generar el .jar de la aplicación creada. En Eclipse, se hace dando click
derecho sobre el archivo .java (resaltado en la ilustración 33), luego se da click en Export y finalmente se
selecciona dentro de la carpeta Java la opción JAR file. Allí deberá dar una ubicación para guardar el
archivo.
Ilustración 35. Muestra de la búsqueda del .wsdl
Ahora, debe copiar el archivo dentro del servidor que este usando en la siguiente ruta:
~/server/default/deploy. Una vez puesto dentro de esta carpeta, inicie el servidor y cuando termine de
hacerlo, diríjase a la siguiente dirección: http://localhost:8080/jbossws/services. Allí encontrará el archivo
.wsdl del servicio publicado, el cual es el descriptor del servicio web creado y publicado. Éste archivo será
usado dentro de nuestro proyecto principal para invocar los métodos del servicio web. Para obtenerlo, debe
dar click derecho y descargarlo en una carpeta de su computador.
A partir de éste archivo y haciendo uso de uno de los plugins instalados (JAX – WS), los cuales generan
clases proxy que permiten la conexión, realice sobre el proyecto principal las siguientes acciones: New –
Web Service Client. Allí indique la ruta donde se encuentra el wdsl y luego el directorio de salida. Con este
plugin se van a generar clases e interfaces esenciales para la invocación del servicio web creado. Las
interfaces son las siguientes: publicar_ext_vac_ws y publicar_ext_vac_wsService y las clases
son:
publicar_ext_vac_wsServiceLocator,
publicar_ext_vac_wsBindingStub
y
publicar_ext_vac_wsProxy [28].
Ahora, de la misma forma que se hace con el nodo de enviar el correo electrónico, debemos crear una clase
para invocar el servicio web, atando el método a una acción llamada desde el nodo. Para realizar esto, cree
una clase dentro de la carpeta: org.ejemplo.jboss.soa.esb.invocacionws, de la siguiente manera:
public class invocarwsext implements ActionHandler {
@Override
public void execute(ExecutionContext arg0) throws Exception {
try {
Publicar_ext_vac_wsProxy pwse = new
Publicar_ext_vac_wsProxy();
pwse.publicar();
} catch (RemoteException e) {
52 | G u í a P r á c t i c a . B P M - S O A
e.printStackTrace();
}
return null;
}
}
Ilustración 36. Estructura de la celda para el checkbox de aprobación
En la ilustración 36 puede ver cómo, en color verde, se crea una instancia del proxy generado previamente
automáticamente, y luego usando ese proxy, llama al método que desea ejecutar. De esta forma, cuando
ejecute el proceso y pase por este nodo, se llamará al método del web service deseado, dando un rango más
amplio de posibilidades de desarrollo para sus propósitos.
6.2.7. Uso del bus de servicios
Ahora veremos cómo se pueden implementar los nodos de correo electrónico y los llamados a servicios web
aprovechando el bus de servicios, el cuál finalmente, es el motor que permitirá a la empresa tener más
flexibilidad, escalabilidad e integridad.
Ilustración 37. Cambio de tipo de nodos
Se deben modificar cuatro archivos que atañen a la configuración del bus de servicios, con el propósito de
crear las colas, los listeners y los servicios como tal que podrán ser invocados desde un modelo de jBPM. El
primero de ellos es: hornetq-jms.xml. En este archivo se declara la creación de la cola que nos servirá para
invocar el servicio que necesitemos. En las ilustraciones 38 y 39 verá el ejemplo tanto de la cola para el
correo electrónico como para la invocación de servicios web.
<queue name="quickstart_bpm_orchestration4_enviarMail_service_esb">
<entry name="queue/quickstart_bpm_orchestration4_enviarMail_service_esb"/>
</queue>
Ilustración 38. Creación de la cola para el servicio de correo electrónico en el descriptor hornetqjms.xml
<queue name="quickstart_bpm_orchestration4_publicarwsext_service_esb">
<entry name="queue/quickstart_bpm_orchestration4_publicarwsext_service_esb"/>
</queue>
Ilustración 39. Creación de la cola para el servicio de invocación de un servicio web en el descriptor
hornetq-jms.xml
Usted podrá dar cualquier nombre a estas colas siempre y cuando sea antecedida por la sentencia:
“queue/(nombre de la cola)”. El segundo y tercer archivo se encargan de la creación de los Managed Beans
(mbeans) dentro del servidor de mensajes (JMS) y el servidor para monitorear los servicios publicados
(JMX). En ambos deben existir sentencias que aseguren el funcionamiento de los servicios que
posteriormente serán llamados desde el bus de servicios.
53 | G u í a P r á c t i c a . B P M - S O A
El código correspondiente al segundo archivo llamado: jbm-queue-service.xml lo verá en las ilustraciones 40
y 41. El código correspondiente al tercer archivo llamado: jbmq-queue-service.xml lo verá en las ilustraciones
42 y 43. Fíjese que las sentencias resaltadas en rojo, las cuales se encargan de citar la cola, deben coincidir
con las vistas en las ilustraciones 38 y 39.
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.quickstart.destination:service=Queue,name=
quickstart_bpm_orchestration4_enviarMail_service_esb"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">
jboss.messaging:service=ServerPeer</depends>
</mbean>
Ilustración 40. Creación del mbean para el servicio de correo electrónico en el servidor JMS en el
descriptor jbm-queue-service.xml
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.esb.quickstart.destination:service=Queue,name=
quickstart_bpm_orchestration4_publicarwsext_service_esb"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">
jboss.messaging:service=ServerPeer</depends>
</mbean>
Ilustración 41. Creación del mbean para el servicio de invocación de un servicio web en el servidor
JMS en el descriptor jbm-queue-service.xml
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.esb.quickstart.destination:service=Queue,name=
quickstart_bpm_orchestration4_enviarMail_service_esb">
<depends optional-attribute-name="DestinationManager">
jboss.mq:service=DestinationManager
</depends>
</mbean>
Ilustración 42. Creación del mbean para el servicio de correo electrónico en el servidor JMX en el
descriptor jbmq-queue-service.xml
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.esb.quickstart.destination:service=Queue,name=
quickstart_bpm_orchestration4_publicarwsext_service_esb">
<depends optional-attribute-name="DestinationManager">
jboss.mq:service=DestinationManager
</depends>
</mbean>
Ilustración 43. Creación del mbean para el servicio de invocación de un servicio web en el servidor
JMX en el descriptor jbmq-queue-service.xml
Finalmente, tendremos que crear los servicios dentro del descriptor: jboss-esb.xml. Una vez desplegado,
este archivo se encarga de facilitar los servicios para que sean llamados desde el modelo jBPM. Primero,
dentro de los tag <providers> y <jms-provider> deberemos llamar a través de un tag <jms-bus> las colas
creadas con el propósito de darle soporte a cada uno de los servicios, en nuestro caso, el nodo de correo
electrónico y el de invocación a un servicio web.
54 | G u í a P r á c t i c a . B P M - S O A
En la ilustración 44, se detallan en color azul los tags dentro de los cuales deben ser creados los canales,
encargados de hacer uso de las colas creadas para el intercambio de mensajes. El nombre de estos canales
se resalta en color verde y deben ser tenidos en cuenta debido a que más adelante serán referenciados en
los servicios del bus. Recuerde, que las sentencias en color rojo deben coincidir con las enunciadas en la
ilustración 37 y 38.
<providers>
<jms-provider connection-factory="ConnectionFactory"
name="JBossMQ">
(...)
<jms-bus busid="enviarMailChannel">
<jms-message-filter dest-name=
"queue/quickstart_bpm_orchestration4_enviarMail_service_esb"
dest-type="QUEUE" />
</jms-bus>
<jms-bus busid="publicarwsextChannel">
<jms-message-filter dest-name=
"queue/quickstart_bpm_orchestration4_publicarwsext_service_esb"
dest-type="QUEUE" />
</jms-bus>
</jms-provider>
</providers>
Ilustración 44. Creación de los canales de correo electrónico e invocación de servicio web en el
descriptor jboss-esb.xml
Luego, se arma la estructura de los servicios que harán uso de los canales anteriores para la transferencia
de mensajes. Estos servicios deben tener una categoría, la cual usted puede crear de acuerdo a sus
parámetros, por ejemplo, en este caso el atributo category será proceso_Javeriana. Además debe tener un
nombre, útil a la hora de invocar el servicio, y una descripción que hará más entendible la razón de ser del
servicio registrado en el bus.
A continuación, en la ilustración 45 puede ver en color naranja, las categorías de los servicios; en color azul,
sus descripciones; y en color rojo sus nombres. Tenga en cuenta que ninguno de estos parámetros puede
llevar tildes ni ningún otro carácter especial ya que por cuestiones de la herramienta, no permite compilar.
Adicionalmente, en color verde se enuncian los canales previamente definidos y que deben coincidir con las
propiedades de la ilustración 44.
Las acciones, igual que se hacía en la invocación sin usar el bus de servicios, deberán ser indicadas en la
propiedad class, referenciando a la clase donde se encuentra la implementación. Éstas se resaltan con color
morado.
<services>
<service category="proceso_Javeriana" description=
"Envio de correos electronicos" name="enviarMail">
<listeners>
<jms-listener busidref="enviarMailChannel"
name="enviarMailChannel" />
</listeners>
55 | G u í a P r á c t i c a . B P M - S O A
<actions>
<action class="org.jboss.soa.esb.mail.Enviarmail"
name="mail" />
</actions>
</service>
<service category="proceso_Javeriana" description="Publicacion de una
vacante en un sitio externo" name="publicarwsext">
<listeners>
<jms-listener busidref="publicarwsextChannel"
name="publicarwsextChannel" />
</listeners>
<actions>
<action class="org.jboss.soa.esb.invocacionws.invocarwsext"
name="invext" />
</actions>
</service>
</services>
Ilustración 45. Estructura de los servicios registrados en el bus en el descriptor jboss-esb.xml
En este punto, ya se tiene listo el desarrollo que permitirá la invocación de un servicio registrado en el bus.
Sin embargo, es importante que en el descriptor encargado de desplegar las colas, incluya las creadas para
el correo y la invocación del servicio web. Esto se realiza en el archivo llamado: deployment.xml, de la forma
como se ilustra en la ilustración 46.
<jbossesb-deployment>
(...)
<jmsQueue>quickstart_bpm_orchestration4_enviarMail_service_esb</jmsQueue>
<jmsQueue>quickstart_bpm_orchestration4_publicarwsext_service_esb</jmsQueue>
</jbossesb-deployment>
Ilustración 46. Líneas a insertar en el descriptor de despliegue de colas del bus en el descriptor
deployment.xml
Luego de haber realizado los pasos anteriores, ya está lista la configuración para hacer uso del bus de
servicios. Sin embargo, hay que hacer unas pequeñas modificaciones a las clases que ya se tenían de
correo electrónico e invocación de servicio web, como se muestra en la ilustración 47. En color rojo podrá ver
como se deberá extender ahora de una clase llamada AbstractActionPipelineProcessor. Además, el
método ahora será process y devuelve un Message al bus. Adicionalmente es importante que incluya un
constructor, ya que sin éste, no hará deploy el servicio creado. En nombredelaclase usted deberá poner el
nombre con el cual desea identificar la clase, para el ejemplo del demo, este nombre de la clase toma los de:
EnviarMail e invocarwsext.
public class nombredelaclase extends AbstractActionPipelineProcessor {
@Override
public Message process(Message arg0) throws ActionProcessingException {
//Contenido del método
return null;
}
56 | G u í a P r á c t i c a . B P M - S O A
public invocarwsext(ConfigTree configTree) {
}
}
Ilustración 47. Cambio en las clases.
Finalmente, sobre el buildfile registrado del proyecto, oprima la función de deploy para desplegar las colas y
archivos en el servidor. Luego entre a la página de la consola y siga el proceso que ha creado, o bien, si está
ejecutando éste demo, podrá realizar las mismas acciones cómo se índico a través de toda la sección 6.
57 | G u í a P r á c t i c a . B P M - S O A
7. Integración de una aplicación JEE5
con el bus de servicios de JBoss
7.1.
Introducción
En algunos casos, las funcionalidades brindadas por la consola de jBPM no es suficiente para suplir las
necesidades de una organización. Por esta razón, se presentan a continuación una serie de anotaciones
importantes a la hora de acoplar una aplicación Java EE 5 con jBPM, resaltando el uso del framework Seam
y del bus de Servicios dentro de jBPM.
7.1.1. Anotación @CreateProcess
@CreateProcess(definition="process definition name")
Crea una nueva instancia del proceso jBPM cuando el método retorna una salida no nula. El objeto
ProcessInstance estará disponible en la variable de contexto denominada processInstance [29].
Propiedades:
 definition:
El
nombre
de
la
definición
org.jboss.seam.core.jbpm.processDefinitions [29].
del
proceso
jBPM
vía
7.1.2. Anotación @ResumeProcess
@ResumeProcess(processIdParameter="processId")
Vuelve a entrar al alcance de la instancia del proceso existente jBPM cuando el método retorna una salida no
nula. El objeto ProcessInstances estará disponible en la variable de contexto denominada processInstance
[29].
Propiedades:
processIdParameter: Corresponde al nombre del parámetro de solicitud guardando el identificador del
proceso [29].
7.1.3. Anotación @StartTask
Inicia una tarea en jBPM. Especifica que una conversación de larga duración al igual que la anotación @Begin
comienza cuando el método retorna una salida no nula. Esta conversación está asociada con la tarea de
jBPM especificada en el parámetro de solicitud nombrada, también se define un contexto del proceso de
negocio, para la instancia del proceso de negocio [29].
La instancia de tareas de jBPM estará disponible en la variable de contexto “request” denominada
taskinstance. La instancia del proceso también estará disponible en la variable de contexto “request”
denominada processInstance. Estos objetos están disponibles por inyección @in [29].
58 | G u í a P r á c t i c a . B P M - S O A
Propiedades:
 taskIdParameter: Es el nombre del parámetro de solicitud el cual contiene el identificador de la tarea
[29].

FlushMode: modifica este modo a cualquiera de los manejados por las sesiones Hibernate o el
contexto de persistencia JPA [29].
7.1.4. Anotación @BeginTask
Especifica que una conversación de larga duración comienza cuando el método retorna una salida no nula. Se
asocia con la tarea jBPM especificada en el parámetro de solicitud mencionada [29]. La diferencia entre
@StartTask y @BeginTask es que la primera marca la tarea como iniciada una vez el método retorna de
manera exitosa, la segunda no afecta la tarea, es decir, no modifica ningún valor de la tarea [30].
7.1.5. Anotación @EndTask
Finaliza una tarea jBPM de tipo “Task Node”. Especifica que una conversación de larga duración termina
cuando el método retorna un valor no nulo, y que la tarea actual ha sido completada. Desencadena una
transición jBPM. La transición real disparará la transición por defecto a menos que la aplicación haya llamado
el siguiente método: Transition.setName() [29].
Disparadores de la transición jBPM
@EndTask(transition="transitionName")
Especifica que la tarea termina cuando el método retorna una de las salidas mencionadas.
@EndTask(ifOutcome={"success", "continue"})
Propiedades:
 transition: Corresponde al nombre de la transición jBPM que se disparará cuando termine la tarea. Se
utiliza Defaults a la transición por defecto [29].

ifOutcome: Especifica la salida o salidas JSF (Java Server Faces) que resultan al final de la tarea [29].

beforeRedirect: Por defecto, la conversación no será destruida hasta después de que haya alguna
redirección. Cambiando beforeRedirect a verdadero se especifica que la conversación debería ser
destruida al final de la solicitud actual, y que la redirección será procesada en un nuevo contexto de
conversación [29].
59 | G u í a P r á c t i c a . B P M - S O A
7.1.6. Relación Entre Anotaciones
Con el fin de dar más claridad a las anotaciones presentadas anteriormente se ilustrarán como estas se
relacionan con algunos nodos del ejemplo de una solicitud de materia prima a proveedor.
El nodo Start State se soporta sobre un método
en una clase POJO que se ve de la siguiente
manera [31]:
@CreateProcess(definition="simple")
public void startProcess() {
// Nueva Instancia de la petición
}
Los Task Node también se soportan sobre
clases POJO que contienen métodos con las
anotaciones para conducir a diferentes
transiciones dependiendo del nodo [31].
@StartTask
@EndTask(transition="next")
public void valorMateriaPrima() {
//Operaciones que requiera
}
Ilustración 48. Solicitud de materia prima
60 | G u í a P r á c t i c a . B P M - S O A
8. Referencias
[1] Página oficial del Proyecto JBoss jBPM. Consultada el día 22 de Octubre de 2011:
http://www.jboss.org/jbpm
[2] Información sobre tendencias en la gestión de procesos de negocio 2010. Consultado el día 22 de Octubre
de 2011: http://www.bptrends.com/surveys_landing.cfm
[3] Capítulo 9, Process Modelling. Guía para usuarios de jBPM. Consultado el día 22 de Octubre de 2011:
http://docs.jboss.org/jbpm/v3/userguide/processmodelling.html
[4] Capítulo 18, jBPM Process Definition Language. Guía para usuarios de jBPM. Consultado el 22 de Octubre
de 2011:http://docs.jboss.org/jbpm/v3/userguide/jpdl.html
[5] Jugando con jBPM #4. Start-State Node. Blog Salaboy. Consultado el día 22 de Octubre de 2011:
http://salaboy.wordpress.com/2008/08/21/jugando-con-jbpm-4-start-state-node/
[6] Guía para usuarios de jBPM. Consultado el día 01 de Abril de 2011:
http://docs.jboss.org/jbpm/v3/userguide/
[7] Capítulo 6, Service Orchestration. JBoss Documentation. Consultado el día 22 de Octubre de 2011:
http://docs.redhat.com/docs/en-US/JBoss_Enterprise_SOA_Platform/5/html/ESB_Services_Guide/ch06.html
[8] Capítulo 16, Email Support. Guía para usuarios de jBPM. Consultado el día 22 de Octubre de 2011:
http://docs.jboss.org/jbpm/v3/userguide/mail.html
[9] JBoss jBPM 2.0 jPDL Reference Manual. Consultado el día 22 de Octubre de 2011:
http://www.jboss.com/products/jbpm/docs/jpdl/
[10] ESB Service Orchestration with jBPM. Consultado el día 22 de Octubre de 2011:
http://www.mastertheboss.com/soa-a-esb/120-esb-service-orchestration-with-jbpm.html
[11] Romero, Cristian; Arias, Laura. Características y posibilidades con jBPM 3.X. Proyecto especial SOABPM. Pontificia Universidad Javeriana. 2011.
[12] Macroproceso gestión del talento Humano, Proceso selección. Oficina de organización y métodos.
Consultado el día: 24 de Agosto de 2011. Disponible en:
http://www.javeriana.edu.co/puj/viceadm/oym/ppd/documentos4-DGRH-TH-11.html
[13] Matt Cumberlige, Business Process Management with JBoss jBPM, A practical guide for business
analysts, Packt Publishing, 2007.
[14] BPMN Guía de Referencia, Bizagi.
[15] JBoss jBPM 2.0 jPDL Reference Manual. Consultado el día 22 de Octubre de 2011:
http://www.jboss.com/products/jbpm/docs/jpdl/
61 | G u í a P r á c t i c a . B P M - S O A
[16] Z. E. Akkaoui and E. Zimányi. Defining ETL worfklows using BPMN and BPEL. In DOLAP, pp. 41-48,
2009.
[17] C. Ouyang, M. Dumas, W. M. P. van der Aalst, A. H. M. ter Hofstede, and J. Mendling. From Business
Process Models to Process-Oriented Software systems. ACM Trans. Softw. Eng. Methodol., 19(1), 2009.
[18] Rosen, Michael; Lublinsky, Boris; Smith, Kevin; Balcer, Marc. Applied SOA – Service Oriented
Architecture and design strategies. Wiley Publishing. 2008.
[19] White, Stephen; Miers, Derek; Fisher, Layna; Moreno, Juan. BPMN Guía de Referencia y Modelado:
Comprendiendo y Utilizando BPMN. 2010.
[20] R.K. Ko, “A Computer Scientist’s Introductory Guide to Business Process Management (BPM),”
Crossroads, Vol. 15, No. 4, 11–18 (2009).
[21] Valani, D. and Chawan, R. K. and Ghazali, S. SOA enabled BPM rule engine. Proceedings of the
International Conference; Workshop on Emerging Trends in Technology. 2011
[22] Yang Liu; Enzhao Hu; Xudong Chen;, "Architecture of Information System Combining SOA and BPM,"
Information Management, Innovation Management and Industrial Engineering, 2008. ICIII '08. International
Conference on , vol.1, no., pp.42-45, 19-21 Dec. 2008
[23] Kiran K. Garimella; Bruce D. Williams; Michael J. Lees. BPM Basic for Dummies.
[24] Mike P. Papazoglou, Willem-Jan van den Heuvel; Service oriented architectures: approaches,
technologies and research issues, The VLDB Journal. Springer – verlag. 2007.
[25] Kennedy , Mark. Oracle BPEL Process Manager Quick Start Guide, 10g. BPEL Process Manager.
Oracle. Septiembre 2006.
[26] The jBPM console web application. Jboss. RedHat documentation.
[27] Chapter 1. Introduction. JBoss jBPM jPDL 3.2. jBPM jPDL user guide.
[28] Franky, Maria Consuelo. Aspectos avanzados en las aplicaciones Java EE 5. Parte G. Desarrollo de
aplicaciones Java EE 5 en base a Frameworks. Pontificia Universidad Javeriana.
[29] Información sobre anotaciones JEE que soportan jBPM. Consultado el día 27 de Enero de 2012:
http://docs.jboss.org/seam/1.2.1.GA/reference/en/html/annotations.html
[30] Dan Allen, Seam In Action, Mannin Publications 2009, Chapter 14.
[31] Información sobre anotaciones Jbpm. Consultado el día 27 de Enero de 2012:
http://mastertheboss.com/seam/90-seam-jbpm.html
62 | G u í a P r á c t i c a . B P M - S O A

Documentos relacionados