Está en la página 1de 29

Ejercicios

Copyright 2016 Bonitasoft


Tabla de contenidos
Prefacio ........................................................................................................................................................... 3
1. Ejercicio: Modelado de proceso bsico .............................................................................................................. 4
2. Ejercicio: Aadiendo datos y especificando contratos ........................................................................................... 7
3. Ejercicio: Proceso con una puerta exclusiva ...................................................................................................... 13
4. Ejercicio: Creando formularios ....................................................................................................................... 17
5. Ejercicio: Manejo de Actores ......................................................................................................................... 25
6. Ejercicio: Conector de notificacin .................................................................................................................. 27

2
Prefacio
El objetivo de los ejercicios es crear un proceso bsico de solicitud de vacaciones.

El proceso se ejecutar de la siguiente manera:

1. Un empleado solicita unas vacaciones

2. El supervisor del solicitante valida la solicitud

Para implementar este proceso vamos a seguir un acercamiento iterativo mezclando contenido terico y ejercicios prcticos. Cada
ejercicio le permitir construir un ejecutable y una versin ms completa del proceso.

Cada ejercicio se divide en 3 secciones:

Objetivo - Presenta los objetivos del ejercicio.

Instrucciones - Contiene un resumen de los pasos principales requeridos para completar el ejercicio.

Instrucciones paso a paso - Contiene una descripcin detallada de los pasos requeridos para completar el ejercicio.

3
1. Ejercicio: Modelado de proceso bsico
Objetivo
El objetivo de este ejercicio es crear una primera versin bsica del diagrama de proceso de solicitud de vacaciones.

En esta fase el proceso es ejecutable pero tiene un valor limitado desde el punto de vista de negocio ya que no dispone an de
formularios o datos. Lo extenderemos en los ejercicios siguientes.

Instrucciones
Para hacer el ejercicio, crea un diagrama "Diagrama Solicitud de Vacaciones" en versin 1.0 que contenga un proceso "Solicitud
de Vacaciones" en versin 1.0.

El proceso debera contener los siguientes elementos BPMN:

Un evento de inicio llamado "Rellenar solicitud"

Una tarea humana llamada "Validar solicitud"

Un evento de fin llamado "Fin - Solicitud procesada"

Instrucciones paso a paso


1. Inicia Bonita Studio.

2. Crea un nuevo diagrama de proceso.

3. Nombra el diagrama y el proceso.

Haz click en cualquier parte del fondo del diseo del diagrama pero fuera del pool (esto seleccionar el diagrama).

Navega hasta la pestaa "General / Diagrama" y pulsa sobre "Editar...".

Introduce "Diagrama Solicitud de Vacaciones" como nombre de diagrama y "Solicitud de Vacaciones" como nombre de
proceso.

4. Renombra el evento de inicio a "Rellenar solicitud".

Selecciona el evento de inicio del proceso.

Navega hasta la pestaa "General / General" e introduce el nuevo nombre.

4
Ejercicio: Modelado de proceso bsico

5. Renombra la tarea humana a "Validar solicitud".

6. Aade un evento de fin llamado "Fin - Solicitud procesada".

Selecciona la tarea humana, y arrastra el icono de evento (A) desde el men contextual y selecciona el evento de fin (B).

Una vez creado el evento, renmbralo.

7. Asegurate que el diagrama coincide con el siguiente:

8. Guarda el proceso.

Haz click en "Guardar" en el men superior del Studio.

9. Ejecuta el proceso.

Haz click en el icono "Ejecutar" en el men superior del Studio.

Tu navegador debera abrir y mostrar un formulario automticamente generado que inicie el nuevo caso. Haz click en Inicio
para enviar el formulario.

Sers redirigido al listado de tareas dentro del Bonita Portal. Selecciona la tarea "Validar solicitud" y haz click en el botn
"Hacer" de arriba a la derecha.

5
Ejercicio: Modelado de proceso bsico

Enva el formulario de la tarea "Validar solicitud" para completar el caso.

6
2. Ejercicio: Aadiendo datos y
especificando contratos
Objetivo
El objetivo de este ejercicio es continuar la implementacin del proceso de Solicitud de Vacaciones:

