Предлагаю фиксировать на детали активности типа e-mail связанные с ней другие e-mail'ы:для входящего e-mail'а это будут ответные или перенаправленные e-mail'ы. для исходящего - это входящие e-mail'ы. Это позволит отслеживать, что было отвечено (и было ли что-то отвечено) на каждый e-mail.
3 комментария

Владимир, хочу уточнить правильно ли я понимаю идею.
Вы это видите как дополнительную деталь в разделе [Активности]? Например, деталь [Связанные активности], а в ней уже будут отображаться связанные с записью раздела письма.

Да, верно.

Изначально идея заключалась в том, чтобы контролировать, на какие e-mail'ы был дан ответ, а на какие еще нет. Затем захотелось еще и быстро увидеть, что же было отвечено.

Владимир, идея взята в рассмотрение.

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

Приветствую, коллеги!
Менеджеры попросили уведомления о задачах с высоким приоритетом на почту. Когда бывают в командировках, чтобы могли получать уведомления с основными параметрами задачи.

Хотел бы поинтересоваться, есть идеи как можно реализовать ?

Нравится

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

Павел, мне кажется, самым простым и эффективным будет создание БП с двумя стартовыми сигналами:
1. При создании записи Активность, если приоритет критический
2. При изменений записи Активность, если приоритет был изменен и стал критическим
После этого достаточно выполнить два чтения данных: ответственного и активности.
Затем подготовить тело письма в задании-сценарии, в которое следует поместить основные параметры задачи. В конце нужен элемент Автоматическая отправка E-Mail.

Спасибо, Максим, большое!
Я уже думал как-то работать с модулем напоминаний, но это вариант кажется действительно эффективнее, если можно будет отправлять e-mail за некоторое время до наступления события.
Попробую сегодня и отпишусь.

а можно сделать стартовый сигнал "текущее время = время начала задачи - 2 часа", например?

Сложные фильтры на стартовый сигнал наложить нельзя. Да и не нужно это, ведь с 7.2 доступен таймер, с помощью которого можно прервать выполнение ветки процесса на определенное время.

Максим, а почему так сделано, что в элементе "Отправить e-mail" нельзя указать значения уже ранее прочтенных параметров сразу, а нужно использовать скрип ?

"Харитонов Павел" написал:

Максим, а почему так сделано, что в элементе "Отправить e-mail" нельзя указать значения уже ранее прочтенных параметров сразу, а нужно использовать скрип ?

Да, очень хотелось бы тело и тему письма составлять попроще, не приглашая программиста

На странице элемента БП есть поле для заполнения тела письма. В структуре элемента доступен параметр Body, который можно заполнить используя макросы/програмный код.

"Maxim Gritsenko" написал:

На странице элемента БП есть поле для заполнения тела письма. В структуре элемента доступен параметр Body, который можно заполнить используя макросы/програмный код.


Максим, здравствуйте.
За ответ спасибо, но он не совсем отвечает на вопрос
"Харитонов Павел" написал:Максим, а почему так сделано, что в элементе "Отправить e-mail" нельзя указать значения уже ранее прочтенных параметров сразу, а нужно использовать скрип ?

Вернее совсем не отвечает.

Добрый день!
Павел, непонятно, что Вы имеете ввиду под фразой "нужно использовать скрип".
Значения параметров вставляются исключительно средствами визуального интерфейса:

"Андрей Каспаревич" написал:
Павел, непонятно, что Вы имеете ввиду под фразой "нужно использовать скрип".

"Maxim Gritsenko" написал:В структуре элемента доступен параметр Body, который можно заполнить используя макросы/програмный код.

Вот. Максим написал. Макросы и программный код, который указывается с элементе процесса- задание сценарий.
"Андрей Каспаревич" написал:Значения параметров вставляются исключительно средствами визуального интерфейса:

Предложенный вами вариант вызывает ошибку при публикации. Я уже пробовал вставлять туда формулы, выбирать параметр способом, который вы показали- возникает ошибка. Собственно оно и непонятно, почему так происходит.

"Харитонов Павел" написал:Предложенный вами вариант вызывает ошибку при публикации. Я уже пробовал вставлять туда формулы, выбирать параметр способом, который вы показали- возникает ошибка. Собственно оно и непонятно, почему так происходит.

