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

Нравится

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

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

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

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

С уважением,
Богдан
 

Bogdan,

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

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

Подскажите пожалуйста какие пакеты необходимо добавить в зависимости для своего, чтоб в объекте заработал функционал описан в статье: https://academy.terrasoft.ua/docs/developer/ehlementy_interfejsa/strani…

 

Делаю в пакете Custom  все работает. То же самое в собственном пакете на собственном объекте, не отрабатывает. Номер не формируется, и ошибки нет при этом.

Нравится

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

Попробуйте добавить зависимость от пакет SalesEnterpriseSoftkey_ENU

Дима Вовченко,

А для Studio Creatio? Вопрос по этой версии. Почему-то не отрабатывает триггер.

 

Попробовал реализовать на студии и тоже столкнулся с этой проблемой. Похоже на недоработку либо я что-то упускаю. В любом случае пока лучше использовать пакет Custom.

Дима Вовченко,

Добрый день! Я разобрался с этим вопросом. Причина в следующем: при создании нового пакета автоматически проставляется признак "Компилировать в отдельную сборку", если ее снять, и перекомпелировать, то процессы отрабатывают корректно.

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

Добрый день. я хочу показать более подробную ошибку пользователю, который запускает бизнесс процесс из кастомной кнопки. Бизнесс процесс запускает C# код, который бросает исключение. Но я не могу найти информацию по результатам выполнения бизнесс процесса.

Я получаю вот такой JSON в коллбеке ProcessModuleUtilities.executeProcess

 

'"{\\"message\\":\\"Произошла ошибка во время выполнения процесса. Пожалуйста, проверьте журнал процессов для получения детальной информации\\",\\"success\\":false,\\"errorInfo\\":{\\"initialConfig\\":{\\"errorCode\\":null,\\"message\\":\\"Произошла ошибка во время выполнения процесса. Пожалуйста, проверьте журнал процессов для получения детальной информации\\",\\"stackTrace\\":null},\\"errorCode\\":null,\\"message\\":\\"Произошла ошибка во время выполнения процесса. Пожалуйста, проверьте журнал процессов для получения детальной информации\\",\\"stackTrace\\":null,\\"instanceId\\":\\"8a078ebd-540c-476a-aab0-98fa4c42ce83\\",\\"hasListeners\\":{},\\"events\\":{\\"destroyed\\":true}}}"'

 

Здесь есть instanceId (8a078ebd-540c-476a-aab0-98fa4c42ce83), но когда я пробую сделать поиск по нему в базе данных, то не нахожу никакой ошибки. 

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

 

Если же я выполню бизнес процесс успешно, тогда существует поле processId, по которому я могу найти текст ошибки.

 

Как другим способом можно найти ошибку выполнения бизнесс процесса который запускает C# код?

 

Спасибо

Нравится

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

Или может быть я делаю неправильно когда кидаю исключение в бизнес процессе. Как правильно создать исключение, если бизнес процесс должен быть остановлен?

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

Что до самого исключения в бизнес-процессе, не знаю как конкретно вы бросаете исключение, могу предположить, что через try catch в скрипт-таске. Если так, то это правильный метод.

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

Добрый день. Возможно ли данный функционал добавить? Это выглядит очень удобно когда надо при нажатии на кнопку запустить бизнесс процесс и показать ошибку если она появилась.

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

Как реализовать функционал который позволит в письме поставить кнопку при нажатии которой в Creatio запуститься процесс? 
-------------

1 - Мы отправляем письмо с кнопкой контакту
2 - пользователь получает письмо в почте email
3 - нажимает в письме на кнопку 
4 - в Creatio запускается процесс

Нравится

1 комментарий
Лучший ответ

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

Для выполнения подобной логики реализован сервис ProcessEngineService.svc( подробнее тут). 

Соотвественно для решения вашей задачи вам нужно макросом наполнить ссылку параметрами процесса. 

С уважением,
Юрий.

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

Для выполнения подобной логики реализован сервис ProcessEngineService.svc( подробнее тут). 

Соотвественно для решения вашей задачи вам нужно макросом наполнить ссылку параметрами процесса. 

С уважением,
Юрий.

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

Добрый день, подскажите как можно настроить визуализацию коллекции на преднастроенной странице? Есть БП который читает коллекцию и преднастроенная страница с параметром “Сериализуемый список составных значений” и нужными полями. Не могу понять как вывести теперь нужный список на страницу визуально. Заранее спасибо.

Нравится

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

Добрый день Виталий,

 

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

 

С уважением,

Олег

Oleg Drobina,

