jBPM

Post on 02-Dec-2014

1.500 views 2 download

description

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

Transcript of jBPM

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

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

Mail

• 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