Коллеги, приветствую.

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

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

Нравится

2 комментария

Добрый день,

Можно с помощью планировщика запланировать время выполнения самого процесса.
http://www.community.terrasoft.ru/forum/topic/12917
Можно запланировать время выполнения элемента с помощью Таймера.
Нужно понимать, что в этих случаях необходимо отталкиваться от какого-то времени или события.

Можно добавить активность с типом звонок с помощью элемента Добавление данных – указать дату начала активности.

Здравствуйте, Олег! Отлично, спасибо большое, буду пробовать.

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

Если в ходе БП происходит создание e-mail, то как ответственный может узнать, что ему надо e-mail исправить и отправить?

В активностях такой шаг (в отличие от всех остальных) не отображается, проконтролировать его выполнение тоже получается сложно

bpm'online 7.6

Нравится

23 комментария

Добрый день!

Как вариант, добавить уведомление ответственному с ссылкой на E-mail. Это можно выполнить на любом этапе БП.

Здравствуйте!
Вот у меня есть БП и в его ходе выполнения есть элемент E-mail.
Если я запускаю этот БП под администратором то элемент выполняется и карточка письма EmailPageV2 появляется (из автозаполненным телом через формулу) и в нее я только проставляю От кого и отправляю. Если же этот процесс я запускаю под менеджерами или другими админами то просто создается этот элемент в черновиках и не выпадает эта карточка письма в автоматическом режиме, хотя там проставленный и отвертственный за активность и отображать в расписании и Показывать страницу выполнения автоматически.

Самое интересное то что в этом же процессе есть другая ветка, где тоже есть элемент E-mail. И он отрабатывает нормально для всех пользователей. Может можете что-то посоветовать. Буду признательным за любые идеи. Спасибо!

Вот я заходил под менеджером и ему создалось письмо в черновиках, но почемуто тут стоит Литвин Дмитрий Викторович (тоисть админ) а не тот кто запустил этот процесс. Может поэтому и не выпадают эти активности всем остальным?

Здравствуйте!

Если убрать ответственного за активность, то есть шансы, что активность откроется. Дело в том, что в параметре "Ответственный" может быть указан не контакт текущего пользователя. Поэтому активность должна открыться другому пользователю (в теории). На практике она не открывается, т.к. процесс работает в другом websocket потоке.

Если убрать ответственного - то всеравно EmailPageV2 не открывается. И при этом не создается письмо в черновиках менеджера что звонит. Только если зайти в карточку контакта в историю - то только там ее можна найти.

Вы можете предоставить настройки элемента Email и предыдущих элементов, на которые сслылается Email? Предварительно попробуйте вариант в поле ответственный подставить системную переменную [#Контакт текущего пользователя#]

Здравствуйте. И еще вопрос по поводу тела письма. Вот я в Формуле задаю тело письма, но система ругается если в тексте есть специальные знаки типа $, троеточие, тире, двойные кавычки - то система ругается. Как же мне всетаки добавить эти знаки в тело письма? Спасибо.

"Сергиенко Николай Петрович" написал:

Здравствуйте. И еще вопрос по поводу тела письма. Вот я в Формуле задаю тело письма, но система ругается если в тексте есть специальные знаки типа $, троеточие, тире, двойные кавычки - то система ругается. Как же мне всетаки добавить эти знаки в тело письма? Спасибо.

Попробуйте использовать экранирование символов - для этого используйте символ \ перед спец. символом. Пример: \" или \$. Также текстовые символы должны заключаться в двойные кавычки

Здравствуйте!
Я кажется понял почему не выскакивают письма при звонках менеджеров. Я думаю это потому что этот процесс (Действие после завершения звонка) почемуто запускается от имени админа (Литвин Дмитрий Викторович) а не от менеджеров.

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

Здравствуйте!

А в поле создал записи звонка случайно не админ указан?

Вот берем звонок и видим его время завершения

Вот в журнале процессов видим что запустился от имени администратора

А если углубимся в журнал то увидим этого же контакта

У нас кто-бы не звонил - этот процесс запускается от имени админа почему-то...

Эмм... Запись в разделе "Звонки" создается системным пользователем - ноги растут отсюда. Попробуйте поиграться со стартовым сигналом - используйте событие не добавление записи, а изменение. Хотя изменения тоже могут происходить от имени системного пользователя.

Здравствуйте.
Подскажите пожалуйста как в БП отправить активность Email. А то сейчас Email у меня формируется автоматичести и ложится в черновики. И менеджеру нужно зайти в нее, заполнить поле от кого (хотя у него только один вариант и возможен - електронный адрес что в синхронизации его почты) и нажать отправить. Нужно автоматизировать эту часть процесса. Можна ли каким-то элементом прописать поле от кого в такой активности и чтобы отправка была автоматическая?

Или может мне лучше использовать элемент отправка Email? Но тогда вопрос в том как мне заполнять динамически поле от кого, ибо тут стоит луп где нужно выбрать Емейл отправителя? И в таком разе не будет подтягнуто в историю это письмо, ведь так же?
Спасибо.

Здравствуйте!

Используйте "Отправить email". Подробнее я описывал здесь.

В таком варианте отправленное письмо не появляется в истории переписки контакта.
Только если контакт отпишется тогда появляются оба письма. (после синхронизации которая автоматически происхлдит каждую минуту)
А почему так? Можна сделать чтобы если отправил - сразу видиш его в истории (через минуту)?

Судя по описанию, Вы используете GMail)

