Usar expresiones para generar contenido HTML

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Reutilizar reglas de negocio > Reglas de librería >

Usar expresiones para generar contenido HTML

Introducción

Pueden existir momentos donde sus requerimientos de negocio necesitan enviar correos personalizados. Esta sección explica como puede lograr esto a través de reglas de negocio para generar plantillas de correo electrónico con contexto y sin contexto.

 

note_pin

Para poder usar expresiones para generar contenido HTML debe comprender completamente conceptos de HTML.

 

Buenas prácticas para correos HTML

Cuando se construye una plantilla de correo electrónico es importante tener en cuenta estas recomendaciones para evitar que el correo sea clasificado como spam:

No utilice texto de relleno inútil o líneas de asunto engañosas

Evite términos de spam como "oferta comercial"

Evite el código HTML excesivo y evite usar HTML5

Evite usar la etiqueta <div> y tablas profundamente anidadas

No sobre-optimice su código HTML

Evite las imágenes en línea con unas pocas palabras de texto.

Evite tener demasiados enlaces en su correo

 

Para mayor información en cómo evitar que los mensajes sean detectados como spam siga este vínculo (en inglés).

 

Plantillas de correo electrónico con contexto

Supongamos que tiene muchos procesos configurados como parte de un proyecto, y muchas de las tareas envían correos electrónicos a Jefes o usuarios como notificaciones. Su supervisor le indicó que todos los correos enviados como parte de un proceso automático deben cumplir con el estándar organizacional: todos deben ciertos elementos visuales y todos deben incluir un mensaje de aviso en la parte de abajo indicando que la información contenida en el correo es altamente restringida y que no puede ser compartida o reproducida.

 

Como el desarrollador de los procesos, usted debe cambiar los correos enviados automáticamente por Bizagi, de tal manera que se cumpla con el estándar. No obstante, no se cuenta con el tiempo y la disposición para hacerlo a mano. La mejor manera de realizarlo será configurar una regla de librería que retorne el HTML del correo y que reciba como parámetro el texto personalizado que se debe usar.

 

Para este ejemplo, el resultado final se verá como el siguiente correo:

 

LR-08

 

Note que el correo está embebido en una plantilla corporativa, contiene el mensaje personalizado y el texto informando sobre confidencialidad que se había mencionado.

 

Para lograrlo, el primer paso es configurar una regla de librería que retorne la plantilla HTML y reciba un parámetro para personalizar el mensaje. En este ejemplo, el texto personalizado es el nombre del usuario.

 

LR-09

 

Como se puede ver, se configuró una regla llamada Email template. La regla almacena en la variable name el valor recibido en el parámetro Name. Y luego almacena y retorna la plantilla HTML en la variable msg. El parámetro Name fue simplemente configurado en la opción de Lista de parámetros como un String, de la siguiente manera (note que el parámetro Me está configurado por defecto y no debe ser cambiado):

 

LR-10

 

Utilizando concatenación de Strings, se usa el parámetro para inyectarlo como texto al mensaje del correo, tal como se puede ver la siguiente imagen:

 

LR-11

 

Luego, en la acción de la actividad del correo, y en el cuerpo del mensaje seleccione la opción de Campo de expresión. Allí, configure una expresión usando y retornando la regla de librería que acaba de configurar.

 

LR-12

 

Note que al invocar la regla, se envía un parámetro adicional. En este caso debe seleccionar el Nombre completo del usuario del Modelo de datos, de tal manera que pueda ser inyectado en la plantilla de HTML y resuelto en el correo como un mensaje personalizado. El cuerpo del correo terminará viéndose de esta manera cuando haya sido configurado.

 

LR-13

 

En este punto ya habrá establecido una regla de librería para reutilizar una plantilla de HTML satisfactoriamente. Ahora puede proceder a reutilizar la plantilla en todas sus tareas de correo sin la necesidad de copiar y pegar el contenido en cada tarea, solo deberá llamar la regla y cambiar el mensaje que se envía para que satisfaga sus necesidades específicas.

 

note_pin

El XPath <Rule:[NombreRegla]> es soportado por las notificaciones automáticas, tenga en cuenta que estos mensajes no tienen contexto y por eso no soportan parámetros de entrada.

 

Usar reglas como plantillas para notificaciones automáticas (sin contexto)

Si desea incluir contenido HTML en el mensaje, es posible usar reglas de librería para los correos automáticos. Lo que se debe hacer es crear una regla global (regla de librería) con el contenido de la plantilla para el correo. En este ejemplo se debe crear la familia de expresiones EmailTemplates para las plantillas de correos electrónicos.

 

