Vamos a complicar un tanto el proceso, queremos ofrecer una posibilidad de cancelación en cualquier momento, es decir, que el usuario pueda anular su reclamación antes de que sea procesada.
Duplica el diagrama PP11 Reclamación, cambiando el nombre del diagrama y los números de versión, y modificálo hasta que tenga el aspecto de la imagen anterior.
Lo que tienes que hacer es añadir un nuevo subproceso de evento (anular reclamación) y un nuevo proceso (anulación). Recuerda que tendrás que definir actores, y reconfigurar correctamente el "proceso a llamar".
Vamos a utilizar los mensajes para simular un proceso paralelo de anulación de la reclamación.
Este proceso se puede ejecutar en paralelo a RECLAMACIÓN, y su función es detener aquél con el debido informe.
En pool y senda:
Empleado (iniciador)
Mapeado a Groups /acme
Autenticación walter.bates/bpm
x -- Booleano (Boolean) -- Valor predeterminado: false
Fíjate que no vamos a utilizar una variable de negocio sino de proceso. El ámbito es el mismo, todo el proceso. Sin embargo, el último valor de esta variable no se almacenará en ningún sitio ni podrá ser consultada en los casos archivados, únicamente se utilizará para activar el flujo correcto en la compuerta exclusiva.
El texto que escribirás aparecerá en el formulario:
"Este proceso anulará la reclamación en marcha. ¿Desea continuar?"
"Usar el actor definido en la senda".
"añadir":
input1 (boolean)
fanulaReclama
Debes añadir esta operación:
x - Toma valor de - input1
Recuerda que x es la variable de proceso.
Marcada como "Por defecto"
"Use la expresión"
Comparación x==true
El usuario puede decidir, antes de terminar de tramitar la reclamación, anular su propia reclamación. Para activar el subproceso de evento que anula la reclamación utilizamos mensajes.
No pretendemos enviar o recibir información, por lo tanto la configuración es simple.
IMPORTANTE: el problema de este sistema es que, en una situación real, puede haber varias instancias de reclamación en ejecución, y al mandar esta señal se anularía la más antigua, sin control sobre qué instancia deseamos anular realmente.
La correlación de instancias en los mensajes (ver PP08c) permiten identificar la instancia concreta sobre la que se quiere actuar. En este caso deberíamos recuperar todas las instancias activas, y elegir la que queremos suprimir.
Descripción "El usuario ha iniciado la anulación"
El evento de inicio de mensaje no necesita configuración puesto que no vamos a recibir ningún dato.
El texto que escribirás aparecerá en el formulario:
"La reclamación ha sido anulada."
"Usar el actor definido en la senda".
freclamaAnulada
Para cambiar la versión del procesos a llamar a la versión 1.2, hay que hacerlo en dos pasos: eliminar la configuración actual, y volver a seleccionar la nueva.
Si ejecutamos respondiendo positivamente o negativamente a la reclamación veremos que todo funciona igual. La novedad consiste en que el proceso RECLAMACION puede detenerse por una acción de usuario. Veamos cómo simularlo.
Recuerda que estamos en un entorno de desarrollo, por lo que puede parecer un tanto complicado. En un entorno en producción, simplemente, el usuario accedería a un menú web y elegiría la opción de anular su reclamación.
Lanza el proceso RECLAMACIÓN
No tomes la tarea "decidir..."
En su lugar, en Portal, vete a la opción "Procesos" y lanza el proceso ANULACIÓN.
Se te abrirá un nuevo formulario. Pulsa el botón "inicio".
Ve a "Tareas", verás una nueva tarea que debes tomar.
La tarea "decidir sobre reclamación" es la que antes no hemos "tomado", la del proceso en marcha RECLAMACION.
Pulsa "refrescar"; verás que desaparece la tarea "decidir sobre reclamación" y aparece otra nueva "informa de anulación": hemos activado el subproceso de evento interruptor de RECLAMACION.
En casos archivados podrás ver que tienes las entradas de ANULACIÓN y de RECLAMACION. La primera puedes comprobar que no ofrece ningún dato —no se ha definido ninguna variable de negocio—, pero la segunda mostrará los datos que se muestran a continuación.
El resumen del caso es que se ha iniciado el proceso, pero la tarea "decidir sobre reclamación" no ha llegado a ejecutarse, se ha cancelado. Precisamente por que se ha activado el subproceso de evento que contenía la tarea "informar de anulación".
No se ha almacenado nada en "respuesta" o en "desestimada", el proceso ha sido cancelado por el usuario antes de nadie pudiera introducir tales datos.
Se podría haber previsto, en el modelo de datos de negocio, un atributo descriptor de este caso de anulación.