1. estableciendo un Modelo de Datos de Negocio - Business Data Model (BDM)

2. especificando contratos para la instanciacin del proceso y para las tareas humanas

Una vez completado, el proceso ser ejecutado con formularios automticamente generados.

Warning
Es obligatorio poner atencin en el caso y en la sintaxis de los nombres tcnicos facilitados en las instrucciones.
No hacerlo podra producir errores.

Instrucciones generales
Duplica el diagrama de procesos del ejercicio anterior para crear la versin 2.0.

Crea un BDM llamado "SolicitudVacaciones" con los siguientes atributos:

Nombre Tipo Requerido


solicitanteId Long S
diaInicio Date S
numDias Integer S
aprobado Boolean No

Declara una variable "solicitud" de tipo "SolicitudVacaciones" en tu pool.

Genera un contrato en la instanciacin del proceso desde la variable "solicitud" y que contenga los siguientes elementos:

diaInicio

numDias

Aade estas dos restricciones en el contrato:

"diaInicio" debe ser una fecha futura

"numDias" debe ser estrictamente mayor que 0

Inicializa el BDM "solicitud" con el siguiente cdigo:

def solicitudVacacionesVar = new com.company.model.SolicitudVacaciones()


solicitudVacacionesVar.diaInicio = solicitudInput.diaInicio
solicitudVacacionesVar.numDias = solicitudInput.numDias

// Tomar la instancia actual del proceso


def processInstance = apiAccessor.processAPI.getProcessInstance(processInstanceId);

// Aadir id del solicitante a la nueva peticion


solicitudVacacionesVar.solicitanteId = processInstance.startedBy;

return solicitudVacacionesVar

7
Ejercicio: Aadiendo datos y especificando contratos

Aade un contrato a la tarea "Validar Solicitud" con el siguiente elemento:

aprobado (Boolean)

Aade una operacin en la tarea "Validar Solicitud" para enlazar el campo "aprobado" con la "solicitud" BDM con el valor
devuelto por el contrato.

Instrucciones paso a paso


1. Duplica el diagrama de procesos del ejercicio anterior y crea una versin 2.0.

En el men superior del Studio, haz click en "Proceso / Duplicar".

Actualiza el diagrama de procesos y los nmeros de la versin del Pool.

2. Crea el BDM "SolicitudVacaciones"

Navega hasta el men superior "Desarrollo / Modelo de Datos de Negocio / Administrar".

Haz click en "Aadir" (A) en la "Lista de Objetos de Negocio" y nombra al objeto "SolicitudVacaciones" (B) (ste es un
nombre tcnico as que no debera contener espacios o caracteres especiales).

Con el objeto "SolicitudVacaciones" seleccionado, aade los siguientes atributos (C):

Nombre Tipo Requerido


solicitanteId Long S
diaInicio Date S
numDias Integer S
aprobado Boolean No

8
Ejercicio: Aadiendo datos y especificando contratos

Haz click en "Finalizar".

3. Declara una instancia del BDM "SolicitudVacaciones" en tu proceso.

Selecciona el Pool del proceso y navega hasta la pestaa "Datos / Variables de proceso".

En la seccin de "Variables de negocio", haz click en "Agregar".

Nombra la variable "solicitud" y selecciona el objeto de negocio "SolicitudVacaciones".

Haz click en "Finalizar".

4. Establece el contrato de instanciacin del proceso.

Selecciona la Pool del proceso y navega hasta la pestaa "Ejecucin / Contrato / Entradas".

Haz click en "Aadir desde datos...".

Selecciona el BDM "solicitud" y haz click en "Siguiente".

Deselecciona los atributos "solicitanteId" y "aprobado".

9
Ejercicio: Aadiendo datos y especificando contratos

Haz click en "Finalizar" y obvia los mensajes de advertencia sobre la instanciacin incompleta de la variable de negocio.

An en la pestaa "Ejecucin / Contracto", cambia a la pestaa "Restricciones".

Aade las siguientes restricciones:

Propiedad Valor
Nombre comienzoSolicitudFuturo
Expresin solicitudInput.diaInicio.compareTo(new Date()) > 0;
Mensaje de error La fecha de comienzo de las vacaciones debe comenzar en el futuro.

