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.
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.
Este ejemplo es una adaptación del que se muestra en Bonitasoft Documentation/Getting started tutorial/Configure an email connector.
Necesitamos un servidor SMTP para enviar y recibir correos. Puesto que esta es una prueba, utilizaremos Fake SMTP, un servidor gratuito que "intercepta el envío y recepción de correos electrónicos, mostrándolos en su interfaz". Descárgate el programa aquí.
A continuación, ejecútalo (doble click o, en una ventana de comando, java -jar fakeSMTP-2.0.jar), cambia el puerto de escucha a 2525 e inicia el servidor.
En Enviar email (gmail) hemos replicado este ejemplo contra el servidor de Google. Si tienes problemas con Fake SMTP —necesita tener Java JVM 1.6 o posterior instalado—, puedes probar con una cuenta tuya de correo, de Google o de otro servidor. Tendrás que observar, eso sí, las restricciones de identificación que imponga tu servidor.
Inicialmente, Bonita Studio no incluye la extensión necesaria para configurar conectores. Hay dos formas de conseguirlo:
Directamente desde la tarea, al intentar añadir el conector. Bonita Studio nos pedirá que accedamos al Marketplace para obtener la extensión.
Desde la Vista Global
Desde la "Vista global" elegimos "extensiones".
A continuación, accedemos al Marketplace.
E instalamos la extensión EMAIL.
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, teniendo cuidado de que su "valor" sea formInput.cuerpo.
Así mismo, hemos insertado otro 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 dirigir nuestro conector al servidor SMTP de prueba.
Especificamos como servidor localhots:2525 y desmarcamos la seguridad SSL. No hace falta identificación de usuario.
Ten en cuenta que todos estos parámetros pueden cambiar dependiendo del servidor de correo con el que se pretenda interactuar.
Pulsando "siguiente" continuaremos con la configuración.
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—.
Para el remitente vamos a editar un script Java, accediendo a los datos de sesión y recuperando el email del usuario que está ejecutando (Walter Bates).
Entra el editor de expresiones y selecciona un método de los que ofrece Bonita, 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
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 con la configuración del conector: pulsa "finalizar".
Ya hemos terminado de configurar el proceso y podemos ejecutar.
En el formulario de entrada de datos puedes poner lo que quieras, Bonita enviará el mensaje a través de Fake SMTP y la ventana de este programa que mantienes abierta te mostrará el resultado. 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.
Fíjate que el remitente dice ser "walter.bates@acme.com"; es el resultado del script Java que hemos enlazado al parámetro "de" (from) del conector.
Puedes comprobar el contenido del mensaje accediendo a la pestaña "last message".