Всем привет.

Кто-нибудь знает как можно получить Id экземпляра запущенного процесса в самом БП процессе?

Хочу хранить его в гуидной колонке для последующего использования в ProcessModuleUtilities.continue() для продолжения работы по процессу.

Заранее спасибо за ваши ответы.

Нравится

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

Читайте context.Process.InstanceUId.

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

Спасибо за ответ.

Уже решил проблему через Get<Guid>("UId"); в задании сценарии. Ваш вариант тоже попробую на досуге.

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

Вопрос:

Для условного потока элемента «Выполнить задачу» в конструкторе бизнес-процессов, доступен следующий вариант результатов условного потока (см. рисунок), данное отображение работало до версии 7.8 для нашего пользовательского элемента «Действие процесса» разработанного на основе элемента «Выполнить задачу», можно ли как-нибудь сделать такое же отображение для текущей версии BPM?

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

Ответ:

Для того, чтобы реализовать функционал на подобии элемента "Выполнить задачу" для пользовательского элемента, рекомендуется ознакомиться с реализацией в исходном коде элемента "ActivityUserTask" (метод GetResultParameterAllValues).

Нравится

Поделиться

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

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

Нравится

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

Имеет ли данные элемент влияние какое-то на работу процесса?

- нет

Будет ли разница работы процесса с этим элементом и без него?

- нет (ну несчитая доп записи в БД)

И Если в нескольких процессах, которые запускают один другого, проставить "Привязать процесс к объекту" то повлияет ли это на производительность или на что-то еще?

- влияние на производительность практически не заметна, зато может существенно помочь при разрешении проблем в работе БП

Добрый день. Это полезный элемент для анализа журнала. Позволяет понять по какой записи был запущен процесс или какие использовал во время своей работы. Работает следующим образом: Указываете схему и ID записи в элементе "Привязать процесс к объекту". Далее в карточке лога журнала процесса можно увидеть запись на детали "Связанные объекты".

Пащенко Александр Сергеевич,

Спасибо за цитирование академии, но вопрос бы другой

Имеет ли данные элемент влияние какое-то на работу процесса?

- нет

Будет ли разница работы процесса с этим элементом и без него?

- нет (ну несчитая доп записи в БД)

И Если в нескольких процессах, которые запускают один другого, проставить "Привязать процесс к объекту" то повлияет ли это на производительность или на что-то еще?

- влияние на производительность практически не заметна, зато может существенно помочь при разрешении проблем в работе БП

Григорий Чех,

Спасибо большое за разъяснения, теперь понятно

А можно как-то найти все процессы, связанные с конкретным объектом?

Можно поискать по исходному коду схем процессов упоминания этого объекта.

Владимир Соколов,

Можно, например зная id объекта можно выбрать все БПшки привязанные к нему как то так 

SELECT  * FROM SysProcessEntity s
  LEFT JOIN SysProcessData ssd ON ssd.id=s.SysProcessId
  LEFT JOIN SysSchema ss ON ss.id=ssd.SysSchemaId
  WHERE s.EntityId='b34351c0-04b9-4786-8458-06ee55fc92c9'

 

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

Вопрос:

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

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

Ответ:

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

- BusinessProcess.log - логирование работы процессов в системе.

- Error.log  - логирование ошибок, которые возникали в работе системы.

- Application.log  - логирование работы самого приложения (перезапуск или компиляция системы).



В записях таблиц SysProcessLog и SysProcessElementLog можно увидеть, выполнился ли процесс/элемент соответственно. В таблице SysProcessElementLog обратите внимание на колонку ErrorDescription, в которой хранится информация об ошибках, возникших в ходе выполнения элементов.



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

Нравится

Поделиться

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

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

Просьба рассмотреть реализацию следующего функционала:

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

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

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



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

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

Вы можете:

- переделать логику процесса, изменив выполнение второго процесса не по сигналу а по ручному запуску, и вызывать процесс как подпроцесс в первом. При этом создавать параметры процессов и передавать информацию через них.

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

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

Коллеги всем доброго времени суток! Столкнулся со следующей проблемой, у нас CRM интегрируется со сторонней системой в БД которой Id представлены как long.