Aade una segunda restriccin:

Propiedad Valor
Nombre alMenosUnDia
Expresin solicitudInput.numDias > 0;
Mensaje de error La cuenta de das debe ser mayor que cero.

5. Actualiza la instanciacin del BDM "solicitud"

Selecciona la Pool del proceso y navega hasta la pestaa "Datos / Variables de proceso".

Selecciona la variable de negocio "solicitud" y haz click en "Editar".

Haz click en el icono del "Lpiz" junto al campo "Valor predeterminado" para abrir el editor de expresiones.

Limpia todo el cdigo generado y reemplzalo por el siguiente:

def solicitudVacacionesVar = new com.company.model.SolicitudVacaciones()


solicitudVacacionesVar.diaInicio = solicitudInput.diaInicio
solicitudVacacionesVar.numDias = solicitudInput.numDias

10
Ejercicio: Aadiendo datos y especificando contratos

// Tomar la instancia actual del proceso


def processInstance = apiAccessor.processAPI.getProcessInstance(processInstanceId);

// Aadir id del solicitante a la nueva peticion


solicitudVacacionesVar.solicitanteId = processInstance.startedBy;

return solicitudVacacionesVar

Esto iniciar el BDM desde las variables del contrato y establecer al iniciador del proceso como el autor de la solicitud.

6. Establece el contrato de la tarea "Validar solicitud"

Selecciona la tarea "Validar solicitud" y navega hasta la pestaa "Ejecucin / Contrato / Entradas".

Haz click en "Aadir" y cambia el nombre por "aprobado" y su tipo por "BOOLEAN".

7. Aade una operacin a "Validar solicitud" para actualizar la peticin

Con la tarea "Validar solicitud" seleccionada, navega hasta la pestaa "Ejecucin / Operaciones".

Haz click en "Aadir"

Selecciona "solicitud" como destino.

Haz click en el link "Toma valor de" y cambia al tipo de operador "Use un mtodo Java".

Selecciona el mtodo "setAprobado" y haz click en "Aceptar".

En el selector de la derecha, selecciona la entrada del contrato "aprobado".

8. Guarda el proceso.

Haz click en el botn "Guardar" en la barra de men superior desde el Studio.

9. Ejecuta el proceso para probar las restricciones de tu contrato.

Ejecuta el proceso y usa el formulario automticamente generado para probar tus restricciones.

Consejos:

para la entrada "diaInicio", introduce una fecha en el formato YYYY-MM-DD.

para la entrada "aprobado", introduce un valor booleano: "true" "false".

11
Ejercicio: Aadiendo datos y especificando contratos

12
3. Ejercicio: Proceso con una puerta
exclusiva
Objetivo
El objetivo de este ejercicio es extender el proceso existente aadiendo una validacin dinmica a la solicitud de vacaciones. Para
alcanzar dicho objetivo usaremos una compuerta exclusiva que derivar en dos caminos distintos: el primero cuando la solicitud
se acepte, y la otra se rechace.

Instrucciones
Duplica el diagrama de proceso del ejercicio anterior para crear la versin 3.0.

Modifica el diagrama para aadir los siguientes elementos despus de la tarea "Validar Solicitud":

una compuerta exclusiva llamada "Aceptado?"

una tarea de servicio llamada "Notificar aceptacin solicitud"

un evento de fin llamado "Fin - Solicitud rechazada"

una tarea de servicio llamada "Notificar rechazo de solicitud"

un evento de fin llamado "Fin - Solicitud aceptada"

Configura las transiciones salientes de la puerta exclusiva para que puedan controlar dinmicamente el flujo basndose en los
datos del proceso.

Instrucciones paso a paso


1. Duplica el diagrama de proceso del ejercicio anterior para crear la versin 3.0.

2. Elimina el evento de fin.

Selecciona el evento en el diagrama y pulsa "Suprimir" en tu teclado.

3. Aade una puerta exclusiva llamada "Aceptado?" seguida de la tarea humana "Validar Solicitud".

Selecciona la tarea "Validar Solicitud", pincha y arrastra del icono de compuerta del men contextual.

Cuando hayas creado la compuerta, utiliza el icono "herramientas"(1) para modificar el tipo a "Exclusiva"(2).

