jBPM

60
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

description

Presentación sobre jBPM y el modelado de procesos de negocio

Transcript of jBPM

Page 1: 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

Page 2: jBPM

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
Page 4: 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?

Page 5: jBPM

• Depende…

5

Business Process Modeling

¿Qué aspecto tiene un BPM?

Page 6: jBPM

• 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

• 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

• 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

• 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

Plataforma para ejecutar lenguajes de procesos de negocio

Page 11: jBPM

11

Instalación de jBPM

Introducción a jBPM

Process Virtual Machine

Page 12: jBPM

• 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

• 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

• En este caso estamos trabajando con Eclipse Indigo

14

Instalación de jBPM

Instalación de Eclipse

Page 15: jBPM

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

16

Instalación de jBPM

Instalación del plugin para Eclipse (II)

Page 17: jBPM

17

Instalación de jBPM

Configuración del runtime jBPM en Eclipse

Page 18: jBPM

18

Instalación de jBPM

Inserción de las librerías de jBPM en el Build Path (I)

Page 19: jBPM

19

Instalación de jBPM

Inserción de las librerías de jBPM en el Build Path (II)

Page 20: jBPM

20

Instalación de jBPM

Inserción de las librerías de jBPM en el Build Path (III)

Page 21: jBPM
Page 22: jBPM

22

Introducción a jBPM

Procesos e instancias Process instance

/ Execution

Process Instance

Execution Execution

Page 23: jBPM

• 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

• Se necesita un ProcessEngine para obtener los diferentes servicios que proporciona jBPM

24

Introducción a jBPM

ProcessEngine (II)

Page 25: jBPM

• 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

26

Introducción a jBPM

ProcessEngine (IV)

Page 27: jBPM

• 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

• Se utiliza para comenzar una instancia de un proceso

• Algunas de las alternativas son:

28

Introducción a jBPM

ExecutionService

Page 29: jBPM

Lenguaje para describir procesos de negocio

Page 30: jBPM

• 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

• 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

• 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

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

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

• 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

• 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

• 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

• Utiliza las actividades fork y join

38

jPDL Actividades de control de flujo

Concurrency (I)

Concurrency.jpdl.xml Concurrency.java

Page 39: jBPM

• 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

• Finaliza la ejecución de una instancia

40

jPDL Actividades de control de flujo

End

Page 41: jBPM

• 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

• 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

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

• 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

• 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

46

jPDL Actividades de control de flujo

Task (assigment handler) (II)

TaskAssigmentHandler.jpdl.xml TaskAssigmentHandler.java AssingTask.java

Page 47: jBPM

• 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

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

• Permite contener unos procesos dentro de otros

49

jPDL Actividades de control de flujo

Sub-process (outcome)

Page 50: jBPM

• Permite contener unos procesos dentro de otros

50

jPDL Actividades de control de flujo

Sub-process (outcome activity)

Page 51: jBPM

• 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

• 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

• 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

• 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

• Permite enviar correos electrónicos

• Atributos ▫ Template

• Elementos ▫ From

▫ To

▫ CC

▫ BCC

▫ Subject

▫ Text

▫ Html

▫ Attachments

55

jPDL Actividades automáticas

Mail

Page 56: jBPM

• 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

• 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
Page 59: jBPM

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

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