Как в процессе реализовать сохранение и обновление страницы? 

----

Пример: 

написание процесса, который запускается по тригеру - изменение значения в поле карточки, после чего запускаются определенные действия процесса которые меняют другое поле. 

Необходимо что бы клиент видел изменения в другом поле без нажатия на кнопку "СОХРАНИТЬ" что приводит к сохранению данных и обновлению страницы.

Нравится

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

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

 

Спасибо за вопрос!

 

К сожалению, это невозможно реализовать базовыми средствами, однако, есть несколько обходных решений:

 

1) Приложение Reload data button for Creatio, которое позволяет быстро обновить данные на странице без перезагрузки:

https://marketplace.terrasoft.ua/app/reload-data-button-creatio

 

2) Реализовать JavaScript, которые будут выводить значение в поле:

https://academy.terrasoft.ua/documents/technic-sdk/7-15/ustanovka-dlya-…

 

С уважением,

Анастасия

Anastasiia Lazurenko,

Огромное спасибо за ответ. 

Жалко что Creatio нет такого в коробке

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

Добрый день!

 

Был ли у кого-то опыт отображения конструктора процесса в карточке объекта?

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

 

В стиле того, как это сделано в "кампаниях" продукта маркетинг

Нравится

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

Вадим, добрый день!

Чисто технически возможно реализовать что-то подобное на схему кампании, однако, для этого необходимо большое  количество трудозатрат. Наподоби вкладки "Обработка" в обращениях, "Схема кампании" является уникальным функционалом для раздела. Для его повторение необходимы навыки разработки, системой не предусмотрено повторение такого пользовательскими средствами. Если же вы всёже желаете это реализовать, то необходимо будет проанализировать содержимое пакетов Campaigns, CampaignDesigner, CampaignElements и тд.

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

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

Отмена выполняемого бизнес процесса.

В каких случаях может пригодится:

- Зависла система и нужно отключить бизнес процесс.

- Бизнес процесс сильно грузит систему и быстрее выполнить Post запрос.

Отмена бизнес процесса через Postman.

1. Получаем BPMCSRF из сервиса аунтификации 

http(s)://ваш_Ip_/ServiceModel/AuthService.svc/Login

отправляя логин и пароль.

Вот инструкция https://academy.terrasoft.ru/docs/developer/back-end_development/config…

 

2. Получаем из базы Id процесса SELECT "Id" FROM public."SysSchema" where "Name"='ПИШЕМ_НАЗВАНИЕ_ПРОЦЕССА';

 

3. Выполняем Post запрос с подстановкой BPMCSRF из 1 пункта в HEADER

И отправляем запрос http(s)://_ваш_айпи/0/ServiceModel/ProcessEngineService.svc/CancelExecutionBySchemaId?schemaId=_ID_процесса_из_пункта_2

 

 

 

Нравится

Поделиться

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

Подскажите, пожалуйста, как получить количество дней в месяце в формуле процесса?



DaysInMonth() редактору формул не нравится

Изображение удалено.

Нравится

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

Сделайте скриншот формулы с текстом ошибки.

Можно попробовать добавить System в Namespace.

И посмотрите еще раз пример.

int daysInJuly = System.DateTime.DaysInMonth(2021, 7);

Владимир, у меня всё работает:

В процесс дополнительно ничего не добавлял.

Зверев Александр пишет:

Андрей, у меня всё работает:

Очень интересно! Я проверил в облаке - действительно, работает.

А на on-site - выдаёт ошибку.



В чём может быть разница? 

Может, версия отличается? Я пробовал на 7.17.2.

Зверев Александр пишет:

развернули Marketing 7.17.2 PostgreSQL на Windows - то же самое...

Чистка кэша браузера и Redis не помогает?

В «инструментах разработчика» браузера есть более подробная информация об ошибке?

Чистка, рестарт не помогли, в консоли тоже ничего.  