13
Ejercicio: Proceso con una puerta exclusiva

Cambia el nombre de la compuerta a "Aceptado?".

4. Crea una tarea de servicio llamada "Notificar aceptacin solicitud" despus de la compuerta.

5. Aade un evento de fin llamado "Fin - Solicitud aceptada" seguida de la recin creada tarea automtica.

6. Crea una tarea de servicio llamada "Notificar rechazo de solicitud" despus de la compuerta.

7. Aade un evento de fin llamado "Fin - Solicitud rechazada" seguida de la recin creada tarea automtica.

8. Agrega una etiqueta a las dos transiciones salientes de la compuerta

La transicin que conecta con "Notificar aceptacin solicitud" deber llamarse "Si" y la otra "No".

9. Configura la condicion en la transicion "Si" usando el atributo "aprobado" del BDM "solicitud".

Selecciona el flujo y haz click en el icono del "lpiz" junto al selector de "Condicin" para abrir el editor de expresiones.

En el editor de expresiones, selecciona "Java" como tipo de expresin, selecciona la variable "solicitud" y el mtodo "is-
Aprobado".

10.Define el flujo "No", como flujo por defecto.

Selecciona el flujo y marca el check "Flujo por defecto".

11.Valida el diagrama.

Cuando las condiciones de los flujos estn definidas, podrs validar el diagrama. Para ello, navega hasta la pestaa "Estado
de validacin" y haz click en "Refrescar". Puedes ignorar con seguridad las 3 advertencias relacionadas con el UI Designer.

12.Asegrate de que el diagrama coincide con ste:

14
Ejercicio: Proceso con una puerta exclusiva

13.Ejecuta varias veces el proceso para comprobar los distintos caminos.

Aviso: no hagas click varias veces en el botn "Ejecutar", esto redesplegar el proceso y limpiar el historico. Para crear una
segunda instancia de proceso, debers navegar por el Bonita Portal.

Para ello, navega hasta el men "Procesos" (A) y selecciona el proceso "Solicitud de vacaciones" definido en la versin 3.0
(B) y haz click en "Inicio" (C).

14.Comprueba que el proceso se ha ejecutado correctamente desde la interfaz de administracin del Portal.

En el Portal, cambia al perfil "Administrador" desde el desplegable de arriba a la derecha.

Navega hasta el men "BPM / Casos"(A) luego, cambia a la pestaa "Casos Archivados"(B) y haz click en el link "..." en la
columna de acciones (C) para ver los detalles del caso.

15
Ejercicio: Proceso con una puerta exclusiva

Comprueba la seccin "Tareas realizadas" para validar la ejecucin del procesos:

16
4. Ejercicio: Creando formularios
Objetivo
El objetivo de este ejercicio es disponer de una interfaz amigable para la ejecucin del proceso.

Instrucciones
Duplica el diagrama de proceso del ejercicio anterior para crear la versin 4.0.

Crea los siguientes formularios:

Un formulario de instanciacin "rellenarSolicitud" donde agregar las variables "diaInicio" y "numDias".

Un formulario de tarea "Validar Solicitud de vacaciones" que muestre los detalles del usuario "solicitante", las variables "di-
aInicio" y "numDias" en solo lectura y permita definir la variable "aprobado".

Instrucciones paso a paso


1. Duplica el diagrama de proceso del ejercicio anterior para crear la versin 4.0.

2. Crea un formulario de instanciacin.

Selecciona el Pool del proceso y navega a la pestaa "Ejecucin / Formulario de instanciacin".

Usa el selector de "Formulario de destino" para crear un nuevo formulario.

Esto abrir el UI Designer en un navegador con un formulario automticamente generado desde el contrato de instanciacin.

3. Renombra el formulario.

Usa el campo de texto de arriba de la pantalla para renombrar el formulario con el nombre "rellenarSolicitud" (ste es un
nombre tcnico as que no debera contener espacios ni caracteres especiales).

Haz click en "Guardar".

4. Aade un contenedor de formularios

Arrastra y suelta un widget de "Form container" desde la paleta de widgets de la izquierda en una nueva fila debajo del widget
"Solicitud Input".

