Creatio development guide

Добавление обработчика макроса в шаблоне Email-сообщения

Glossary Item Box

Общие сведения

Шаблоны email-сообщений используются, например, при общении со службой поддержки. Шаблоны доступны в справочнике [Шаблоны email сообщений]. Подробнее об их настройке можно узнать из статьи "Настройка автоматической отправки email-уведомлений".

Например, в письме, уведомляющем клиента о закрытии его обращения, используется шаблон “Сообщение о закрытии обращения”. Для подстановки некоторых значений колонок объектов системы в шаблоны Email-сообщений используются преднастроенные макросы, например, обращение к контакту или должность ответственного.

Bpm'online позволяет реализовать собственную логику заполнения значения, которое возвращает обработчик макросов. При этом во время обработки макроса система выполнит реализованный разработчиком алгоритм, а не базовую логику.

На специализированный обработчик класса указывает тег @Invoke. Далее через точку должно быть указано имя класса реализующего интерфейс IMacrosInvokable, который включает в себя метод GetMacrosValue(). Этот метод должен возвратить строку, которая будет подставлена вместо строки макроса.

Для реализации пользовательского обработчика макроса необходимо:

  1. Создать класс, реализующий интерфейс IMacrosInvokable.
  2. Зарегистрировать макрос в таблице EmailTemplateMacros, указав для него ParentId (базовый шаблон с тегом @Invoke) и ColumnPath (имя класса).
  3. Добавить макрос в шаблон Email-сообщения.

Описание кейса

Добавить обработчик макроса шаблона Email-сообщения, который будет возвращать строку “Тестовая строка”.

Пример реализации кейса

1. Создание класса, реализующего интерфейс IMacrosInvokable

Чтобы создать новый класс, реализующий интерфейс IMacrosInvokable, необходимо в пакет, в котором выполняется разработка, добавить схему [Исходный код]. Для этого нужно в разделе [Конфигурация] выбрать пользовательский пакет и на вкладке [Схемы] выполнить команду меню [Добавить] — [Исходный код] (рис. 1). В результате откроется окно дизайнера исходного кода, в котором выполняется настройка созданной схемы.

Рис. 1. — Создание новой схемы [Исходный код]

Для созданной схемы объекта необходимо присвоить значения следующим обязательным свойствам:

  • [Заголовок] — "Генератор текстовой строки".
  • [Название] — "UsrTestStringGenerator".

На вкладке [Исходный код] дизайнера схемы добавить следующий исходный код:

namespace Terrasoft.Configuration
{
    using System;
    using Terrasoft.Core;
    // Класс обработчика макроса шаблона Email-сообщения.
    public class UsrTestStringGenerator : IMacrosInvokable
    {
        // Пользовательское соединение.
        public UserConnection UserConnection {
            get;
            set;
        }
        // Метод, возвращающий подставляемое значение.
        public string GetMacrosValue(object arguments) {
            return "Тестовая строка";
        }
    }
}

Созданную схему необходимо опубликовать.

2. Регистрация макроса в таблице EmailTemplateMacros

Чтобы зарегистрировать макрос в таблице EmailTemplateMacros, необходимо выполнить следующий SQL-запрос:

INSERT INTO EmailTemplateMacros(Name, Parentid, ColumnPath)
VALUES (
    'UsrTestStringGenerator',
    (SELECT TOP 1 Id
    FROM EmailTemplateMacros
    WHERE Name = '@Invoke'),
    'Terrasoft.Configuration.UsrTestStringGenerator'
)

3. Добавление макроса в шаблон Email-сообщения

После регистрации макроса его можно использовать в шаблонах Email-сообщений. Для этого необходимо изменить одну или несколько записей справочника [Шаблоны email сообщений] (рис. 2).

Рис. 2. — Справочник [Шаблоны email сообщений]

Например, для изменения содержимого сообщений, автоматически отправляемых при разрешении обращения, необходимо изменить запись [Сообщение о разрешении обращения]. Если в шаблон добавить макрос [#@Invoke.UsrTestStringGenerator#] (рис. 3), то при отправке сообщения пользователю вместо макроса будет подставлено значение "Тестовая строка".

Рис. 3. — Макрос в шаблоне Email-сообщения

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?