LibraryRuleNotification01

 

Luego se agrega la regla NotificationBodyTemplate como la regla que retornará la cadena de caracteres (String) con el contenido del mensaje.

 

LibraryRuleNotification02

 

La expresión de este ejemplo es la siguiente:

//Build HTML content

var msg = "<table border='0' cellpadding='0' cellspacing='0' class='body' style='border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background-color: #f6f6f6;'><tr>";

msg = msg + "<td style='font-family: sans-serif; font-size: 14px; vertical-align: top;'>&nbsp;</td>";

msg = msg + "<td class='container' style='font-family: sans-serif; font-size: 14px; vertical-align: top; display: block; Margin: 0 auto; max-width: 580px; padding: 10px; width: 580px;'>";

msg = msg + "<div class='content' style='box-sizing: border-box; display: block; Margin: 0 auto; max-width: 580px; padding: 10px;'>";

 

//Centered white container

msg = msg + "<table class='main' style='border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; background: #ffffff; border-radius: 3px;'>";

msg = msg + "<tr><td class='wrapper' style='font-family: sans-serif; font-size: 14px; vertical-align: top; box-sizing: border-box; padding: 20px;'>";

msg = msg + "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;'>";

 

//Agility Corp Logo

msg = msg + "<td><tr style='font-family: sans-serif; font-size: 14px; vertical-align: top;'>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px; text-align:center;'>";

msg = msg + "<img src='https://help.bizagi.com/bpm-suite/en/Agility_Corp_blue.png' alt='Agility Corp logo'></p></td></tr>";

 

//Notification content

msg = msg + "<tr><td style='font-family: sans-serif; font-size: 14px; vertical-align: top;'>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Dear colleague,";

msg = msg + "</p>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Here is brief information about the case <CaseNumber> (Id Case: <idCase>):";

msg = msg + "</p>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Creation Date: <casCreationDate>";

msg = msg + "</p>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Category: <categoryDisplayName>";

msg = msg + "</p>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Process Definition: <procDefDisplayName>";

msg = msg + "</p>";

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Click here <CaseLink> to view the case online";

msg = msg + "</p>";

 

//Signature

msg = msg + "<p style='font-family: sans-serif; font-size: 14px; font-weight: bold; margin: 0; Margin-bottom: 15px;'>";

msg = msg + "Bizagi Admin";

msg = msg + "</p></td></tr></table></td></tr></table>";

 

//Footer

msg = msg + "<div class='footer' style='clear: both; Margin-top: 10px; text-align: center; width: 100%;'>";

msg = msg + "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;'>";

msg = msg + "<tr><td class='content-block' style='font-family: sans-serif; vertical-align: top; padding-bottom: 10px; padding-top: 10px; font-size: 12px; color: #999999; text-align: center;'>";

msg = msg + "<span class='apple-link' style='color: #999999; font-size: 12px; text-align: center;'>";

 

//Company address

msg = msg + "Agility Corp, 812461 Automation Road";

msg = msg + "</span></td></tr></table></div>";

 

//End content

msg = msg + "</div></td><td style='font-family: sans-serif; font-size: 14px; vertical-align: top;'>&nbsp;</td></tr></table>";

 

//Return HTML content

msg;

 

note_pin

Las notificaciones automáticas son globales y no tienen contexto. Tenga en cuenta lo siguiente cuando construya la expresión:

Asegúrese que la regla no contenga la sentencia "return", esta sentencia no es soportada por los correos electrónicos automáticos.

Variables globales,y XPaths y parámetros de entrada no se soportan.

 

Una vez la regla de librería esté lista, vaya a la pestaña Configuración, haga clic en Negocios y seleccione la opción de Notificaciones en la parte izquierda de la nueva ventana. Dé clic en Editar para abrir el mensaje predeterminado.

 

LibraryRuleNotification03

 

Agregue el XPath a la regla de librería en el cuerpo de la notificación. El XPath se construye así: <Rule:[NombreRegla]>, donde [NombreRegla] es el nombre de su regla. En este caso sería <Rule:NotificationBodyTemplate>.

 

LibraryRuleNotification04.

 

Haga clic sobre OK para guardar cambios.

Ahora, cuando se le asigne una tarea a un usuario, este recibirá un correo con formato en vez de texto plano.

 

LibraryRuleNotification05