Consejo: Una zona de lneas discontnuas te permiten insertar una nueva fila cuando te sitas en la separacin entre dos
widgets.

17
Ejercicio: Creando formularios

El widget "Form container" permite validar el contenido intruducido en el formulario (campos requeridos y formato de los
campos).

5. Mueve los widgets ya existentes dentro del Contenedor de formulario

Selecciona el widget "Da inicio", arrastra y sultalo dentro del widget "Form container".

Repite la operacin para los widgets "Num das" y "Submit", aadiendo nuevas filas.

Una vez los widgets estn agrupados dentro del Contenedor de formularios, selecciona y elimina las filas vacas.

Consejo: Mantn el ratn en la barra gris situada a la izquierda de una fila (A) para mostrar las acciones incluyendo la de
eliminar (B).

6. Actualiza el ttulo del formulario.

Selecciona el widget "Title" con texto "Solicitud Input" y edita las siguientes propiedades:

Propiedad Valor
Texto Rellenar una nueva Solicitud de Vacaciones
Nivel de ttulo Nivel 2
Alineacin Centrado

7. Actualiza el widget "Da Inicio"

Selecciona el widget "Da Inicio" y edita las siguientes propiedades:

18
Ejercicio: Creando formularios

Propiedad Valor
Requerido S
Placeholder Fecha de inicio de las vacaciones
Formato de fecha yyyy-MM-dd

8. Actualiza el widget "Num Das"

Selecciona el widget "Num das" y edita las siguientes propiedades:

Propiedad Valor
Requerido S
Etiqueta Nmero de das
Placeholder Nmero de das de vacaciones
Valor mnimo * 1

* no confundir con la propiedad "Longitud mnima".

9. Limpia los valores iniciales del formulario(esto ensear los placeholders en tiempo de ejecucin)

Haz click en el icono de "lpiz" para la variable de Nombre "formInput" situada en el panel inferior de la pantalla.

Reemplaza los valores JSON con estos:


{
"solicitudInput" : {
"diaInicio" : null,
"numDias" : null
}
}

10.Aade una variable para manejar potenciales errores al envo del formulario

En la seccin inferior de "Variables", haz click en "Crear una nueva variable".

Establece el nombre de la variable como "error", deja su tipo como "String" y su valor vaco. Haz click en "Guardar".

11.Actualiza el widget "Submit"

Selecciona el widget "Submit".

Haz click en el icono de "enlazar" junto a la propiedad "Desactivado".

Introduce el siguiente contenido en el campo de texto que acaba de aparecer (esto deshabilitar el botn cuando el formulario
no pueda ser validado):
$form.$invalid

Reemplaza la propiedad "Valor de la respuesta fallida" con "error" (esto nos permitir recoger los detalles del error al envo
del formulario si es que hubiera alguno).

12.Muestra el error dinmicamente

Arrastra un widget de "Texto" de la paleta y sultalo debajo del botn "Enviar".

Rellena la propiedad "Clases CSS" con "text-danger".

Haz click en el icono de "enlazar" junto a la propiedad "Oculto".

19
Ejercicio: Creando formularios

Introduce el siguiente contenido en el campo de texto que acaba de aparecer (esto muestra el widget slo cuando haya un error):

error == null

Reemplaza la propiedad "Texto" con el siguiente contenido:

<b>Error :</b> {{error | json}}

13.Revisa la apariencia del formulario

Asegrate de que el formulario se parece a este en el editor:

Haz click en el botn "Vista Previa" situado en la parte superior de la pantalla.

Asegrate de que la vista previa se ve as:

Revisa los siguientes puntos:

el widget responsable de mostrar el error no es visible

el botn "Enviar" est desactivado por defecto (esto se debe a la validacin proporcionada por el widget "form container")

el botn "Enviar" est habilitado cuando el formulario es vlido

Nota: el formulario no se puede enviar desde el modo de vista previa aunque sea vlido.

14.Guarda el formulario

Usa el botn de "Guardar" de la parte superior de la pantalla para guardar el formulario.

15.Crea un formulario para la tarea "Validar solicitud"

En el Studio, selecciona la tarea "Validar solicitud" y navega hasta la pestaa "Ejecucin / Formulario".

20
Ejercicio: Creando formularios