Реализовали БП  создания заказа из звонка. На уровне объекта Order перед сохранение уходит запрос во внешнюю систему тянет последний id в БД, полученный ответ инкрементируем  на 1 и переводим в GUID получаем "00000000-0000-0000-0000-000000000001";  полученный Id подставляем PrimaryColumnValue

http://prntscr.com/m7t797

 

var origin = HttpContext.Current.Request.Headers["Origin"];
IntegrationAutobookingClient client = new IntegrationAutobookingClient(UserConnection);
if (!string.IsNullOrEmpty(origin))
{
	var lastOrerIdInPlatform = client.GetRequest("/v1/orders/last_id");
	var abOrderId = Convert.ToInt64(lastOrerIdInPlatform);
	var newOrderId = abOrderId + 1;
	var bpmOrderId = client.ChangeId(newOrderId);
	Entity.PrimaryColumnValue = bpmOrderId;
}
return true;

Далее идет обработчик после сохранения записи, уходит запрос во внешнюю систему создания Заказа.

Открытие карточки редактирования заказа осуществляется через БП - http://prntscr.com/m7t97l

При сохранении заказ создается, но карточка(эл-т процесса) остается не выполненным - http://prntscr.com/m7taim и дальше по процессу не идет

В консоли наблюдаю следующее - http://prntscr.com/m7tb5u

Подскажите как с этим бороться? Подозреваю что дело в изменении PK.

Нравится

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

Видимо, элемент открытия карточки новой записи в БП уже подразумевает какой-то сгенерированный Id, который затем во встроенном БП объекта на Inserting заменяется нужным, что и приводит к некорректной работе.

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

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

Вопрос:

Шаги воспроизведения:

1. Для редактирования прав доступа к страницам продуктов был создан бизнес-процесс "Забрать права на редактирование товара"

2. Процесс был и сохранен и запущен, но указанные в бизнес-процессе сотрудники, которым было запрещено редактирование продуктов, все равно имеют право на внесение изменений на странице товара.

Ответ:

Описанное поведение системы связано с тем, что на продукты выдано право роли "All employes", в которую входят все пользователи системы. Если сотрудник входит в роль, у которой есть права на запись, то пока у роли будут права, у сотрудника так же будут права.

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

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

https://academy.terrasoft.ru/documents/base/7-12/prava-dostupa

https://academy.terrasoft.ru/documents/administration/7-12/razdel-upravleniya-rolyami-i-polzovatelyami

Для исправления данного процесса необходимо добавить логику забирания прав на изменение/удаление у роли "Все сотрудники". Только после этого, пользователи, указанные в процессе, не будут иметь право изменить страницы товаров.

Нравится

Поделиться

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

Вопрос:

Описываю кейс.

  1. Есть первый БП, который запускается по событию «Стартовый таймер». Внутри этого БП есть элемент Изменить данные, который меняет одно из полей в записях, которые попадают под определенное условие.
  2. Есть второй БП, который запускается по событию Получен сигнал от объекта – Изменение записи. Он должен срабатывать, если первый БП поменял поле.
  3. Однако второй БП не запускается, если поле поменялось в первом БП по таймеру. В случае если первый БП запустить по событию «Простое», то второй БП отрабатывает.

Скажите в чем может быть ошибка и как правильно генерировать сигнал для запуска второго БП?

Ответ:

Для достижения данной бизнес цели Вы можете использовать подпроцессы. 

Например, 

Первый процесс

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

 

Второй процесс, необходимо будет добавить параметр в процесс

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

 

После этого использовать параметр в элементе "изменить данные"

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

 

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

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

 

Нравится

Поделиться

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

Вопрос:

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

Ответ:

К сожалению, на данный момент мобильное приложение не поддерживает функционал работы с пользовательскими элементами в бизнес-процессах. Отображать страницы "Автогенерируемая" "Открыть страницу редактирования", "Выполнить задачу" к сожалению, возможно только в браузере. Остальная логика (стартовые сигналы, задание-сценарий и т.д) будет отрабатываться на стороне сервера. Например, при создании записи.

Нравится

Поделиться

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

Вопрос:

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

Ответ:

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



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

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

 

После этого, Вы сможете указать этот параметр в шаблоне.

Нравится

Поделиться

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

Добрый день! 

Подскажите, какой url-адрес мы берем?

Тот, где хранится адрес сайта.

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