#concurrency #activiti
#параллелизм #activiti
Вопрос:
Ну, в значительной степени, как указано в названии вопроса.
Как я могу гарантировать, что в Activiti я не создам 1000 одновременных подпроцессов из моего контейнера подпроцессов?
Я хотел бы разрешить выполнение только, скажем, 10 подпроцессов, пока все они не будут обработаны.
Ответ №1:
Возможно, я не совсем понял ваш вопрос — было бы легче понять, если бы вы определили, для чего вам это нужно.
Это не должно быть проблемой, потому что Activiti использует только один процесс, запускаемый потоком
Но если вам это нужно, вы можете создать цикл «для» (используя задачу сценария, эксклюзивный шлюз и параллельный шлюз), чтобы создать ровно десять исполнений (что-то вроде activiti thread), а затем переработать их, когда они закончат свою работу.
Надеюсь, это поможет
Комментарии:
1. Тогда для чего используется поле Sequential при определении нескольких экземпляров? Если я установлю для Sequential значение false, я предполагаю, что несколько подпроцессов будут выполняться параллельно. Я хочу ограничить количество этих параллельных вспомогательных процессов (например, не более 10 параллельных процессов)… Я ошибаюсь в том, как должны работать несколько экземпляров …?
2. @Stratosgear «Я ошибаюсь в том, как должны работать несколько экземпляров …?» Параллелизм в activiti — это долгосрочный параллелизм, и он не создаст новых потоков обработки (всегда есть только один поток). Например, причина для создания нескольких экземпляров: когда вы хотите, чтобы пользователи завершили регистрацию, вы хотите, чтобы они все могли ее завершить. Если бы это было последовательно, только один мог бы выполнить пользовательскую задачу, и когда он это делает, пользовательская задача открывается для другого пользователя и так далее. Я не уверен, что я описываю понятно — дайте мне знать;]