Usa el selector de "Formulario de destino" para crear un nuevo formulario.

16.Renombra el formulario

En el UI Designer, renombra el formulario por "validarSolicitud" y haz click en el botn "Guardar".

17.Elimina variables innecesarias

En la seccin "variables", el panel inferior situado en la pantalla, elimina la siguientes variables:

formInput

formOutput

18.Recibe variables de negocio de la peticin en curso

Haz click en el botn "Crear una nueva variable" y configura la variable con las siguientes propiedades:
Propiedad Valor
Nombre solicitud
Tipo External API
API URL ../{{context.solicitud_ref.link}}

Nota: aqu, estamos llamando al API REST de Bonita para recuperar nuestra variable de negocio "solicitud" BDM. Usamos
la variable "context" que proporciona enlaces a las variables de la instancia de proceso incluyendo nuestra solicitud de la
forma "solicitud_ref". Podemos recuperar la solicitud gracias al atributo "link" que nos proporciona la URL necesaria para
recuperar el objeto.

19.Recupera la informacin del usuario solicitante

Crea una nueva variable con las siguientes propiedades:


Propiedad Valor
Nombre solicitante
Tipo External API
API URL ../API/identity/user/{{solicitud.solicitanteId}}

20.Aade una variable para el manejo de errores

Crea una nueva variable llamada "error", deja su tipo como "String" y su valor vaco. Haz click en "Guardar".

21.Elimina el checkbox "Aprobado"

Selecciona el widget checkbox "Aprobado" y brralo con el icono "x" que aparece al seleccionar el widget.

22.Elimina el botn "Submit"

23.Aade un ttulo al formulario

Arrastra un widget "Title" desde la paleta y sultalo en la primera fila del formulario.

Configura el widget como sigue:

21
Ejercicio: Creando formularios

Propiedad Valor
Texto Validar la Solicitud de vacaciones
Nivel de ttulo Nivel 2
Alineacin Centrado

24.Aade un widget para mostrar al solicitante

Arrastra un widget "Input" desde la paleta y sultalo en una nueva fila debajo del ttulo del formulario.

Configura el widget como sigue:

Propiedad Valor
Slo lectura S
Etiqueta Solicitante
Valor solicitante.firstname +" "+ solicitante.lastname

25.Aade un widget para mostrar la fecha de comienzo de las vacaciones

Arrastra un widget "Input" desde la paleta y sultalo en una nueva fila debajo del widget con el solicitante.

Configura el widget como sigue:

Propiedad Valor
Slo-lectura s
Etiqueta Comienzo de la vacaciones
Valor solicitud.diaInicio | date

Nota: estamos usando un filtro de AngularJS "| date" para mostrar la fecha en un formato ms amigable para los usuarios.

26.Aade un widget para mostrar el nmero de das

Arrastra un widget "Input" desde la paleta y sultalo en una nueva fila debajo del widget "Fecha de Inicio".

Configura el widget como sigue:

Propiedad Valor
Slo lectura S
Etiqueta Nmero de das
Valor solicitud.numDias

27.Aade un widget para rechazar la solicitud

Arrastra un widget "Button" desde la paleta y sultalo en una nueva fila en la parte de abajo del formulario.

Configura el widget como sigue:

Propiedad Valor
Ancho 6
Etiqueta Rechazar
Alineacin Derecha
Estilo danger
Datos enviados al hacer click {"aprobado" : false}

22
Ejercicio: Creando formularios

Propiedad Valor
Valor de la respuesta fallida error
Direccin URL de destino en xito /bonita

28.Aade un widget para aprobar la solicitud

Arrastra un widget "Button" desde la paleta y sultalo en la zona de "6 columnas" situada a la derecha del botn "Rechazar".

Configura el widget como sigue:

Propiedad Valor
Etiqueta Aprobar
Estilo success
Datos enviados al hacer click {"aprobado" : true}
Valor de la respuesta fallida error
Direccin URL de destino en xito /bonita

29.Muestra dinmicamente errores de envo potenciales

Arrastra un widget "Text" desde la paleta y sultalo en una nueva fila al final del formulario.

Rellena la propiedad "clases CSS" con "text-danger"

Haz click en el icono de "enlazar" junto a la propiedad "Oculto".