Смотрите, можно реализовать двумя способами:
1) Использовать элемент "Отправить email". Тогда необходимо настроить почту по другому - загружать письма из преднастроенных папок, выбрав папку "Отправленные"

2) Использовать элемент "Добавить данные" для создания активности и отправлять созданную запись элементом "Задание-сценарий".

Утоните, пожалуйста, какой Вы продукт используете?

"Демьяник Алексей" написал:

Здравствуйте!

Используйте "Отправить email". Подробнее я описывал здесь.


А как мне подставлять динамически значение От кого?

Я попробовал так:
1.Создал Читать данные Настройки синхронизации с почтовым ящиком

2.В Формуле прописую в елемент отправка e-mail поле От кого

И если я в кабинете админа запускаю этот процесс то все нормально отрабатывает и письмо отправляется. Если же под другими акаунтами то нету отправленых писем.
Процесс тот-же что и раньше (который в журнале пишется что создан от имени админа, хотя его запускали другие менеджеры)
Может есть идеи как сделать чтобы заработало и в менеджеров? Спасибо!

Здравствуйте!

В фильтрации чтения данных с объекта "Настройки синхронизации с почтовым ящиком" Вам необходимо указать Контакт = Контакт текущего пользователя. Тогда прочитается почтовый ящик пользователя, который выполняет процесс.

В таком варианте письма отсылаются всем от почты админа...

Продукт bpmonline sales commerce Версия 7.7.0.2325

Прошу прощения за предыдущий комментарий - в данном случае справочник смотрит в объект SysAdminUnit, а не Contact.
Условие немного не то - прикрепил скриншот корректного.

Вы знаете, после внесенных изменений ничего не изменилось. Письма так и идут от админа.

Николай,
Для того, чтобы письма отправлялись от всех пользователей системы ящик (поле От кого) должен быть общим. У всех пользователей должны быть права доступа к этому ящику.

Для того, чтобы настроить общий почтовый ящик необходимо:
- настроить в профиле пользователя почтовый ящик. Пользователь должен входить в роль системных администраторов.
- перейти в меню [Дизайнер системы - Права доступа на операции]. Добавить права пользователю (Важно! Не роли, именно пользователю) на операции CanUseSharedMailBox, CanManageSharedMailboxes. Очистить кэш браузера и повторно выполнить авторизацию на сайте.
В результате выполнения этого пункта в настройках почтового ящика (в профиле) появится возможность установить признак "Разрешить многопользовательскую работу". Установить этот признак.

А можна ли в ТЕМУ письма записать Имя контакта в БП? Думал что это можна сделать как с телом письма (через формулу) но в вариантах выбора куда записать формулу в Email нету ТЕМЫ...

"Сергиенко Николай Петрович" написал:

но в вариантах выбора куда записать формулу в Email нету ТЕМЫ...

Тема записывается в параметр "Рекомендация".

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

Добрый день!

Как можно установить заголовок активности в бизнес-процессе (добавив к тексту значение параметра integer, например)?

Нравится

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

Здравствуйте, Владимир!

