КАК УВЕДОМИТЬ ПОЛЬЗОВАТЕЛЯ О ПОЯВЛЕНИИ КОММЕНТАРИЯ К ЕГО СООБЩЕНИЮ В ЛЕНТЕ
Добрый день!
Есть пример:
При добавлении нового комментария к сообщению в ленте АВТОРУ этого сообщения отправляется email.
https://academy.terrasoft.ua/documents/technic-bpms/7-10/kak-uvedomit-p…
Вопрос следующий:
Как можно отправить уведомление сотруднику, который был УПОМЯНУТ в ленте? Например, если ответственный (Supervisor) упомянул Пользователя 1 в ленте, то Пользователь 1 должен получить на электронную почту уведомление о том, что был оставлен комментарий.
Как в параметре 'Кому' правильно указать сотрудника, который был упомянут?
Нравится
Добрый день.
Для этого необходимо будет построить отдельный бизнес-процесс. Вот как это можно будет сделать.
1) Создать 4 параметра: Сomment, Ids, Number, CurrentId.
2) Создать 2 элемента "Read data" так же как в статье из Академии, на которую Вы ссылаетесь. Отсюда получим данные поста и комментария.
3) С помощью функции присвоим параметру Comment значение вычитанного в п.2 комментария
4) В элементе "Script task" надо получить Id и количество тегнутых контактов, записать эти значения в параметры Ids и Number соответственно
5) Поскольку параметр Ids сохраняет Id контактов в виде строки, необходимо написать скрипт, чтобы разбить эту строку на отдельные элементы и по одному передавать Id в элемент "Send email", одновременно уменьшая количество Id на 1.
6) От элемента "Send email" к "Script task" идет стрелка default flow, а к элементу "Terminate" - conditional flow (с проверкой вида "если количество Id в Number не равняется 0, то возвращаемся к скрипту, если = 0 - процесс завершается"), что позволяет нам пройти по списку всех Ids, для каждого Id отправить сообщение и завершить процесс.
В общем схема процесса будет выглядеть приблизительно как в приложенных скриншотах
string comment = Get<string>("Comment");
var dataValueMatches = Regex.Matches(comment, @"data-value=""([^""]+)""");
var dataValuesList = new List<string>();
foreach (Match match in dataValueMatches)
{
string dataValue = match.Groups[1].Value;
dataValuesList.Add(dataValue);
}
string allIds = string.Join(",", dataValuesList);
Set("Ids", allIds);
int numberOfIds = dataValuesList.Count;
Set("Number", numberOfIds);
return true;
string ids = Get<string>("Ids");
string[] separatedIds = ids.Split(',');
int number = Get<int>("Number");
string currentId = separatedIds[number-1];
Set("CurrentId", currentId );
Set("Number", number-1);
return true;