[Программирование] Факториал 100 через рекурсию процесса в Camunda

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
15-Мар-2021 05:31


Придумал тест для BPM системы. Ну или забаву для BPM системы. Почему бы не посчитать факториал числа 100 рекурсией процесса в BPM системе? Предполагаю, что это хороший тест ядра BPM системы, выдержит ли ядро 100 вложенных вызовов процесса. И вернет ли результат из самого нижнего 100-го подпроцесса обратно в 1-й родительский процесс. В Camunda это получилось. Из рекламного буклета Camunda: Разработан для обеспечения производительности: высокая пропускная способность, готовность к работе с кластерами и масштабируемость с очень легким (<3 МБ) механизмом выполнения моделей рабочих процессов BPMN. Да, до тестирования Camunda, попробовал рекурсию процессов в двух других системах, правда не совсем BPM. Под рукой были две CRM системы, в которых есть дизайнер процессов. В первой CRM/BPM системе нельзя вызвать в качестве подпроцесса этот же процесс, то есть рекурсия запрещена. Причем обмануть ограничение не удалось, создав две копии процесса, чтобы они друг друга вызывали. Система увидела, что в дизайне процесса из второго процесса вызывается снова первый, и выдала ошибку при попытке сохранить процесс. Во второй CRM/BPM системе рекурсия запустилась, и факториал от 10 удалось посчитать, а вот для чисел выше 10, система зависала, зависший процесс приходилось убивать. Итого, в Camunda в Modeler нарисовал процесс: 1. В начале процесса условием «Check Init» выполняется проверка, если параметры процесса еще не инициализированы, то выполняется инициализация. 2. Активность «Recursion Input» считывает входящие параметры. 3. Условием «Check End 1» проверяется количество рекурсий, если все рекурсии вызваны, то процесс завершается. 4. Активность «Call Self» собственно вызов самого себя, с передачей параметров в процесс, и получением параметров из процесса. 5. Условием «Check End 2» проверяется количество рекурсий, если все рекурсии вызваны, то создается задача, и выводится полученный из вызванного процесса результат. 6. Активность «Recursion Output» передает параметры из процесса. Повозиться пришлось с типом получаемых на входе параметров, пришлось вместо Text поменять на Script, иначе экспоненциальная форма числа не проходила.
Отработавший процесс:
Подводя итог: Camunda это круто! ))) PS: к сожалению, больше про Camunda писать не буду, переключился на другие темы.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_camunda, #_zabavno (забавно), #_programmirovanie (
Программирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 17-Май 11:44
Часовой пояс: UTC + 5