Introduce el siguiente contenidos en el campo de texto que ha aparecido (esto mostrar el widget slo cuando haya un error):

error == null

Reemplaza la propiedad de "Texto" con el siguiente contenido:

<b>Error :</b> {{error | json}}

30.Comprueba la apariencia del formulario

Asegrate de que el formulario se parece a esto en el editor:

31.Guarda el formulario

Usa el botn de arriba "Guardar" para guardar el formulario.


23
Ejercicio: Creando formularios

32.Comprueba la ejecucin del proceso

Ejecuta el proceso desde el Studio y ejecuta todos sus pasos.

Comprueba que se ha tomado el camino de ejecucin adecuado al final de la ejecucin del proceso mirando el histrico de
casos en el Bonita Portal.

24
5. Ejercicio: Manejo de Actores
Objetivo
El objetivo de este ejercicio es aadir colaboracin al proceso existente repartiendo los formularios (tareas) entre 2 actores: un
solicitante y un validador.

Instrucciones
Duplica el diagrama de proceso del ejercicio anterior para crear una versin 5.0.

Aade una senda "Validador" al diagrama y mueve la tarea "Validar solicitud" a ella.

Aade un filtro de actor de tipo "Gerente del iniciador" a la senda "Validador".

Instrucciones paso a paso


1. Duplica el diagrama de proceso del ejercicio anterior para crear una versin 5.0.

2. Aade una senda "Validador" al proceso.

Selecciona el elemento "Senda" de la paleta BPMN y pulsa sobre el proceso.

Con la senda seleccionada, navega a "General / Senda" y define su nombre como "Validador".

3. Renombra la otra senda a "Solicitante".

4. Pincha y arrastra la tarea "Validar Solicitud" a la senda "Validador".

5. Aade un filtro de actor "Gerente Iniciador" a la senda "Validador".

Selecciona la senda "Validador" y navega a la pestaa "General / Actores".

Selecciona el actor "Employee actor" del men desplegable.

Haz click en el boton "Definir" del filtro de actor.

Selecciona el filtro de actor "Gerente Iniciador" de la lista y haz click en "Siguiente".

Nmbralo como "managerSolicitante" y haz click en "Finalizar".

6. Asegrate que el diagrama es as:

25
Ejercicio: Manejo de Actores

7. Ejecuta el proceso con los dos actores.

Ejecuta el proceso desde el Studio (se usar el usuario "Walter Bates").

Envia el formulario "Solicitar vacaciones". Si los actores estn correctamente definidos, la tarea "Validar solicitud de vaca-
ciones" ya no debera estar disponible.

Desconecta del portal pulsando en el nombre de usuario en la esquina superior derecha y haz click en "Cerrar Sesin".

Conecta con el usuario "helen.kelly" y contrasea "bpm".

Si el filtro de actor se ha ejecutado correctamente, la tarea "Validar solicitud de vacaciones" deber estar disponible en la
lista de tareas.

26
6. Ejercicio: Conector de notificacin
Objetivo
El objetivo de este ejercicio es de demostrar la interacin de Bonita BPM con un sistema externo mediante el uso de un conector.
En este contexto, vamos a notificar al solicitante de vacaciones sobre el estado de su solicitud con un conector de email.

Warning
Dependiendo de tu configuracin de red, de tu cortafuegos o de la configuracin de seguridad de tu servidor de
correo, puede que no puedas enviar un email desde Bonita BPM.

Para evitar esas restricciones tcnicas, usaremos un programa que simula a un servidor de correo (FakeSMTP).

Instrucciones
Obtn y ejecuta el servidor FakeSMTP.

Duplica el diagrama de proceso del ejercicio anterior para crear la versin 6.0.

Aade un conector de email en las tareas automticas "Notificar aceptacin solicitud" y "Noficar rechazo de solicitud". Estas
tareas enviarn un correo electrnico al solicitante con el estado de la solicitud.

El siguiente cdigo ser utilizado para obtener el email del solicitante en el conector:
import org.bonitasoft.engine.api.IdentityAPI;
import org.bonitasoft.engine.api.ProcessAPI;
import org.bonitasoft.engine.bpm.process.ProcessInstance;
import org.bonitasoft.engine.identity.ContactData;

