jBPM
-
Upload
vicente-garcia-diaz -
Category
Technology
-
view
1.500 -
download
2
description
Transcript of jBPM
![Page 1: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/1.jpg)
Ingeniería Dirigida por Modelos
jBPM Modelado de procesos de negocio
Vicente García Díaz – [email protected]
University of Oviedo, 2013 Model Driven Engineering
Research Group
![Page 2: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/2.jpg)
Tabla de contenidos
1. Business Process Modeling
2. Instalación de jBPM
3. Instroducción a jBPM
4. jPDL
5. Ejercicios
2
jBPM
![Page 3: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/3.jpg)
![Page 4: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/4.jpg)
• 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”
4
Business Process Modeling
¿Qué es un proceso de negocio?
![Page 5: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/5.jpg)
• Depende…
5
Business Process Modeling
¿Qué aspecto tiene un BPM?
![Page 6: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/6.jpg)
• 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
6
Business Process Modeling Tecnologías BPM
BPMN - ¿Cómo se ve?
![Page 7: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/7.jpg)
• 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
7
Business Process Modeling Tecnologías BPM
XPDL - ¿Cómo se guarda?
![Page 8: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/8.jpg)
• 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
8
Business Process Modeling Tecnologías BPM
WS-BPEL - ¿Cómo se ejecuta?
![Page 9: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/9.jpg)
• 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
9
Business Process Modeling Tecnologías BPM
BPDML – Sintaxis abstracta
MOF
BPDM
Otro tipo de modelos
M3
M2
M1 BPMN …
![Page 10: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/10.jpg)
Plataforma para ejecutar lenguajes de procesos de negocio
![Page 11: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/11.jpg)
11
Instalación de jBPM
Introducción a jBPM
Process Virtual Machine
![Page 12: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/12.jpg)
• 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
12
Instalación de jBPM
Instalación en producción
![Page 13: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/13.jpg)
• http://sourceforge.net/projects/jbpm/files/ ▫ Versión 4.0
▫ Jbpm-4.0.zip
• Descomprimir la carpeta en una ruta del ordeandor
13
Instalación de jBPM
Instalación de jBPM
![Page 14: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/14.jpg)
• En este caso estamos trabajando con Eclipse Indigo
14
Instalación de jBPM
Instalación de Eclipse
![Page 15: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/15.jpg)
15
Instalación de jBPM
Instalación del plugin para Eclipse (I)
• Buscar la ruta de jbpm-4.0/gpd/jpbm-gpd-site.zip
![Page 16: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/16.jpg)
16
Instalación de jBPM
Instalación del plugin para Eclipse (II)
![Page 17: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/17.jpg)
17
Instalación de jBPM
Configuración del runtime jBPM en Eclipse
![Page 18: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/18.jpg)
18
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (I)
![Page 19: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/19.jpg)
19
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (II)
![Page 20: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/20.jpg)
20
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (III)
![Page 21: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/21.jpg)
![Page 22: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/22.jpg)
22
Introducción a jBPM
Procesos e instancias Process instance
/ Execution
Process Instance
Execution Execution
![Page 23: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/23.jpg)
• 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
23
Introducción a jBPM
ProcessEngine (I)
![Page 24: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/24.jpg)
• Se necesita un ProcessEngine para obtener los diferentes servicios que proporciona jBPM
24
Introducción a jBPM
ProcessEngine (II)
![Page 25: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/25.jpg)
• Jbpm.cfg.xml es el archivo en el que está la información de configuración básica
• Puede haber otras fuentes
25
Introducción a jBPM
ProcessEngine (III)
![Page 26: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/26.jpg)
26
Introducción a jBPM
ProcessEngine (IV)
![Page 27: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/27.jpg)
• 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
• El ID es una mezcla entre una clave y el nº de versión
27
Introducción a jBPM
RepositoryService
deleteDeploymentCascade borra todas las instancias de un proceso
![Page 28: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/28.jpg)
• Se utiliza para comenzar una instancia de un proceso
• Algunas de las alternativas son:
28
Introducción a jBPM
ExecutionService
![Page 29: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/29.jpg)
Lenguaje para describir procesos de negocio
![Page 30: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/30.jpg)
• Elemento raíz que representa la definición de un proceso
• Atributos ▫ Name
▫ Key
▫ Version
• Elementos ▫ Description (0..1)
▫ Activities (1..*)
30
jPDL
Process
![Page 31: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/31.jpg)
• Punto inicial de cualquier proceso ▫ Tiene que haber exactamente un punto inicial
• Atributos ▫ Name
• Elementos ▫ Transition (0..*)
31
jPDL Actividades de control de flujo
Start
Cambio de tipo de vista (gráfica / XML)
![Page 32: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/32.jpg)
• Representa un estado de espera ▫ No hace nada hasta que llega un disparador externo
• Atributos ▫ Name
32
jPDL Actividades de control de flujo
State – Definición gráfica
StateSecuence.jpdl.xml
![Page 33: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/33.jpg)
33
jPDL Actividades de control de flujo
StateSequence.java
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
![Page 34: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/34.jpg)
34
jPDL Actividades de control de flujo
State (elección)
StateSecuence.jpdl.xml StateChoice.jpdl.xml StateChoice.java
EJ: Crear los dos archivos (.jpdl y .java) y hacer todo el recorrido pasando por la transición de “reject”
![Page 35: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/35.jpg)
• Realiza una evaluación automática para decidir el camino
• Atributos ▫ Expr
▫ Lang
35
jPDL Actividades de control de flujo
Decision (conditions)
StateSecuence.jpdl.xml
EJ: Crear los dos archivos (.jpdl y .java) y hacer todo el recorrido llegando finalmente al estado “try again”
Comilla s simples
DecisionConditions.jpdl.xml DecisionConditions.java
![Page 36: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/36.jpg)
• Realiza una evaluación automática para decidir el camino
• Atributos ▫ Expr
▫ Lang
36
jPDL Actividades de control de flujo
Decision (expressions)
DecisionExpression.jpdl.xml DecisionExpression.java
![Page 37: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/37.jpg)
• Realiza una evaluación automática para decidir el camino
• Atributos ▫ Class
37
jPDL Actividades de control de flujo
Decision (handler)
EJ: Crear los archivos y hacer todo el recorrido llegando finalmente al estado “submit document”
Cambiar según caso. e.g. jbpm.pruebas.ContentEvaluation
DecisionHandler.jpdl.xml DecisionHandler.java ContentEvaluation.java
![Page 38: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/38.jpg)
• Utiliza las actividades fork y join
38
jPDL Actividades de control de flujo
Concurrency (I)
Concurrency.jpdl.xml Concurrency.java
![Page 39: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/39.jpg)
• Utiliza las actividades fork y join
39
jPDL Actividades de control de flujo
Concurrency (II)
EJ: Crear los archivos y hacer todo el recorrido hasta el final
Concurrency.jpdl.xml Concurrency.java
![Page 40: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/40.jpg)
• Finaliza la ejecución de una instancia
40
jPDL Actividades de control de flujo
End
![Page 41: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/41.jpg)
• Sirve para finalizar una ejecución con diferentes estados ▫ Cancel
▫ Error
41
jPDL Actividades de control de flujo
End
EndState.jpdl.xml EndState.java
EJ: Crear los archivos y hacer todo el recorrido, finalizando con una cancelación y comprobándolo
![Page 42: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/42.jpg)
• Crea una tarea para ser ejecutada por una persona
• Atributos (en pestaña Assigment)
▫ Type
▫ Expression
42
jPDL Actividades de control de flujo
Task (assignee) (I)
TaskAssignee.jpdl.xml TaskAssignee.java Order.java
![Page 43: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/43.jpg)
43
jPDL Actividades de control de flujo
Task (assignee) (II)
EJ: Crear los archivos y hacer todo el recorrido del proceso que aparece (review es una tarea que tiene que hacer alguien)
TaskAssignee.jpdl.xml TaskAssignee.java Order.java
![Page 44: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/44.jpg)
• Es una tarea que alguien
de un grupo puede
llevar a cabo
44
jPDL Actividades de control de flujo
Task (candidate-groups)
TaskCandidates.jpdl.xml TaskCandidates.java
![Page 45: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/45.jpg)
• Se utiliza para especificar programáticamente quién hace/puede hacer una tarea
45
jPDL Actividades de control de flujo
Task (assigment handler) (I)
Cambiar según caso
TaskAssigmentHandler.jpdl.xml TaskAssigmentHandler.java AssingTask.java
![Page 46: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/46.jpg)
46
jPDL Actividades de control de flujo
Task (assigment handler) (II)
TaskAssigmentHandler.jpdl.xml TaskAssigmentHandler.java AssingTask.java
![Page 47: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/47.jpg)
• Permite contener unos procesos dentro de otros
47
jPDL Actividades de control de flujo
Sub-process (variables) (I)
SubProcessDocument.jpdl.xml SubProcessReview.jpdl.xml SubProcessDocument.java
![Page 48: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/48.jpg)
48
jPDL Actividades de control de flujo
Sub-process (variables) (II)
EJ: Crear los archivos y hacer todo el recorrido destruyendo finalmente los dos procesos con el método deleteDeployment
SubProcessDocument.jpdl.xml SubProcessReview.jpdl.xml SubProcessDocument.java
![Page 49: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/49.jpg)
• Permite contener unos procesos dentro de otros
49
jPDL Actividades de control de flujo
Sub-process (outcome)
![Page 50: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/50.jpg)
• Permite contener unos procesos dentro de otros
50
jPDL Actividades de control de flujo
Sub-process (outcome activity)
![Page 51: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/51.jpg)
• Permite “personalizar”
el comportamiento de
las actividades
51
jPDL Actividades de control de flujo
Custom
Custom.jpdl.xml Custom.java PrintDots.java
![Page 52: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/52.jpg)
• Permite invocar métodos Java
• Atributos ▫ Class
▫ Method
▫ Variable
• Elementos ▫ Field
▫ Arg
52
jPDL Actividades automáticas
Java
Java.jpdl.xml Java.java Saludar.java
![Page 53: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/53.jpg)
• Permite evaluar un script
• Atributos ▫ Expr
▫ Lang
▫ Var
• Elementos ▫ Text
53
jPDL Actividades automáticas
Scripts
ScriptExpression.jpdl.xml ScriptExpression.java Person.java
![Page 54: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/54.jpg)
• Permite hacer consultas a la base de datos
• Atributos ▫ Var
• Elementos ▫ Query
▫ Parameter
54
jPDL Actividades automáticas
HQL / SQL
Hql.jpdl.xml Hql.java
EJ: Crear los archivos y verificar mediante un assert el número de tareas que hay guardadas en ese momento
![Page 55: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/55.jpg)
• Permite enviar correos electrónicos
• Atributos ▫ Template
• Elementos ▫ From
▫ To
▫ CC
▫ BCC
▫ Subject
▫ Text
▫ Html
▫ Attachments
55
jPDL Actividades automáticas
![Page 56: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/56.jpg)
• 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
56
jPDL
Eventos
EventListener.jpdl.xml EventListener.java LogListener.java
EJ: Crear los archivos y mostrar un mensaje de texto mediante un evento cuando: comienza y finaliza la actividad y cuando se ejecuta una transición a otra actividad
Implementa org.jbpm.api.listener.EventListener
![Page 57: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/57.jpg)
• Por defecto, jBPM funciona de forma síncrona
• Ventajas VS Desventajas
• Atributo continue de las actividades de los procesos ▫ Sync
▫ Async
57
jPDL
Asincronismo
![Page 58: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/58.jpg)
![Page 59: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/59.jpg)
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
![Page 60: jBPM](https://reader033.fdocuments.ec/reader033/viewer/2022042623/547cbda9b4af9fe5458b474b/html5/thumbnails/60.jpg)
Bibliografía
60
• BPDM ▫ http://www.omg.org/spec/BPDM/
• BPMN ▫ http://www.bpmn.org
• jPDL ▫ http://jboss.org/jbossjbpm/jpdl/
• WS-BPEL ▫ http://www.oasis-
open.org/committees/tc_home.php?wg_abbrev=wsbpel
• XPDL ▫ http://www.xpdl.org