Извещения: как из bpmonline послать e-mail из бизнес-процесса?
Извещения: как из bpmonline послать e-mail из бизнес-процесса?
Имеется ввиду не активность городить, а просто послать квиток по адресу со ссылкой.
Нравится
Здравствуйте, Александр!
Делается это в два этапа:
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 ); }
Александр, вопрос отработки скриптов ночью нужно рассматривать отдельно в зависимости от требований к нему.
На данном этапе в рамках проектных решений встречала вариант с запуском процесса внешним сервисом.
Пример, как можно запустить процесс в приложении. Сервис, который его запускает, уже пишется Вами в зависимости от потребностей.
Как то странно все.....почему "рассматривать отдельно в зависимости от требований"...
Требование одно: запуск БП по расписанию. Для таких систем, по моему, задача более чем стандартная и очевидная......
Кстати, а что значит
"Alimova Anna" написал:в текущей реализации запуск по расписанию завязан на сессию пользователя?
Это так надо понимать раньше было не так? Зачем убрали? Ежу понятно, что так хуже гораздо.
Ну ладно, это все лирика.
Рассмотрим такой вариант: мне надо чтобы БП запускался раз в неделю, к примеру, в среду от имени Васи Пупкина (черт уж пока с ночью).
Мне надо поставить владельцем БП Васю Пупкина через параметр процесса с галкой "Содержит Id исполнителя", так?
И потом скриптом как описано здесь http://www.community.terrasoft.ru/forum/topic/8987 добавить его в шедулер?
Вася Пупкин приходит на работу в среду, заходит в систему и процесс выполняется.
Так будет работать?
Здравствуйте, Александр!
"Шамуилов Александр" написал:Это так надо понимать раньше было не так? Зачем убрали? Ежу понятно, что так хуже гораздо.
Нет, это значит, что планируется переделать в новых версиях, но работы пока не завершены.
"Шамуилов Александр" написал:Вася Пупкин приходит на работу в среду, заходит в систему и процесс выполняется.
Так будет работать?
Да, так работать будет.
Кстати, Анна, неправда ваша.... :smile:
Я проверил в пятницу: работает как часы и когда пользователь онлайн и когда нет.
Что не может не радовать :smile:
Работает, работает. От имени того пользователя, под которым поставлено задание в шедулер. Только нужно, чтобы приложение не выгрузилось по таймауту. Если все приложение остановилось - то нет шансов.
По поводу послать из БП e-mail без создания активности. Вы можете в скрипт-таске написать немного кода для формирования письма и передачи его непосредственно в какой-нибудь доступный smtp-сервер. Как вариант. Главное, чтобы ваш хост не записали в спамеры при слишком большой такой активности :smile: