Vamos a montar una prueba de una tarea de llamada a actividad. Una actividad es un proceso completo que puede ser invocado desde otro proceso. El proceso llamado puede recibir datos del proceso principal y, a su vez, puede devolverle datos al proceso llamador.
En este ejemplo trabajamos con un conjunto de tres números. El proceso LLAMADOR rellena dos de ellos, mientras que el proceso LLAMADO lo hace con el tercero.
En el primer formulario (instanciación de LLAMADA), rellenamos dato1 y dato2.
El segundo formulario es fruto de la ejecución de la invocación del proceso LLAMADO, que contiene la tarea "procesar", la que nos muestra el siguiente y último formulario.
Como información, se le ha añadido un control de TEXTO para mostrar los datos que se están manejando. Podemos comprobar que LLAMADOR ha enviado a LLAMADO los valores de dato1 y dato2.
El resultado es un único caso, el del proceso principal (LLAMADA) con los tres datos almacenados.
Siendo procesos diferentes, puesto que vamos a aprovechar el mismo BDM, podríamos haber usado el mismo nombre. Para explicitar que son dos variables de negocio diferentes, a una la llamaremos vnllamada y a la otra vnllamadaB.
Hacemos un mínimo cambio en el formulario para dejar claro que pertenece al proceso LLAMADA.
Si en el cuadro de diálogo que nos aparece al iniciar el formulario respondemos afirmativamente, nos aparecerán dato1 y dato2 como objetos de solo lectura, con los valores que les habrán llegado desde la llamada "llamar".
En el proceso LLAMADOR, que hemos modelado a partir del primer diagrama que genera Bonita, el actor ya está definido, y mapeado a la organización ACME.
El proceso LLAMADO, al ser un proceso añadido por nosotros, hay ciertas cosas que Bonita no ha hecho, como definir los actores iniciadores del proceso.
Añade un actor —Bonita lo llamará Actor1, o cámbiale el nombre—, y defínelo como "iniciador".
Siempre que añadas actores al proceso, recuerda definir el mapeo de actores.
En este ejemplo, no vamos a complicarlo, dejamos que el grupo /acme al completo pueda ejecutar el proceso.
Además, comprueba el actor en la tarea "procesar".
Hemos diseñado un proceso con una tarea de llamada a actividad, de llamada a otro proceso. Esa llamada, por lo general, ira acompañada de un conjunto de datos con los que trabajará el proceso llamado. A su vez, cuando este segundo proceso termine, lo normal es que envíe de vuelta otro conjunto de datos al proceso principal para que este continue su secuencia.
Depende de cómo hayas dibujado el diagrama, algunos datos ya estarán fijados y otros no. En cualquier caso, la tarea "llamar" del proceso LLAMADOR debe especificar que invocará al proceso LLAMADO.
Si solo tenemos una versión de los procesos, no hay problema. Si tuviéramos varias versiones, habría que indicar a cuál en concreto queremos llamar. Si no especificamos versión en el "proceso a llamar", Bonita usará la versión más reciente.
Además, hay que explicitar los datos que se enviarán o recibirán.
La transmisión de datos entre el proceso llamador y el llamado se puede hacer de varias formas, dependerá de lo que estemos modelando.
En este caso utilizaremos variables de negocio completas. Como hemos utilizado el mismo BDM para ambos procesos, podemos asignar directamente una variable de negocio a otra. Recuerda que "llamar" habrá puesto valores únicamente a vnllamada.dato1 y vnllamada.dato2.
Se produce un mapeo entre las variables de negocio. Esto quiere decir que lo que actualicemos en LLAMADO (vnllamadaB) se trasvasará automáticamente a LLAMADOR (vnllamada). Para este proceso no hace falta, pues, definir "datos a recibir". Evidentemente, depende de los procesos el que necesitemos definir "datos a enviar" o "datos a recibir".
Ya está todo listo para ejecutar. Selecciona el proceso LLAMADOR y ejecuta.