Извещения: как из bpmonline послать e-mail из бизнес-процесса?

Извещения: как из bpmonline послать e-mail из бизнес-процесса?
Имеется ввиду не активность городить, а просто послать квиток по адресу со ссылкой.

Нравится

14 комментариев

Здравствуйте, Александр!

Делается это в два этапа:

1. Элемент Добавление данных, где мы формируем всё содержимое активности;
2. Элемент действие процесс, в настройках которого выбрано действие отправить сообщение, а в параметрах выбран идентификатор активности, созданной в предыдущем элементе.

Гм......так активность все таки создаётся при этом?

Совсем без активности несколько проблемно отправить письмо - на нее завязаны системные функции SmtpClient.SendMessage(Guid activityId);

А внутри SmtpClient уже формируется сообщение:

			try {
				Activity activity = LoadActivty(activityId);
				UpdateActivityStatus(activityId, "InProgress", string.Empty);
				SetCurrentUserAsSenderIfEmpty(activity);
				MailMessage message = CreateMailMessage(activity);
				SendMessage(message);
				CompleteSending(activity);
				UpdateActivityStatus(activityId, "Sended", string.Empty);
			} catch (SmtpException e) {
				UpdateActivityStatus(activityId, e.EmailSendStatus, e.Message);
				throw;
			}

Но все эти функции private, и снаружи схемы недоступны.

гм.....а если я бп поставлю запускаться регулярно по расписанию под своим именем пользователя, эти активности соответственно будут ко мне попадать?

Да, если внутри процесса не прописано другое. Вы можете ответственного по активностям вычитать, к примеру, из инцидента.

Кстати, с запуском по расписанию есть нюансы: в текущей реализации запуск по расписанию завязан на сессию пользователя. Это значит, что если Вы авторизованы в системе, то запуск по расписанию инициализируется и работает, а если вышли из системы - сворачивается.

От жеж.......это вообще как то.....я бы сказал маразм
И чего делать, мне надо чтобы некая кучка скриптов ночью отрабатывала, вне зависимости от наличия/отсутствия пользователей?

Вдогонку: как через EntitySchemaQuery коллекцию всех записей достать?
Или пробежаться по всем?
Что нибудь типа:

var esquery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ИМЯ СХЕМЫ");
 
entitycollection = esquery.GetAllEntitys();

или

var esquery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ИМЯ СХЕМЫ");
 
entity = esquery.GetFirstEntity();
 
while(entity.IsNotNull) {
 
   //мегаскрипт :-)
   entity = esquery.GetNextEntity ( entity );
}

вопрос про EntitySchemaQuery снят, сам нашел.

Александр, вопрос отработки скриптов ночью нужно рассматривать отдельно в зависимости от требований к нему.

На данном этапе в рамках проектных решений встречала вариант с запуском процесса внешним сервисом.

Пример, как можно запустить процесс в приложении. Сервис, который его запускает, уже пишется Вами в зависимости от потребностей.

Как то странно все.....почему "рассматривать отдельно в зависимости от требований"...
Требование одно: запуск БП по расписанию. Для таких систем, по моему, задача более чем стандартная и очевидная......

Кстати, а что значит

"Alimova Anna" написал:в текущей реализации запуск по расписанию завязан на сессию пользователя
?
Это так надо понимать раньше было не так? Зачем убрали? Ежу понятно, что так хуже гораздо.

Ну ладно, это все лирика.

Рассмотрим такой вариант: мне надо чтобы БП запускался раз в неделю, к примеру, в среду от имени Васи Пупкина (черт уж пока с ночью).
Мне надо поставить владельцем БП Васю Пупкина через параметр процесса с галкой "Содержит Id исполнителя", так?
И потом скриптом как описано здесь http://www.community.terrasoft.ru/forum/topic/8987 добавить его в шедулер?
Вася Пупкин приходит на работу в среду, заходит в систему и процесс выполняется.
Так будет работать?

Здравствуйте, Александр!

"Шамуилов Александр" написал:Это так надо понимать раньше было не так? Зачем убрали? Ежу понятно, что так хуже гораздо.

Нет, это значит, что планируется переделать в новых версиях, но работы пока не завершены.

"Шамуилов Александр" написал:Вася Пупкин приходит на работу в среду, заходит в систему и процесс выполняется.
Так будет работать?

Да, так работать будет.

Кстати, Анна, неправда ваша.... :smile:
Я проверил в пятницу: работает как часы и когда пользователь онлайн и когда нет.
Что не может не радовать :smile:

Работает, работает. От имени того пользователя, под которым поставлено задание в шедулер. Только нужно, чтобы приложение не выгрузилось по таймауту. Если все приложение остановилось - то нет шансов.

По поводу послать из БП e-mail без создания активности. Вы можете в скрипт-таске написать немного кода для формирования письма и передачи его непосредственно в какой-нибудь доступный smtp-сервер. Как вариант. Главное, чтобы ваш хост не записали в спамеры при слишком большой такой активности :smile:

Показать все комментарии