jBPM
-
Upload
vicente-garcia-diaz -
Category
Technology
-
view
1.501 -
download
2
description
Transcript of jBPM
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
Tabla de contenidos
1. Business Process Modeling
2. Instalación de jBPM
3. Instroducción a jBPM
4. jPDL
5. Ejercicios
2
jBPM
• 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?
• Depende…
5
Business Process Modeling
¿Qué aspecto tiene un BPM?
• 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?
• 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?
• 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?
• 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 …
Plataforma para ejecutar lenguajes de procesos de negocio
11
Instalación de jBPM
Introducción a jBPM
Process Virtual Machine
• 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
• 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
• En este caso estamos trabajando con Eclipse Indigo
14
Instalación de jBPM
Instalación de Eclipse
15
Instalación de jBPM
Instalación del plugin para Eclipse (I)
• Buscar la ruta de jbpm-4.0/gpd/jpbm-gpd-site.zip
16
Instalación de jBPM
Instalación del plugin para Eclipse (II)
17
Instalación de jBPM
Configuración del runtime jBPM en Eclipse
18
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (I)
19
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (II)
20
Instalación de jBPM
Inserción de las librerías de jBPM en el Build Path (III)
22
Introducción a jBPM
Procesos e instancias Process instance
/ Execution
Process Instance
Execution Execution
• 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)
• Se necesita un ProcessEngine para obtener los diferentes servicios que proporciona jBPM
24
Introducción a jBPM
ProcessEngine (II)
• 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)
26
Introducción a jBPM
ProcessEngine (IV)
• 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
• Se utiliza para comenzar una instancia de un proceso
• Algunas de las alternativas son:
28
Introducción a jBPM
ExecutionService
Lenguaje para describir procesos de negocio
• Elemento raíz que representa la definición de un proceso
• Atributos ▫ Name
▫ Key
▫ Version
• Elementos ▫ Description (0..1)
▫ Activities (1..*)
30
jPDL
Process
• 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)
• 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
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
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”
• 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
• 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
• 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
• Utiliza las actividades fork y join
38
jPDL Actividades de control de flujo
Concurrency (I)
Concurrency.jpdl.xml Concurrency.java
• 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
• Finaliza la ejecución de una instancia
40
jPDL Actividades de control de flujo
End
• 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
• 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
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
• 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
• 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
46
jPDL Actividades de control de flujo
Task (assigment handler) (II)
TaskAssigmentHandler.jpdl.xml TaskAssigmentHandler.java AssingTask.java
• 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
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
• Permite contener unos procesos dentro de otros
49
jPDL Actividades de control de flujo
Sub-process (outcome)
• Permite contener unos procesos dentro de otros
50
jPDL Actividades de control de flujo
Sub-process (outcome activity)
• Permite “personalizar”
el comportamiento de
las actividades
51
jPDL Actividades de control de flujo
Custom
Custom.jpdl.xml Custom.java PrintDots.java
• 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
• Permite evaluar un script
• Atributos ▫ Expr
▫ Lang
▫ Var
• Elementos ▫ Text
53
jPDL Actividades automáticas
Scripts
ScriptExpression.jpdl.xml ScriptExpression.java Person.java
• 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
• Permite enviar correos electrónicos
• Atributos ▫ Template
• Elementos ▫ From
▫ To
▫ CC
▫ BCC
▫ Subject
▫ Text
▫ Html
▫ Attachments
55
jPDL Actividades automáticas
• 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
• Por defecto, jBPM funciona de forma síncrona
• Ventajas VS Desventajas
• Atributo continue de las actividades de los procesos ▫ Sync
▫ Async
57
jPDL
Asincronismo
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
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