Значит, есть ещё какие-то различия между системами, где работает, и где нет. А если на одном сайте создать БП, выгрузить схему в файл и загрузить на другой сайт, тоже перестаёт работать?

Зверев Александр пишет:

Значит, есть ещё какие-то различия между системами, где работает, и где нет. А если на одном сайте создать БП, выгрузить схему в файл и загрузить на другой сайт, тоже перестаёт работать?

Проверил ещё на парочке on-site (которые ставили не мы) - везде повторяется такая же ошибка.. 

При переносе схемы БП с этой функцией на такой сайт тоже? А в логах, куда пишутся стеки ошибок в серверном коде, ничего не появляется?

Зверев Александр,

Вернулся к этому вопросу. Если перенести схему из облака, то процесс успешно выполняется. 

Однако при попытке его редактировать, снова та же ошибка.



В логах не нашли ничего подозрительного

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

Подскажите, пожалуйста, как можно запустить процесс на объекте ПОСЛЕ исполнения процессов, определенных в родительском объекте?

Изображение удалено.

Нравится

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

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

Вы можете использовать событийный слой и там разрабатывать обработку данных объекта, естественно после отработки базовой логики + событийный слой более гибкий том можно работать с данными как перед сохранением/изменением в бд так и после. Более детально в описано в данной статье.

Нигрескул Алексей пишет:

Вы можете использовать событийный слой и там разрабатывать обработку данных объекта

В статье написано, что Механизм событийного слоя Entity срабатывает после выполнения событийных подпроцессов объекта

Однако, в данном случае поле Code (заполняется в процессе объекта на OnSaved) оказывается пустым.



 

[EntityEventListener(SchemaName = "Account")] 
public class UsrAccountEntityEventListener : BaseEntityEventListener
 {
  public override void OnSaved(object sender, EntityAfterEventArgs e) {
    base.OnSaved(sender, e);
 
    var entity = (Entity) sender;
    var userConnection = entity.UserConnection;
 
    string accountCode = entity.GetTypedColumnValue<string>("Code");
 
    throw new Exception(entity.Schema.Name + " " + accountCode);

 

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

Зверев Александр пишет:

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

выяснили, что процесс выполняется первым, но в событийном слое у  entity нет тех значений, которые установились в процессе: https://community.terrasoft.ua/questions/poluchenie-znacheniy-v-sobytiy…

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

Добрый день. В результате изучения моб. приложения. Столкнулись с рядом проблем. 

1) Можно, ли расставить сигналы таким образом?

https://i.imgur.com/nKBk78M.png.

2) Дело в том, что данный бизнес процесс связан с кейсом. А если запускается по сигналу, то можно увидеть что связь с кейсом пропадает. Как быть быть в данной ситуации???

https://i.imgur.com/oeQA186.png

3) Если такая модель бизнес-процесса подходит, то как избавиться от ошибок. Дело в том что бизнес процесс запускается на сайте. А дальше продолжение по сигналу через приложение. 

https://i.imgur.com/HMQYg7N.png