Пытаюсь в тестовом БП просто читать коллекцию СкриптТаском перевести ее в String и отобразить на преднастроенной странице в текстовом поле, но значение всегда пустое.

Пробовал код с документации:

var list = Get<ICompositeObjectList<ICompositeObject>>("ReadDataUserTask1.ResultCompositeObjectList");

var sb = new StringBuilder();

foreach (ICompositeObject item in list) {

   if (item.TryGetValue<string>("Name", out string value)) {

       sb.Append(value).Append( " | ");

   }

}

Set<string>("ProcessSchemaParameter1", sb.ToString());

return true;

 

И тот что в  треде, не могу понять что упускаю.

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

Приветствую!

 

Есть задача через БП выгружать печатную форму счета. Сам файл формы получаем с помощью элемента "Обработать файл".

Как далее его передать на выгрузку? Может у кого есть подобный пример реализации стандартными средствами или средствами разработки.

Нравится

1 комментарий

Григорий, добрый день!

Так просто из бп выгрузить файл не получится. В нём можно только работать с ним (например, прикрепить к письму) или добавить на деталь "Файлы и Ссылки". Сама выгрузка реализована в методе _downloadReport клиентского модуля FastReportService. Для выгрузки файла в бп придется подстраиваться под эту логику.

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

Добрый день.

После обновления до 7.18.5 на среде on-site перестали открываться карточки редактирования по БП, открываются только через CTI панель. В статье https://academy.terrasoft.ua/docs/user/razvertyvanie_onsite/windows_net_framework/nastroika_vebsoketov/nastroit_vebsokety указанны 3 способа проверки корректной настройки WebSocket-тов. 2 из них у меня проходят успешно, а 3-й как раз открытие карточек из БП. Все рекомендации из статьи выполнил.

Возможно есть еще настройки на которые надо обратить внимание?

Спасибо.

Нравится

1 комментарий

Добрый день.
Для корректной работы Websockets нужно проверить:
1)Убедиться что в Windows установлен компонент: Application Development - WebSocket Protocol
2) Во всех байндингах сайта должен быть указан один и тот же порт.
3) Настройка пула [Maximum Worker Process] должна иметь значение "1"
4) В Web.config загрузчика и приложения, на всех нодах фермы, должен быть указан один и тот-же machineKey
5) TenantId не должны дублироваться с разными значениями, как в одном и том-же web.config, так и web.config загрузчика и приложения одной ноды.
6)Установлен ли протокол использования вебсокетов для прокси-сервера, если он используется в вашей локальной сети.
7) Настройки антивируса и Firewall. Если нет возможности отключить на сервере эти программы, добавьте IP-адрес и порт вашего сайта Creatio в список исключений для входящих и исходящих потоков.
8) Наличие расширений и надстроек web-браузера, в том числе VPN. Расширения могут блокировать работу вебсокетов.

Если websocket-ы работают корректно, а страница редактирования не открывается, то нужно проверить параметр "portForClientConnection" в web.config.
Укажите в нем порт на котором работает приложение.

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

Добрый день. Нужно выполнять отмену процесса прямо из C#. Я знаю, что можно при удалении записи сделать так entity.DeleteWithCancelProcess, но такой вариант не подходит, запись не надо удалять. 

Кто-то сталкивался с такой задачей?

Нравится

1 комментарий

Добрый день!

Рекомендую ознакомиться с данными обсуждениями:

https://community.terrasoft.ua/articles/otmenit-vypolnyaemyyzavisshiy-b…

https://community.terrasoft.ua/questions/prinuditelnoe-zavershenie-proc…

https://community.terrasoft.ua/questions/zavershenie-processov-v-sostoy…

https://community.terrasoft.ua/questions/zavershenie-bp-po-api

В них и подымается тема отмены бп через код.

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

Доброго времени суток!

 

Есть БП и в нем есть параметр в которой записывается результат. И нужно по завершению БП через JS получить содержимое параметра. Как это можно реализовать?

Нравится

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

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

с помощью сообщения по веб сокету на страницу редактирования отправить нужный параметр , после завершения элемента процесса

Столкнулся с такой же потребностью. В методе runProcess модуля ProcessEngineService предусмотрена передача resultParameterNames, где можно указать значения которые нужно вернуть, но ответ приходит до завершения процесса и не все параметры успевают заполниться. Как заставить систему ожидать завершения процесса прежде чем вернуть ответ?

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

В Бизнес процессе получаю коллекцию данных.

Далее у меня идет Задание-сценарий.

 

Как в задании-сценарии получить эту коллекцию?

Нравится

1 комментарий

Всё просто.

 

Надо добавить в БП новый параметр Коллекция записей и присвоить ему значение из Параметра процесса.

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