Здравствуйте, коллеги
подскажите, пожалуйста, как в БП можно сделать условием агрегирующий фильтр, например, такой:
В принципе, спасла бы возможность добавлнения такого фильтра в старт процесса, но такой возможности нет, к большому сожалению..
Нравится
В каком смысле? Я так понимаю на скрине как раз то, что Вам нужно: БП запустится только для того объекта, который будет соответствовать всем условиям, который вы добавили в фильтр.
Условием запуска процесса является перевод инцидента в состояние "разрешен". А уже дальше мне нужно разветвить процесс по условию есть ли незакрытые активности по инциденту или нет. Если есть, то вернуть инцидент в состояние в работе. Пытался делать это через промежуточные обрабатывающие события, и исключающее или по операциям, но никаких событий после старта процесса не случается, поэтому он и не движется дальше..
и да, на скриншоте карточка промежуточного события а не старта процесса.
По Вашей задаче, мне кажется следует использовать элемент чтение данных (для выяснения есть ли незакрытые активности) и элемент запись данных для возврата инцидента в работу.
пс: "сигналы" работают только в рамках одного процесса, "сообщения" - между процессами.
Вам просто нужно создать параметр ActivityRecordsCount с типом "Целое число", и после элемента "чтение данных", в котором вы находите количество записей из раздела активности по определенным фильтрам, добавить элемент "Скрипт", в котором заполнить этот параметр:
ActivityRecordsCount = ReadDataUserTask1.NumberOfRecords; return true;
"где ReadDataUserTask1 - имя элемента "чтение данных".
Затем добавить "исключающее или", и два условных потока с условиями ActivityRecordsCount > 0 и ActivityRecordsCount == 0.
Вот скрины составленного мной тестового процесса:
"чтение данных"
диаграмма процесса
К сожалению ветка ActivityRecordsCount == 0 не работает, вылезает ошибка о том что колонка Id не определена.. Попытка заменить еще условным потоком по-умолчанию дает тот же результат. =(
Подозреваю, что проблема в агрегирующем фильтре
в итоге у меня получилось таким образом (вдруг кому-нибудь пригодится):
условные потоки соответственно:
ReadDataUserTask1.ResultCount == 0 и ReadDataUserTask1.ResultCount > 0