У меня получалось вставлять лишь сам e-mail:
[#Читать ответственного.Первый элемент результирующей коллекции.E-mail#]

Павел, мой скриншот демонстрирует простоту вставки параметра.
Владимир прав, в поле "Кому" нужно вставлять именно E-mail адрес контакта.

Да, коллеги. С полем Кому это я неверно параметр указывал. Поэтому ошибка выходила.
Прощу прощения.

Только вот один вопрос. Уведомление нужно не в момент постановки задачи, а перед ее началом. В принципе можно брать значение из активности- напоминания-время, только как лучше отсрочить отправку - С помощью таймера ? В элементе "Отправить e-mail" нет возможности указать дату и время отправки.

Спасибо за помощь.

"Харитонов Павел" написал:В принципе можно брать значение из активности- напоминания-время, только как лучше отсрочить отправку - С помощью таймера ?

А если кто-то перенесет эту задачу? Таймер-то не изменится

Может и перенести. Такой вариант, конечно, возможен, но его пока не учитываем. Хотя надо.

"Харитонов Павел" написал:

Может и перенести. Такой вариант, конечно, возможен, но его пока не учитываем. Хотя надо.

На мой взгляд bpm'online как раз позволяет избавиться от лишних e-mail'ов. А напоминать менеджерам поможет синхронизация с google calendar, например, если они не готовы использовать Bpm'online постоянно

"Владимир Соколов" написал:если они не готовы использовать Bpm'online постоянно

Спасибо, Владимир.
Они то готовы, но всегда есть возможность. Хотя идея хорошая. Только вот вопрос конфиденциальности, пожалуй, этого сделать не позволит.

Коллеги, при таких раскладх задача несколько усложняется, но остается решаемой.
Поменять время выполнения таймера нет возможности, а отменять можно двумя способами:
1) завершать процесс;
2) вызывать метод CancelExecuting() примерно так:

ProcessSchemaIntermediateCatchTimerEvent1.CancelExecuting();

Поймать изменение записи нужно в том же БП, в котором ставится таймер.
Кроме того, можно воспользовться планировщиком QUARTZ из кода вместо таймера, если требуется более гибкая настройка.

Коллеги, а никак нельзя взаимодействовать с уведомлениями ? По сути нужно то же самое, мне так кажется, только не флажок нарисовать, а письмо отправить.

Павел, с уведомлениями, в общем-то, можно взаимодействовать, но это будет сложнее предложенного варианта.
Разве что при добавлении напоминания можно стартовать БП и брать время из времени напоминания. Но напоминания создаются в тот же момент, что и запись, по которой будет напоминание.

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

Body = "<p>Внимание! Приближается время начала задачи: [заголовок]<br> Начало: [Начало]<br> Контрагент: [Контрагент]<br> Контакт: [контакт]<br> Средства связи: [мобильный телефон], [рабочий телефон]</p>";
return true;

И получил ошибку:
А еще хочется указать в задании-сценарии название контакта, контрагента и средства связи. Что делал не так ?
Спасибо.

Здравствуйте, Павел!
В Body - это свойство элемента БП, воответсвенно, в задании-сценарии необходимо обращаться к нем укак к свойству, то есть:

SendEmailUserTask1.Body = "<p>Внимание! Приближается время начала задачи: [заголовок]<br> Начало: [Начало]<br> Контрагент: [Контрагент]<br> Контакт: [контакт]<br> Средства связи: [мобильный телефон], [рабочий телефон]</p>";
return true;

По поводу отправки на следующий день. Не понял, как она у Вас заработала, если процесс не опубликовался. Данные контакта, контрагента и т.д. можно получать с помощью четния данных или esq-запроса.

Спасибо, Андрей.

"Андрей Каспаревич" написал:Не понял, как она у Вас заработала, если процесс не опубликовался.

Я опробовал без задания-сценария процесс. Он опубликовался и запустился.
Андрей, попробовал с учетом рекомендаций. У меня появляется ошибка. Можете помочь, в чем она ?

Павел, в тексте ошибки четко же написано, что в поле "Контакт" активности не содержится значение, то есть там NULL, что недопустимо. НУжно заполнить поле "Контакт" или добавить проверку в БП.

