Вопрос

Корректное завершение процесса из элемента ScriptTask

Добрый день!

На сколько я поняла, процессы (особенно запускаемые в кейсах) нельзя завершать путем выбрасывания исключения, т.к. падает весь родительский процесс и в итоге процесс и его дочерние процессы НЕ переходят в конечные состояния и остаются в состоянии Error.

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

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

В случае ошибки, нам бы хотелось перевести процесс в состояние Canceled, чтобы иметь статистику ошибок.

Подскажите пожалуйста есть ли корректный способ завершения процесса в случае выбрасывания исключений, чтобы он перешел в статус Canceled?

Нравится

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

Добрый день!

Попробуйте использовать return false; в скрипте.

Еще, как вариант, помечать как нибудь эти процессы (можно в другой таблице) и сделать периодический процесс, который будет отменять/завершать данные процессы

Как вариант добавить параметр процесса в скриптаске его менять и после скриптаска поставить элемент исключающее или с  условным потоком на выход (если условие в скриптаске установленно)

Или вызвать 

var proc = userConnection.ProcessEngine.FindProcessByUId(context.Process.InstanceUId);

 proc.CancelExecution();

Второй вариант нужно протестировать так как я никогда не завершал таким образом процесс из самого себя

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