Добрый день!
На сколько я поняла, процессы (особенно запускаемые в кейсах) нельзя завершать путем выбрасывания исключения, т.к. падает весь родительский процесс и в итоге процесс и его дочерние процессы НЕ переходят в конечные состояния и остаются в состоянии Error.
К сожалению, сейчас мы продолжаем использовать механизм генерации исключений, чтобы не потерять факт наличия ошибки и получить ее описание.
Таких процессов у нас много, НО мы хотим избавится от передачи исключений в родительские процессы.
В случае ошибки, нам бы хотелось перевести процесс в состояние Canceled, чтобы иметь статистику ошибок.
Подскажите пожалуйста есть ли корректный способ завершения процесса в случае выбрасывания исключений, чтобы он перешел в статус Canceled?
Нравится
Добрый день!
Попробуйте использовать return false; в скрипте.
Еще, как вариант, помечать как нибудь эти процессы (можно в другой таблице) и сделать периодический процесс, который будет отменять/завершать данные процессы
Как вариант добавить параметр процесса в скриптаске его менять и после скриптаска поставить элемент исключающее или с условным потоком на выход (если условие в скриптаске установленно)
Или вызвать
var proc = userConnection.ProcessEngine.FindProcessByUId(context.Process.InstanceUId);
proc.CancelExecution();
Второй вариант нужно протестировать так как я никогда не завершал таким образом процесс из самого себя