Добрый день! В процессе есть такой элемент "выполнить действие процесса", его можно выбрать и указать в нем пользовательское действие и указав необходимые параметры для действия
Скажите, пожалуйста, каким образом можно вызвать данное действия в элементе сценарий процесса?
Добрый день!
Есть пользовательское действие "обработать шаблон сообщения с макросами"
У нас есть процесс, который в случае если критичное обращение не успевает выполняться в срок, то ряду людей(специальной группе, состоящей из 5-6 чел) отправляется письма-оповещения, что по такому-то обращению приближается срок реакции. Таким образом, каждому человеку из группы руководителей отправляется соответствующее письмо на e-mail, а также приходит уведомление в систему дополнительно. Для этого используется элемент-сценарий в процессе , т.е. составляется запрос-список людей(результат=5-6 человек), и каждому отправляется письмо по заранее обработанному шаблону в данном процессе и уведомление в систему. Хочется в начале письма писать не просто "Добрый день", а, например, "Добрый день, Василий Васильевич" (в зависимости от адресата).
Для этого, как вариант, возникла идея вызвать данное действие в элементе-сценарии.
Т.е. составляется запрос-список людей(5-6 человек), вызывается действие обработки шаблона для этого человека, отправляется письмо по этому шаблону и уведомление в систему.
Возможно, это слишком сложный способ и есть проще?
Продукт сервис-деск
Добрый день!
Вызываем вспомогательный процесс в элементе "Задание сценарий" главного процесса следующим образом:
(галка "интерп.процессы" отщелкнута, 7.9)
UserConnection userConnection = context.UserConnection;
var select =
new Select(userConnection)
.Column("UsrTest","UsrContactId")
.Column("UsrTest","UsrEmail")
.Column("UsrTest","Id")
.From("UsrTest")
.Where("UsrTest","UsrTestId").IsEqual(new QueryParameter(RecordId))
as Select;
var manager = userConnection.ProcessSchemaManager;
var processSchema = (ProcessSchema)manager.FindInstanceByName("UsrProcessMyMailSendSub");
if (processSchema == null)
{ return true;
}
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection()) {
using (IDataReader dataReader = select.ExecuteReader(dbExecutor)) {
while (dataReader.Read()) {
Сможет ли вообще вызваться процесс в цикле?
Вспомогательный процесс вызывается и отрабатывает, но только один раз.
Причем независимо от кол-ва записей в цикле(даже если одна запись), состояние у вспомогательного процесса в журнале процессов "ошибка" (хотя все элементы вспомогательного процесса завершены успешно)
Скорее всего, проблема во внутреннем процессе, который Вы хотите вызвать несколько раз. С помощью приведенного Вами кода можно вызвать процесс несколько раз. Статус "ошибка" означает что процесс остановился на каком-то шаге, из-за чего последующие итерации не были запущены. Проверьте вспомогательный процесс и попробуйте еще раз.