presentacion de PowerPoint de la fuente de poder.pptx
jBPM
1. Ingeniería Dirigida por Modelos
jBPM
Modelado de procesos de negocio
Vicente García Díaz – garciavicente@uniovi.es
University of Oviedo, 2013
Model Driven Engineering
Research Group
2. 2
Tabla de contenidos
jBPM
1. Business Process Modeling
2. Instalación de jBPM
3. Instroducción a jBPM
4. jPDL
5. Ejercicios
3.
4. 4
Business Process Modeling
¿Qué es un proceso de negocio?
• Lo que se hace para cumplir con las necesidades y
expectativas de los CLIENTES
▫ Los clientes son consumidores de un producto o servicio
▫ Pueden ser internos o externos
• En la Wikipedia
▫ en.wikipedia.org/wiki/Business_process
▫ “A business process is a recipe for achieving a commercial result.
Each business process has inputs, method and outputs. The
inputs are a pre-requisite that must be in place before the
method can be put into practice. When the method is applied to
the inputs then certain outputs will be created”
6. 6
Business Process Modeling Tecnologías BPM
BPMN - ¿Cómo se ve?
• Business Process Modeling Notation (BPMN)
▫ Estándar del OMG
• Notación gráfica para BPM
• Permite
▫ Que las personas técnicas y las no técnicas se entiendan fácilmente
▫ Especificar la forma en la que los elementos BPMN se mapean a WS-BPEL
7. 7
Business Process Modeling Tecnologías BPM
XPDL - ¿Cómo se guarda?
• XML Process Definition Language (XPDL)
▫ Estándar de WfMC
• Lenguaje XML para persistir diagramas BPMN
• Permite
▫ Intercambiar diagramas realizados con diferentes herramientas
▫ Almacenar incluso las coordinadas de los elementos
▫ Ampliar el lenguaje con extensiones
8. 8
Business Process Modeling Tecnologías BPM
WS-BPEL - ¿Cómo se ejecuta?
• Web Services Business Process Execution Language (WS-BPEL)
▫ Estándar de OASIS
• Lenguaje XML de ejecución de procesos de negocio mediante
servicios Web
• Permite
▫ Orquestar la comunicación entre diferentes servicios Web
▫ Ampliar el lenguaje con extensiones
• Extensiones
▫ BPEL4People
Permite que las personas formen parte del proceso de negocio
▫ BPELJ
Permite ejecutar código Java sin ser expuesto como servicio Web
9. 9
Business Process Modeling Tecnologías BPM
BPDML – Sintaxis abstracta
• Business Process Definition Metamodel (BPDM)
▫ Estándar del OMG
• Metamodelo derivado de MOF para definir procesos de negocio
• Permite
▫ Definir una base común para todos los BPM
▫ Utilizar el estándar XMI para persistir modelos
▫ Hacer los BPM interoperables con las herramientas ya disponibles
MOF M3
BPDM M2
Otro tipo de
BPMN … modelos
M1
12. 12
Instalación de jBPM
Instalación en producción
• La instalación comprende varios pasos
▫ Instalación del servidor de aplicaciones JBoss
▫ Instalación de jBPM
▫ Instalación del servidor de bases de datos
▫ Instalación de Eclipse
▫ Instalación del plugin para Eclipse
▫ Configuración de Eclipse
• Se necesita tener instalado el JDK
13. 13
Instalación de jBPM
Instalación de jBPM
• http://sourceforge.net/projects/jbpm/files/
▫ Versión 4.0
▫ Jbpm-4.0.zip
• Descomprimir la carpeta en una ruta del ordeandor
14. 14
Instalación de jBPM
Instalación de Eclipse
• En este caso estamos trabajando con Eclipse
Indigo
15. 15
Instalación de jBPM
Instalación del plugin para Eclipse (I)
• Buscar la ruta de jbpm-4.0/gpd/jpbm-gpd-site.zip
22. 22
Introducción a jBPM
Procesos e instancias
Process
Process instance Instance
/ Execution
Execution Execution
23. 23
Introducción a jBPM
ProcessEngine (I)
• Se necesita un ProcessEngine para obtener los
diferentes servicios que proporciona jBPM
• Para hacer pruebas con jBPM vamos a crear un proyecto
Java y:
▫ Añadir un paquete jbpm.pruebas
▫ Añadir la librería de usuario jBPM4
▫ Añadir la librería jUnit4
• Las librería se añaden desde la opción del menú
propiedades del proyecto
24. 24
Introducción a jBPM
ProcessEngine (II)
• Se necesita un ProcessEngine para obtener los
diferentes servicios que proporciona jBPM
25. 25
Introducción a jBPM
ProcessEngine (III)
• Jbpm.cfg.xml es el archivo en el que está la
información de configuración básica
• Puede haber otras fuentes
27. 27
Introducción a jBPM
RepositoryService
• Es uno de los servicios más importantes (trabajo con repositorio)
• Cada deployment es un conjunto de recursos
• Cada recurso es un array de bytes
deleteDeploymentCascade borra
todas las instancias de un proceso
• El ID es una mezcla entre una clave y el nº de versión
28. 28
Introducción a jBPM
ExecutionService
• Se utiliza para comenzar una instancia de un
proceso
• Algunas de las alternativas son:
30. 30
jPDL
Process
• Elemento raíz que representa la definición de un proceso
• Atributos
▫ Name
▫ Key
▫ Version
• Elementos
▫ Description (0..1)
▫ Activities (1..*)
31. 31
jPDL Actividades de control de flujo
Start
• Punto inicial de cualquier proceso
▫ Tiene que haber exactamente un punto inicial
• Atributos
▫ Name
• Elementos
▫ Transition (0..*)
Cambio de tipo de vista (gráfica / XML)
32. 32
jPDL Actividades de control de flujo
State – Definición gráfica
• Representa un estado de espera
▫ No hace nada hasta que llega un disparador externo
• Atributos
▫ Name
StateSecuence.jpdl.xml
33. 33
jPDL Actividades de control de flujo
State – Código para recorrer el proceso
Obtiene de la instancia
del proceso una
referencia al estado
actual en ejecución
Se envía una señal al
estado actual en
ejecución para
actualizar a la
instancia del proceso
actual
StateSequence.java
34. 34
jPDL Actividades de control de flujo
State (elección)
EJ: Crear los dos archivos (.jpdl y .java)
y hacer todo el recorrido pasando por la StateChoice.jpdl.xml
StateSecuence.jpdl.xml
transición de “reject” StateChoice.java
35. 35
jPDL Actividades de control de flujo
Decision (conditions)
• Realiza una evaluación automática para decidir el camino
• Atributos
▫ Expr Comilla s simples
▫ Lang
EJ: Crear los dos
archivos (.jpdl y .java) y
hacer todo el recorrido
llegando finalmente al
estado “try again”
StateSecuence.jpdl.xml
DecisionConditions.jpdl.xml
DecisionConditions.java
36. 36
jPDL Actividades de control de flujo
Decision (expressions)
• Realiza una evaluación automática para decidir el camino
• Atributos
▫ Expr
▫ Lang
DecisionExpression.jpdl.xml
DecisionExpression.java
37. 37
jPDL Actividades de control de flujo
Decision (handler)
• Realiza una evaluación automática para decidir el camino
Cambiar según caso.
• Atributos e.g. jbpm.pruebas.ContentEvaluation
▫ Class
EJ: Crear los archivos y
hacer todo el recorrido
llegando finalmente al
estado “submit
document”
DecisionHandler.jpdl.xml
DecisionHandler.java
ContentEvaluation.java
38. 38
jPDL Actividades de control de flujo
Concurrency (I)
• Utiliza las actividades fork y join
Concurrency.jpdl.xml
Concurrency.java
39. 39
jPDL Actividades de control de flujo
Concurrency (II)
• Utiliza las actividades fork y join
EJ: Crear los archivos y
hacer todo el recorrido
hasta el final
Concurrency.jpdl.xml
Concurrency.java
40. 40
jPDL Actividades de control de flujo
End
• Finaliza la ejecución de una instancia
41. 41
jPDL Actividades de control de flujo
End
• Sirve para finalizar una ejecución con diferentes estados
▫ Cancel
▫ Error
EJ: Crear los
archivos y hacer
todo el recorrido,
finalizando con una
cancelación y
comprobándolo
EndState.jpdl.xml
EndState.java
42. 42
jPDL Actividades de control de flujo
Task (assignee) (I)
• Crea una tarea para ser ejecutada por una persona
• Atributos (en pestaña Assigment)
▫ Type
▫ Expression
TaskAssignee.jpdl.xml
TaskAssignee.java
Order.java
43. 43
jPDL Actividades de control de flujo
Task (assignee) (II)
EJ: Crear los archivos y
hacer todo el recorrido
del proceso que aparece TaskAssignee.jpdl.xml
(review es una tarea que TaskAssignee.java
tiene que hacer alguien) Order.java
44. 44
jPDL Actividades de control de flujo
Task (candidate-groups)
• Es una tarea que alguien
de un grupo puede
llevar a cabo
TaskCandidates.jpdl.xml
TaskCandidates.java
45. 45
jPDL Actividades de control de flujo
Task (assigment handler) (I)
• Se utiliza para especificar programáticamente quién
hace/puede hacer una tarea
Cambiar según caso
TaskAssigmentHandler.jpdl.xml
TaskAssigmentHandler.java
AssingTask.java
46. 46
jPDL Actividades de control de flujo
Task (assigment handler) (II)
TaskAssigmentHandler.jpdl.xml
TaskAssigmentHandler.java
AssingTask.java
47. 47
jPDL Actividades de control de flujo
Sub-process (variables) (I)
• Permite contener unos procesos dentro de otros
SubProcessDocument.jpdl.xml
SubProcessReview.jpdl.xml
SubProcessDocument.java
48. 48
jPDL Actividades de control de flujo
Sub-process (variables) (II)
EJ: Crear los archivos y hacer
todo el recorrido destruyendo SubProcessDocument.jpdl.xml
finalmente los dos procesos con SubProcessReview.jpdl.xml
el método deleteDeployment SubProcessDocument.java
49. 49
jPDL Actividades de control de flujo
Sub-process (outcome)
• Permite contener unos procesos dentro de otros
50. 50
jPDL Actividades de control de flujo
Sub-process (outcome activity)
• Permite contener unos procesos dentro de otros
51. 51
jPDL Actividades de control de flujo
Custom
• Permite “personalizar”
el comportamiento de
las actividades
Custom.jpdl.xml
Custom.java
PrintDots.java
52. 52
jPDL Actividades automáticas
Java
• Permite invocar métodos Java
• Atributos
▫ Class
▫ Method
▫ Variable
• Elementos
▫ Field
▫ Arg
Java.jpdl.xml
Java.java
Saludar.java
53. 53
jPDL Actividades automáticas
Scripts
• Permite evaluar un script
• Atributos
▫ Expr
▫ Lang
▫ Var
• Elementos
▫ Text
ScriptExpression.jpdl.xml
ScriptExpression.java
Person.java
54. 54
jPDL Actividades automáticas
HQL / SQL
• Permite hacer consultas a la base de datos
• Atributos
▫ Var
• Elementos
▫ Query
▫ Parameter
EJ: Crear los archivos y verificar
mediante un assert el número de
tareas que hay guardadas en ese Hql.jpdl.xml
momento Hql.java
55. 55
jPDL Actividades automáticas
Mail
• Permite enviar correos electrónicos
• Atributos
▫ Template
• Elementos
▫ From
▫ To
▫ CC
▫ BCC
▫ Subject
▫ Text
▫ Html
▫ Attachments
56. 56
jPDL
Eventos
• Puntos en los que se lanzan eventos
▫ Para conseguirlo se implementa la interfaz EventListener
▫ En una transición
▫ En la entrada/salida de una actividad
Implementa
EJ: Crear los archivos y mostrar un org.jbpm.api.listener.EventListener
mensaje de texto mediante un
evento cuando: comienza y finaliza la EventListener.jpdl.xml
actividad y cuando se ejecuta una EventListener.java
transición a otra actividad LogListener.java
57. 57
jPDL
Asincronismo
• Por defecto, jBPM funciona de forma síncrona
• Ventajas VS Desventajas
• Atributo continue de las actividades de los procesos
▫ Sync
▫ Async
58.
59. Tarea 1
Crear un proceso de negocio
con jPDL que contenga al
menos:
- Inicio
- Decisiones
- Concurrencias
- Tareas
- Al menos un subproceso
- Una tarea Java
- Un script
- Diferentes tipos de finales
- Al menos un evento
OPCIONAL: Instalarlo en un
entorno real utilizando:
• jBoss
• MySQL
• jBPM
Hacer un caso de prueba que
recorra el proceso de inicio a fin