Почему вызов ThrowSignal(ProcessExecutingContext, String) бэкендовского апи срабатывает для всех инстанций процесса?
Есть бизнес-процесс, в нём добавлен элемент Wait for signal. Из бэкенда хочу триггерить этот элемент, чтобы процесс шёл дальшё. Делаю это так:
Process process = UserConnection.ProcessEngine.FindProcessByUId("12345", true); if (process != null) { UserConnection.ProcessEngine.ThrowSignal(process.InternalContext, "testSignal"); }
Код отрабатывает и процесс идёт дальше. Но проблема в том, что если запущено 2 или более процессов с этим ожиданием сигнала, то дальше пойдут все, а не только тот, что был найден через FindProcessByUId(). Почему так? Я же по конктреному processId нахожу процесс, и именно его передаю в параметры.
Была мысль, что может надо для каждой инстанции своё уникальное название для сигнала иметь. Тот же processId можно было бы положить, ну или что-то своё сгенерировать, но у элемента Wait for signal при выборе названия сигнала нельзя выбрать формулу\переменную процесса, только текстовое значение ввести. Это никак не обойти?
Нравится
Добрый день.
ThrowSignal триггерит все процессы - это ожидаемое поведение.
Существует 2 варианта решения вашей задачи:
1. В процессе вместо сигнала использовать ScriptTask \ UserTask, куда вы добавляете ту логику, что используете в бэкенде (по результату выполнения которой Вы хотите продолжить выполнение определенного бизнес процесса).
2. В процессе в элементе Wait for signal вместо Custom Signal использовать Record signal, который будет триггериться при изменении записи с конкретным Id
Artem Smyrnov, добрый день.
Мы как раз начали пытаться делать по второму варианту, добавили новое boolean поле на страницу объекта, в сигнале поставили триггер на изменения этого поля + значение в нём True. Далее в бекенде пробовали менять значение поля через Update на True - триггер не срабатывал. После этого стали вместо Update запускать бизнес-процесс, передавая ему в переменную айдишку нужного объекта. Процесс отрабатывает, значение переменной меняет, но сигнал не триггерится на это изменения. Не знаете, какие могут быть у этого причины?