Вы можете использовать элемент "Формула". В поле "Установить значение в" выберите параметр "Заголовок". В поле ниже Вам необходимо сформировать заголовок, используя параметры процесса. Также (без использования элемента формула) Вы можете сформировать заголовок, выбрав в структуре процесса параметр "Заголовок", а в поле "Значение" задать нужные параметры (здесь необходимо будет использовать конструкции типа [#Int.Parameter#].ToString())

"Демьяник Алексей Олегович" написал:Также (без использования элемента формула) Вы можете сформировать заголовок, выбрав в структуре процесса параметр "Заголовок", а в поле "Значение" задать нужные параметры (здесь необходимо будет использовать конструкции типа [#Int.Parameter#].ToString())

У элемента Task не вижу параметра Title. Всё остальное есть, а Title не вижу

У задачи за заголовок отвечает параметр Recommendation (Рекомендация).

Пишу [#RemindersCount#].ToString()

Получаю ошибку Value for argument "classType" must be specified.

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

Владимир, вот рабочий код:

"Скомплектовать " + [#Читать тип заказа.Первый элемент результирующей коллекции.Название#] + " №" + [#Читать Образцы (Заказ).Первый элемент результирующей коллекции.Номер#] + " для клиента " + [#Читать клиента.Первый элемент результирующей коллекции.Название#] + ", срок до " + ([#Указание желаемой даты комплектации.Желаемая дата комплектации#]).ToString()

его указываю в элементе "Добавление данных"

Пример работы подобного кода - на скриншоте

"Антон Кравченко" написал:Владимир, вот рабочий код:

Спасибо! Отличный рабочий пример!

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

Здравствуйте.

Пытаюсь реализовать задачу, изменить цвет активностей (на оранжевый), если у активности высокий приоритет.
Переопределил метод prepareResponseCollection:
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
if (item.get("PriorityId") === highPriorityId) {
item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}

Если без ифа, то цвет меняют все активности.
С ифом не работает(цвет не меняется).
Подскажите, что неправильно (подозрение на item.get("PriorityId") )?

Нравится

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

Алексей, добрый день!

Попробуйте в сравнении использовать item.get("Priority").value - в активностях поле "Приоритет" типа "Справочник".

При использовании item.get("Priority").value страница активностей перестала отображаться вообще (Загрузка, не прекращается, не загружает)

Попробуйте

var priority = item.get("Priority");
if (!this.Ext.isEmpty(priority) && (priority.value === highPriorityId)) {
...
}

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

Теперь страница отображается, но цвет активностей с высоким приоритетом не меняется.
По всей видимости, дело не в этом.
Также проверил, приоритет проставлен для всех активностей.

Алексей, Вы добавляли поле "Priority" в атрибуты схемы?

attributes: {
	...
	"Priority": {
		dataValueType: Terrasoft.DataValueType.LOOKUP
	}
}

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

в priority - undefined.
Вот код:
define("ActivitySectionV2", ["ConfigurationConstants", "FieldForceConfigurationConstants"],
function(ConfigurationConstants, FieldForceConfigurationConstants) {
return {

entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {
"Priority": {
dataValueType: Terrasoft.DataValueType.LOOKUP
}
},

methods: {
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
var priority = item.get("Priority");
debugger;
if ((!this.Ext.isEmpty(priority)) && (priority.value === highPriorityId)) {

item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
});

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

Попробуйте для начала вместо item.get("Priority") подставить item.get("Status"). Если значение будет отличаться от undefined, переопределите схему ActivitySectionV2, добавив в список колонок метода getGridDataColumns колонку "Priority".

Здравствуйте, Олег.
Действительно, после подставки item.get("Status") - priority получила значение.
После переопределения метода getGridDataColumns и добавления в него колонки "Priority" все заработало.
Спасибо Вам за консультацию.

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

Здраствуйте,

У одного пользователя не отображается раздел "Активности". (прик. файл)
У всех других пользователей данной проблемы не существует.
С чем это может быть связанно?

С уважением,

Нравится

2 комментария

Здравствуйте, Гюнель!

Для решения вопроса выполните очистку профиля пользователя (Инструменты -> Конфигурация -> Действия-> Профиль ->Очистить все).
Также, попробуйте удалить временные файлы браузера (удалить кэш и куки).

Заработала) Большое спасибо.

С уважением,

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

Здравствуйте.

BPMOnline 7.4.1.391

Актвносты -> E-mail

При нажатии отправить, сообщение доставляется успешно,
но процесс отправки длится ~ 60-80 сек.

sending

Можно както ускорить проце отправки?

Нравится

3 комментария

Здравствуйте, Тарас!
Для решения проблемы необходимо узнать больше деталей.
Где размещен bpm'online?
Какой почтовый сервер используется?
Есть ли приложения в письме?
Воспроизводится ли при тех же условиях на другом почтовом сервере? Попробуйте gmail или mail.ru, например.
Спасибо!

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

BPMOnline размещен на локальном компьютере.
Использовался почтовый сервер mail.ru.
Письма отправлялись с вложениями (2-3 файла) и без.

Изменения почтового сервера mail.ru на gmail і наоборот, привязка файлов к емейлу - не повлияло на скорость отправки.

Здравствуйте, Тарас.
Вопрос обсудили в телефонном режиме. Мы договорились, что Вы попробуете изменить параметры активности антивируса, так как его деятельность, как оказалось, значительным образом влияет на время отправки электронной корреспонденции через BPM'online.

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

Добрый день!
Версия 7.3.0.745
В теле бизнес-процесса некоторые активности должны повторяться(т.е. ссылаются по результату "обратиться позднее" сами на себя) в заданные дату и время. В промежуточном скрипте делаю следующее (NextActivityStartDate - Дата начала повторной задачи):

var esqActivity = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity");
esqActivity.AddColumn("NextActivityStartDate");
var entities = esqActivity.GetEntity(UserConnection, ActivityUserTask1.CurrentActivityId);
DateTime StartDate = entities.GetTypedColumnValueDateTime>("NextActivityStartDate");
DateTime Now = DateTime.Now;
TimeSpan ts = StartDate - Now;
ActivityUserTask1.StartIn = (int)ts.TotalHours;
return true;

Но в этом коде отсрочка старта присваивается предыдущей задаче а не новому экземпляру, новый создается с параметрами по умолчанию.
Как решить эту проблему?

Нравится

2 комментария

Здравствуйте, Иван Александрович.

Попробуйте в Вашем бизнес-процессе создать параметр StartIn. В активности которая должна повторяться установите значение параметра ActivityUserTask1.StartIn из параметра бизнес-процесса StartIn.
А в промежуточном скрипте (NextActivityStartDate - Дата начала повторной задачи) запишите в параметр бизнес-процесса:

StartIn =  (int)ts.TotalHours;

Спасибо Максим, помогло!

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

Здравствуйте!

BPM 7.2.0.1223
Есть пользовательский раздел Запросы.
На странице активности в групу 'Связи' добавлено поле Запрос.

Activity page

Как связать активность в рамках Бизнес Процесса с запросом?

Activity page in process

Нравится

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

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

Эта страница (страница элемента бизнес-процесса) описана и определена в одном из базовых пакетов, поэтому изменить ее не удастся.
Теоретически, Вы можете создать собственное действие и страницу для него на основании уже существующей и использовать ее.
Чтобы посмотреть, как реализованы стандартное действие и страница, посмотрите схемы:

Максим, добрый день! Спасибо за ответ!
У меня поставлена следудующая задача:
в системе создан новый объект, по которому отрабатвыает бизнес-процесс. В рамках БП я создаю активность при изменении которой я открываю карточку записи данного объекта. Можно ли связать активность с объектом в рамках БП другим способом (чтоб в дальнейшем я смог раздать права доступа на саму активность)?

Можно дополнительно использовать элемент Изменение данных и там прописывать связь между объектами.
То есть сначала создаете задачу, а после в Изменении заполняете этой задаче поле Запрос.

"Салихов А" написал:

Можно дополнительно использовать элемент Изменение данных и там прописывать связь между объектами.

То есть сначала создаете задачу, а после в Изменении заполняете этой задаче поле Запрос.

Skype - akmal.salihov


Спасибо за ответ, но Ваш вариант сработает только после завершения активности (Выполнена или Отменена).

"Taras Datsenko" написал:

Спасибо за ответ, но Ваш вариант сработает только после завершения активности (Выполнена или Отменена).


Нет, если для создания задачи использовать элемент Добавить данные, потом, для связки объектов, изменить данные, а уже потом Открыть страницу редактирования.

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

Добрый день!
Версия 7.3.0.745
БП создает в фоне активность, при открытии ошибка в логе:

2014-08-06 14:37:11,799 [6660] ERROR IIS APPPOOL\Bonlife_73 Terrasoft.Web.Common.ServiceModel.ErrorHandler ProvideFault - Значение с именем "Id1" не найдено
Terrasoft.Common.ItemNotFoundException: Значение с именем "Id1" не найдено
в Terrasoft.Core.Entities.EntityColumnValueCollection.GetByName(String name)
в Terrasoft.Core.Entities.Entity.ReadData(DataReader reader, EntitySchema schema)
в Terrasoft.Core.Entities.Entity.DeserializeFromJson(UserConnection userConnection, String jsonValue)
в Terrasoft.Core.Process.Configuration.ReadDataUserTask.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.ProcessFlowElement.ReadPropertiesData(DataReader reader)
в Terrasoft.Core.Process.ProcessActivity.ReadPropertiesDataFromDB(UserConnection userConnection)
в Terrasoft.Core.Process.Process.ApplyFlowElementsPropertiesData(DataReader reader)
в Terrasoft.Core.Process.Process.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.WorkWithClient.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.ProcessFlowElement.ReadPropertiesData(DataReader reader)
в Terrasoft.Core.ProcessEngine.TryGetProcessFromDB(String sysProcessDataId, Process& process)
в Terrasoft.Core.ProcessEngine.FindProcessByUId(String processUId, Boolean findInDB)
в Terrasoft.WebApp.ServiceModel.ProcessEngineService.GetExecutionData(String procElUId, String recordId)
в SyncInvokeGetExecutionData(Object , Object[] , Object[] )
в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
2014-08-06 14:37:11,799 [6660] ERROR IIS APPPOOL\Bonlife_73 Terrasoft.WebApp.FileWebEventProvider RaiseInternal - Date: 06.08.2014 14:37:11
Date (UTC): 06.08.2014 10:37:11

В чем может быть причина?

Нравится

3 комментария

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

Здравствуйте, Иван!

Проблема заключается скорее всего в том, что приложение не может найти активность с параметром Id1. Рекомендую Вам обратить внимание на присваиваемые параметры элемента "Активности" в БП, возможно они указанны некорректно.

Спасибо за участие, проблема была в предшествующем активности элементе чтение данных, при пересоздании которого проблема ушла.

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

Здравствуйте! Вопрос по бизнес процессу.

В процессе через скрипт создаются задачи в зависимости от выбранных данных (количество произвольное).
Процесс должен продолжаться только после завершения всех этих задач.

Скрипт:

bool ScriptTask1Execute(ProcessExecutingContext context) {
    var s = new Select(context.UserConnection)
        .Column("Id")
        .From("Contact")
        .Where("BusinessConsultant").IsEqual(Column.Const(1));

    // create activities
    ((Select)s).ExecuteReader((IDataReader reader) => {
           CreateActivity(context.UserConnection, reader.GetGuid(0));
    });
}

Метод CreateActivity:
Entity CreateActivity(UserConnection userConnection, Guid ownerId) {
    var schema = userConnection.EntitySchemaManager.GetInstanceByName("Activity");
    var entity = schema.CreateEntity(userConnection);
       
    entity.SetDefColumnValues();
    entity.SetColumnValue("Title", "Создать выборку целевой аудитории");
    entity.SetColumnValue("OwnerId", ownerId);
    entity.SetColumnValue("TypeId", "FBE0ACDC-CFC0-DF11-B00F-001D60E938C6");
    entity.Save();

    return entity;
}

Как реализовать проверку завершения всех созданных задач?

Нравится

2 комментария

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

Без ухищрений, думаю, не получится.
Можно сохранять идентификаторы созданных активностей в EntityCollection параметр процесса. И ожидать завершения первой задачи из коллекции. При завершении идти в скрипт, в котором удалять из коллекции активности, которые завершены. Если после скрипта, коллекция не будет пуста - идти снова ожидать завершения первого элемента коллекции, если пуста - значит условие соблюдено и можно двигаться дальше по процессу.

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