// Get APIs
ProcessAPI processAPI = apiAccessor.getProcessAPI();
IdentityAPI identityAPI = apiAccessor.getIdentityAPI();
// Get process initiator
ProcessInstance processInstance = processAPI.getProcessInstance(processInstanceId);
long initiatorUserId = processInstance.getStartedBy();
// Get email from process initiator
ContactData contactData = identityAPI.getUserContactData(initiatorUserId, false);
return contactData.getEmail();

Instrucciones paso a paso


1. Configuracin de FakeSMTP

Obtn los archivos binarios de FakeSMTP de esta URL: https://nilhcem.github.io/FakeSMTP/

Ejecuta FakeSMTP haciendo doble click en el archivo JAR o ejecutando este comando en un terminal:
java -jar fakeSMTP-2.0.jar

Una vez se haya mostrado la interfaz de usuario, haz click en el botn "Start server".

2. Duplica el diagrama de proceso del ejercicio anterior para crear la versin 6.0.

3. Prueba el conector de email para obtener la configuracin SMTP correcta.

Navega a "Desarrollo / Conectores / Probar Conector" en el men superior.

Selecciona el conector "Correo electrnico (SMTP)" bien haciendo una bsqueda en el filtro, o seleccionando la categoria
"Mensajera", despues haz clic en "Siguiente".

27
Ejercicio: Conector de notificacin

Set these connection parameters:

Propiedad Valor
SMTP host localhost
SMTP port 25
SSL (en la seccin "Security") sin seleccionar

Haz click en "Next".

Introduce algunas direcciones de correo (no tienen por qu existir) en los campos "From" y "To" y haz click en "Next".

Introduce "Bonita Test" como asunto y pulse en el botn "Prueba", confirma la siguiente ventana si aadir ninguna depen-
dencia.

En este punto, deber recibir un mensaje similar al siguiente:

Asegrate que se recibe el email en FakeSMTP como se muestra a continuacin:

Una vez que la configuracin es vlida, haz click en .

Nombra la configuracin del conector "emailConfig" y gurdela.

Cierra la pantalla de test de conector.

28
Ejercicio: Conector de notificacin

4. Aade un conector de email en la tarea "Notificar aceptacin solicitud".

Selecciona la tarea, navega hasta la pestaa "Ejecutar / Conectores entrada" y haz click en "Agregar...".

Selecciona el conector "Correo electrnico (SMTP)" .

Nmbralo "enviarEmailAceptacionSolicitud" y haz click en "Siguiente".

No rellenee los parmetros, haga click en .

Selecciona la configuracin "emailConfig" y continue hasta la pgina "Direccin de email".

Introduce "hr@acme.com" en el campo "De".

Utiliza el icono de lpiz para editar la expresin en el campo "A".

Selecciona como tipo de expresion "Script", nombra el script como "obtenerEmailSolicitante" y pega el siguiente cdigo en
la zona de edicin:

import org.bonitasoft.engine.api.IdentityAPI;
import org.bonitasoft.engine.api.ProcessAPI;
import org.bonitasoft.engine.bpm.process.ProcessInstance;
import org.bonitasoft.engine.identity.ContactData;

// Get APIs
ProcessAPI processAPI = apiAccessor.getProcessAPI();
IdentityAPI identityAPI = apiAccessor.getIdentityAPI();
// Get process initiator
ProcessInstance processInstance = processAPI.getProcessInstance(processInstanceId);
long initiatorUserId = processInstance.getStartedBy();
// Get email from process initiator
ContactData contactData = identityAPI.getUserContactData(initiatorUserId, false);
return contactData.getEmail();

Avanza a la siguiente pgina y define como asunto "Solicitud de Vacaciones Aprobada".

Haz click en "Finalizar".

5. Aade un conector de email en la tarea "Noficar rechazo solicitud".

Repite los pasos previos nombrando el conector como "enviarEmailRechazoSolicitud" y configurando "Solicitud de Vaca-
ciones Rechazada" como asunto.

6. Pruebe el proceso

Ejecute el proceso dos veces para probar los diferentes caminos y compruebe que FakeSMTP recibe los emails correctamente.

29

También podría gustarte