Первый процесс это продолжение через моб. версию. (Диаграмма выполнения: https://i.imgur.com/9ZxIBnH.png)

А второй с ошибкой это запуск через сайт. (Диаграмма выполнения: https://i.imgur.com/V2Ck5iR.png)

Нравится

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

Не совсем понимаю, что Вы хотите сделать в БП и причём тут мобильное приложение.

Само по себе мобильное не выполняет процессы, они запускаются на сайте, если происходят изменения в записи объекта, для которых в БП настроен сигнал. Если мобильное приложение работает оффлайн, то данные в основной системе добавятся или изменятся в момент синхронизации. 

Узнать больше о том, как выполнялись элементы БП и какие в этот момент были значения параметров, можно, включив трассировку.

Да спасибо я уже понял. Дело в том что  в мобильном приложении вносятся изменения в карточку способом: просто редактированием поля(без какого-либо подтверждения оно автоматически сохраняется, in-place редактирование). По этой причине некоторые бизнес-процессы не работали. Изменил немного логику

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

Есть процесс, который по таймеру каждые 10 минут обрабатывает пришедшие файлы. В ходе выполнения процесса может возникнуть некоторая ситуация, в результате чего необходимо остановить все следующие выполнения этого процесса. То есть, пока администратор его не запустит ещё раз самостоятельно, процесс не должен стартовать.



Можно ли такое сделать?

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

 

Нравится

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

Снимайте признак активный с БП

Снимайте признак активный с БП

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

Савельева Анастасия,

а как отлавливать этот сигнал?

Коновалов Игорь пишет:

Снимайте признак активный с БП

А в каком объекте этот признак присутствует? 

Вижу в базе отдельный объект SysProcessDisabled. См. тут.

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

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

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

Буду благодарен любым идеям.

UPD-1. Изначально не известно сколько будет подпроцессов, поэтому такого рода схема не подойдет

Нравится

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

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

что то вроде такого -http://prntscr.com/ocm1ol

Вот наглядный пример, создал 3 БП, в них добавил разные таймеры и посмотрим как идет обработка в главном БП

http://prntscr.com/ocmaqq - Главный

http://prntscr.com/ocmaxg - 1 мин задержки

http://prntscr.com/ocmb6t - 2 мин задержки

http://prntscr.com/ocmbg8 - 3 мин задержки



Запускаем основной и смотрим диаграму:

http://prntscr.com/ocmc05

http://prntscr.com/ocmc9u

http://prntscr.com/ocmck4 - завершился (диаграма выполнения основного без изменения - http://prntscr.com/ocmcso)

http://prntscr.com/ocmda0

Нигрескул Алексей,

Обновил описание вопроса

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

Зверев Александр,

А где создавать это поле? И как сделать обработчик сигнала?

В каком-то объекте, подходящем по логике, с которым по смыслу связаны эти процессы. Обработчик — сигнал на изменение поля в объекте.

Зверев Александр,

То есть нужно в дочернем процессе сначала считать эту колонку селектом затем сделать update? НО если эти дочерние процессы завершаться секунда в секунду, то подсчет не будет верным. Как быть тогда?

Уменьшать и считывать старое значение можно в том же запросе.

Зверев Александр,

Гарантируется ли при использовании этого запроса правильный подсчет одновременно завершающихся подпроцессов?

Этот способ не является стандартным. Как такое делать штатно, описал выше для фиксированного числа процессов Алексей. Тут же все гарантии будет давать разработчик, то есть Вы. По идее, если всё в одном SQL-запросе, то мешать не будет.

Зверев Александр,

Зверев Александр пишет:Уменьшать и считывать старое значение можно в том же запросе.

Через такой запрос не генерится сигнал 

Действительно, в таком случае используйте не Update, а ESQ. Синхронизацию в этом случае нужно предусмотреть самостоятельно. Либо же менять при помощи Update, а в следующем шаге менять другое поле по ESQ или посылать сигнал иным образом.

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

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

Нравится

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

Добрый день,

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

Добрый день,

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

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

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

Нравится

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

Эмм... также как и тут создаём замещающий объект.

Только потом идём в родителя смотрим, где находится конкретный скрипт таск

Далее в процессе замещённого объекта справа ищем такой же лайн-сет и открываем скрипт-таск (дабл кликом), редактируем, сохраняем.

Варфоломеев Данила,

Попробовал, как Вы предлагаете. Но безуспешно. Система вовсе игнорирует изменения, сделанные из замещающего объекта. Даже код с синтаксическими ошибками успешно проходит публикацию. Хотя, изменения сохраняются. Что я делаю не так?

Бершеда Д. Н. пишет:

Хотя, изменения сохраняются. Что я делаю не так?

Согласен, я написал фигню) Изменить стандартные реализации скорее всего нельзя.

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