Вопрос

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

У меня такой же вопрос

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

Добрый день!
Данная фильтрация наложена на странице ActivityMiniPage.
При необходимости можно заместить эту страницу

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

Если Вы спрашиваете о категориях, которые относятся к другому типу активности, то в данном случае Вам нужно вносить изменения в методы элемента процесса 'Выполнить задачу', которые реализованы в ActivityUserTaskPropertiesPage в базовом пакете ProcessDesigner в конфигурации bpm'оnline.

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

Здравствуйте!
Возможно ли реализовать использование методов расширения в элементе БП формула.
Столкнулся с таким случаем нужно определить вхождение текущего времени в диапазон.
Написал метод расширения:

namespace Terrasoft.Configuration
{
    public static class AbDateTimeExtensions
    {
        public static bool IsInRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate)
        {
            return dateToCheck.TimeOfDay >= startDate.TimeOfDay && dateToCheck.TimeOfDay < endDate.TimeOfDay;
        }
    }
}

 Но при использовании его в формуле выводит ошибку - http://prntscr.com/mwbc1w

Обсуждение
7 комментариев

В старом  дизайнере процессов можно было в формуле просто вызвать функцию, написанную на C# в том же БП. Сейчас так нельзя. В Вашем случае для такого вычисления вместо блока-формулы можно использовать блок-скрипт, где считать значения из параметров и вызвать функцию, а результат записать в ещё один параметр.

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

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

Хорошая идея. Давайте её залайкаем и, возможно, когда-нибудь эта возможность в bpm'online появится wink

Пащенко Александр Сергеевич, без компиляции бы в любом случае не обошлось. В старом движке процессов компилировать нужно было всегда, а в новом — только если есть элементы на C#.

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

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

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

Алла Савельева,

А смысл? Проще делать хэлперы (схема исходного кода) и их использовать в скриптасках. Для чегото более навороченного можно сделать свои действия процесса.

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

Всем привет.

Кто-нибудь знает как можно получить 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'

 

Войдите или зарегистрируйтесь, чтобы комментировать
Идея

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

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

Обсуждение
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 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать