Формулировка проблемы: на данный момент, если в маршруте имеется этап с несколькими подэтапами, для перехода к следующему этапу необходимо, чтобы все параллельные подэтапы завершились. Однако, часто возникает ситуация, что для продолжения маршрута достаточно, что завершился хотя бы один из параллельных подэтапов (пример - параллельное согласование заявки с несколькими сотрудниками одного ранга: достаточно, чтобы хотя бы один одобрил прохождение).
Решение: необходимо реализовать опцию этапа маршрута «Прервать выполнение параллельных этапов после завершения одного из них». Так как на данный момент в редакторе маршрутов нельзя выделить параллельный этап (с несколькими подэтапами) целиком (и как-либо настроить его как атомарный объект), то необходимо добавить новую опцию в настройки каждого процесса после поля «Код»:
Эта опция действует для всех подэтапов маршрута, которые параллельны друг другу - таким образом, если её включить в одном параллельном подэтапе, то она включится и в остальных. Для одиночных (не содержащих параллельные) этапов настройка отображается и её можно включить, но это не окажет на них никакого влияния.
Для этапа, в котором включена опция «Прервать выполнение параллельных этапов после завершения одного из них», определяется такое поведение:
При завершении (успешном либо неуспешном) любого входящего в этап параллельных подэтапов остальные подэтапы удаляются;
Если завершённый подэтап завершился успешно, маршрут переходит к следующему этапу, в противном случае - останавливается;
Удаление параллельного подэтапа не тождественно его завершению и не влечет за собой удаление параллельных ему подэтапов.
Примечание:
В системе имеются процессы, которые завершаются практически сразу после запуска - например, отправка документа, специальные процессы и т.п. Таким образом, если подобные процессы будут входить в какой-либо этап параллельно с другими, и опция «Прервать выполнение параллельных этапов после завершения одного из них» будет активна, то остальные подэтапы не проживут долго и будут практически сразу завершены. Описанная ситуация - ошибка конфигурирования Synergy, и не является ошибкой платформы.