"Андрей Каспаревич" написал:в тексте ошибки четко же написано, что в поле "Контакт" активности не содержится значение, то есть там NULL, что недопустимо.

Спасибо, Андрей. Да, я прочитал. Почему NULL не допустимо ?
Если вопросы кажутся очень глупыми, заранее простите. :smile:
"Андрей Каспаревич" написал:добавить проверку в БП.

Подскажите, как можно осуществить проверку стандартными свойствами элементов дизайнера на наличие значения в поле Контакт в Активности, чтобы пустить процесс по нужной ветке ?

Добрый день, Павел!
Проверку можно делать с помощью условий в условном потоке. Например, так:

Спасибо, Андрей. Я пробовал, но ставил вместо "null" "0", потому получал ошибку.
Я поставил два потока:

В первом такое условие:

[#Читаем активность.Первый элемент результирующей коллекции.Контакт#] == null

Во втором такое

[#Читаем активность.Первый элемент результирующей коллекции.Контакт#] != null

Почему процесс идет по второму, не понятно. Если ставить поток по умолчанию- то же самое.

Павел, процесс должен идти по первому только в случае, если поле "Контакт" не заполнено. Если у Вас оно дейтсивтельно не заполнено, но процесс идет по другому потоку, попробуйте изменить условие следующим образом:

[#Читаем активность.Первый элемент результирующей коллекции.Контакт#] == null || [#Читаем активность.Первый элемент результирующей коллекции.Контакт#] == Guid.Empty

Андрей, получилось с вариантом "Guid.Empty". Теперь все идет так, как планировалось.
Процесс прошел без ошибки, но письмо так и не пришло. Мне кажется оно снова в 00:00 придет.
На всякий случай прикладываю последнюю версию.

Павел, возможно есть необходимость дополнительно настроить конфиг сайта для корректной работы планировщика. Тут зависит от того, какая у Вас сборка.
Какую Вы сейчас сборку используете?

"Андрей Каспаревич" написал:Какую Вы сейчас сборку используете?

Как и было в прошлый раз, письмо пришло в 00:00. Текущая версия 7.2.0.1263

Павел, кажется понял, в чем проблема. Нужно пул немного перенастроить на on-demand. Сегодня в течение дня должны сделать.

"Андрей Каспаревич" написал:
Нужно пул немного перенастроить на on-demand. Сегодня в течение дня должны сделать.

Спасибо, Андрей :smile:
Теперь не все получается с высчитыванием значения, через сколько отправлять письмо:

int DateTime newDate = new DateTime(start);
int DateTime oldDate = DateTime.Now;
int TimeSpan ts = newDate - oldDate;
ProcessSchemaIntermediateCatchTimerEvent1.StartOffset=ts.Second;

Выдает ошибку.

Павел, какую ошибку?)


Вот такую.
Весь код такой

string title=ReadDataUserTask1.ResultEntity.GetTypedColumnValue<string>("Title");
string start=ReadDataUserTask1.ResultEntity.GetTypedColumnValue<string>("StartDate");
string kontra=ReadDataUserTask3.ResultEntity.GetTypedColumnValue<string>("Name");
string konta=ReadDataUserTask5.ResultEntity.GetTypedColumnValue<string>("Name");
string id=ReadDataUserTask1.ResultEntity.GetTypedColumnValue<string>("Id");
int DateTime newDate = new DateTime(start);
int DateTime oldDate = DateTime.Now;
TimeSpan ts = newDate - oldDate;
ProcessSchemaIntermediateCatchTimerEvent1.StartOffset=ts.Second;
SendEmailUserTask1.Body="<p>Внимание! Приближается время начала задачи: </p>";
return true;

Здравствуйте, Павел!
Определение переменной вида

int DateTime newDate = ...

неправильна, так как int - это один тип данных, а DateTime - это другой тип данных.
Вы же определяете переменную типа DateTime. Зачем писать еще int?
Далее, если Вы хотите преобразовать промежуток времени (TimeSpan) в секунды, то нужно использовтаь свойство TotalSeconds. Так как оно возвращает double, а нужен int, необходимо преобразование, например:

ProcessSchemaIntermediateCatchTimerEvent1.StartOffset = Convert.ToInt32(ts.TotalSeconds);

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

Здравствуйте, Андрей.
Подскажите,

"Андрей Каспаревич" написал:Нужно пул немного перенастроить на on-demand. Сегодня в течение дня должны сделать.

это настроено ? У меня сообщения все также только в 00:00 приходят.
Спасибо.

Здравствуйте, Павел.

Для Вашего сайта выполнены настройки на площадке on-demand - пул не останавливается.
Вероятно проблема в том как Вы устанавливаете задержку отправки уведомления, просьба перепроверить Ваш код.

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

кто-нибудь в курсе как создать новый тип активности в BPM 7.2(3)?

Нравится

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Дмитрий.

Посмотрите прикрепленное видео, в нем содержится довольно наглядная инструкция.

registernewpage.rar

Максим, ничего у меня не получилось.

Новый тип я создал и SQl-скрипт отработал вроде верно.
И схема создалась корректно, и действие появилось. Но при создании активности с новым типом отображается пустой контейнер:

а вот при открытии уже созданной активности с новым типом:

для сравнения вот карточка задачи

когда написал понял - решение для 7.2

проверил

тоже не получилось))
созданная активность открывается, но новая не создается - загрузка карточки повисает вот здесь

