Este ejemplo nos enviará un correo electrónico a cualquier destinatario del que tengamos su dirección.
Vamos a hacer uso de los conectores, que según Bonita, "son elementos en un proceso que acceden a un sistema externo para leer o escribir información". Esto puede ser un servidor de correo, de base de datos, CRM, CMS, etc., incluyendo cualquier servicio web al que tengamos acceso.
Podemos definir nuestros propios conectores, pero Bonita ofrece una librería que podemos aprovechar.
Nosotros, en concreto, vamos a hacer uso de un conector de mensajeria a Gmail.
Para ilustrar el uso de este conector, prepararemos el siguiente diagrama:
El símbolo del conector —el enchufe macho— no aparecerá hasta más adelante, cuando definamos el conector concreto asociado a la tarea.
La idea es recabar, en un formulario, los datos mínimos para enviar un correo electrónico, esto es, destinatario, asunto y cuerpo del mensaje. Cuando pulsemos "enviar" se llamará al servidor de correo saliente de Google, con esos datos y otros que proporcionaremos al configurar el conector.
Para el formulario de instanciación vamos a usar un método diferente; no vamos a utilizar variable de negocio, sino variables de proceso. Esto conlleva, al necesitar rellenarlas con los valores obtenidos del formulario, a hacer las cosas en un orden ligeramente diferente.
Definiremos 3 entradas de tipo TEXT desde "Añadir"
Ahora definimos las 3 variables de proceso necesarias: "eldestino", "elasunto" y "elcuerpo", todas de tipo STRING. Es necesario inicializarlas con sus correspondientes entradas de contrato. Veamos un ejemplo, y las otras dos siguen la misma mecánica.
En el momento de crear la variable "eldestino", aparte del tipo de dato "TEXTO", debemos especificar un "valor predeterminado". Para ello abriremos la lista desplegable y elegerimos la entrada de contrato —se identifica como tal por el icono del documento con tres rayas rojas— "destino".
Esto permitirá que lo que pongamos en el formulario se almacene automáticamente, al pulsar "enviar", en la variable, y dispondremos de ese valor durante todo el proceso.
Como hemos dicho, las otras dos variables de proceso se definen de manera análoga.
Esto lo podíamos haber hecho a continuación del contrato. Podemos modificar el fomulario por defecto. Por ejemplo, aparte de columnas ocupadas por cada widget, hemos sustituido el input de "cuerpo" por un text area, borrando el primero e insertando el segundo, teniendo cuidado de que su "valor" sea formInput.cuerpo.
Así mismo, hemos insertado un text para la cabecera del formulario.
Terminada la instanciación, disponemos de tres de los datos necesarios para enviar un mensaje: eldestino, elasunto y elcuerpo.
Se trata de una tarea de servicio, no necesitamos contrato ni formulario, pero sí el conector de mensajeria. Se pueden definir conectores de entrada y de salida. Los primeros sirven para recuperar datos, los segundos para enviarlos. En nuestro caso, solo necesitamos un conector de salida. Aprovecharemos que Bonita nos ofrece uno genérico para correo electrónico.
Al elegir el conector se nos activará el botón "siguiente". A partir de este momento, configuraremos el conector con los datos necesarios.
De momento, poco más que darle un nombre cualquiera.
En la siguiente pantalla, tendremos que dar un usuario y una contraseña. Para este ejemplo en particular se ha creado una cuenta en Gmail, pero puedes utilizar una tuya, del mismo servicio de cualquier otro, solo tienes que poner los datos correctos para SMTP.
Debes tener en cuenta que algunos servidores tienen medidas de seguridad para accesos ilegítimos a nuestras cuentas. Gmail cataloga ciertos accesos como "no seguros" y los bloquea. Eso puede hacer que parezca que nuestro proceso no funciona. Esto se puede soslayar cambiando la configuración de nuestra cuenta de correo.
La cuenta a utilizar debe ser la tuya. La que mostramos aquí no existe.
Los datos de remitente ("de") y destino ("a") necesitan algo de trabajo. Para el caso de "a", desplegar la lista y elegir la variable "eldestino" —con doble click—.
Da la casualidad de que Gmail no hace mucho caso del remitente ("de") pero sí de "responder a". En cualquier caso, en ambos vamos a utilizar la API de Bonita.
Se trata de entrar el editor de expresiones y seleccionar un script en concreto:
BonitaUsers.getProcessInstanceInitiatorProfessionalContactInfo(apiAccessor,processInstanceId)
Recuerda que debes pulsar dos veces para que se active. Lo notarás porque aparecerá el texto anterior en la ventana de edición. De hecho, debes añadir, al final de la expresión, el atributo concreto de su cuenta de email:
BonitaUsers.getProcessInstanceInitiatorProfessionalContactInfo(apiAccessor,processInstanceId).email
Lo que estamos haciendo es recuperar la información de contacto profesional del iniciador del proceso, que en nuestro caso será Walter Bates. Ya decimos que el remitente no tiene efecto en Gmail, aparecerá la cuenta de correo que hemos usado en el conector, pero en "responder a" sí aparecerá Walter. Pero nos estamos adelantando.
El siguiente diálogo nos pide "asunto" y "mensaje". Para el primero, simplemente, elegimos la variable desde el desplegable.
Para el segundo, aparte de otro texto que queramos añadir, vamos a introducir una codificación especial que permite acceder al valor de las variables:
${elcuerpo}<br>
-----------------
Este es un mensaje enviado desde Bonita BPM
La construcción ${variable} inserta el contenido de la variable en el texto que estamos escribiendo.
Ya hemos terminado de configurar el proceso y podemos ejecutar. Típicamente, en el formulario de entrada de datos pondrás una cuenta a la que puedas acceder y comprobar que, efectivamente, te ha llegado el mensaje. Ten en cuenta que puede no ser instantáneo, normalmente tarda unos segundos en contactar con el servidor y dar la orden de envío del mensaje.