Очередной раз убедился в том, что какой вопрос задашь, такой ответ и получишь)

Прежде всего интересует создание нового типа активности для 7.3.
Помогите, пожалуйста.

Отвечу сам себе)
В 7.3 это можно сделать с помощью дизайнера разделов

Дмитрий, простите, не успели Вам ответить. Да, все правильно, подобного рода кастомизацию легко выполнить с помощтю мастера разделов.

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

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

Как же добавить подобный фирменный бланк в BPMonline?

Сделать это можно следующим образом:

1. Создать активность с типом Email, в теле которой будет наш бланк.

01

В случае, если Вам необходимы изображенияв шаблоне, рекомендуем загрузить их в базу данных через конфигурацию: создать схему Список изображений

01

01

2. Найдите в базе данных запись нужного шаблона и скопируйте содержимое поля HtmlBody:

SELECT Title, HtmlBody FROM Activity

01

3. Откройте объект Активности и добавьте содержимое поля HtmlBody в значения по умолчанию:

01

Опубликуйте схему.

Обратите внимание, в значении константы все двойные кавычки " нужно продублировать: ""

Это необходимо для того, чтобы в сгенерированном исходном коде схемы константа сохранилась корректно.

В результате новые создаваемые активности с типом Email будут создаваться по шаблону.

Нравится

Поделиться

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

Добрый день
Анна, не могли бы вы подсказать:
мне в шаблоне на уведомление (в е-мейл акт-ти) нужно, чтобы отображалась ссылка на активность-задачу (url-адрес). Т.е. сотрудник, получивший по эл.почте это уведомление, перейдя по этой ссылке, открыл саму активность-задачу. Подскажите, как "выцепить" этот url-адрес ? Заранее спасибо

Здравствуйте, Татьяна.
Ссылка на активность состоит из константы (постоянной части ссылки) и идентификатора конкретной активности. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…» – константа, «23731a65-f9bb-4b75-b983-8c815cae6050» – идентификатор конкретной активности.
Для подстановки конкретной активности в шаблоне, необходимо в url после константы поставить %id% для передачи в эту ссылку идентификатора конкретной записи. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…%».

А как в подпись попадают данные сотрудника?

Владимир,

Изначально вы просто вводите все в редакторе и сохраняете как шаблон. А потом уже вытягиваете из базы данных в виде сохраненного кода и вставляете его в как константу, понятную системе.

Кстати, к предыдущему вопросу о ссылках на другую активность: я бы рекомендовала конструировать их иначе, примерно как тут, чтобы не приходилось хардкодить адрес сайта и ссылки не ломались при переносе сервера на другой домен.

"Обуховский Александр Сергеевич" написал:Для подстановки конкретной активности в шаблоне, необходимо в url после константы поставить %id% для передачи в эту ссылку идентификатора конкретной записи. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…%».

а в шаблоне сообщения это тоже через макрос можно как-то сделать?

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