[Программирование] Факториал 100 через рекурсию процесса в Camunda
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Придумал тест для 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
===========
Похожие новости:
- [Разработка веб-сайтов, Программирование, HTML, Лайфхаки для гиков] 5 HTML-трюков, о которых никто не говорит (перевод)
- [Разработка веб-сайтов, JavaScript, Программирование, Проектирование и рефакторинг, ReactJS] Фреймворк-независимое браузерное SPA (перевод)
- [Программирование, .NET, Алгоритмы, C#, Математика] Compilation of math functions into Linq.Expression
- [Отладка, Программирование микроконтроллеров, Прототипирование] Arduino + max30102 + ЦОС = SpO2
- [Разработка веб-сайтов, PHP, Программирование, Учебный процесс в IT, Карьера в IT-индустрии] Курсы PHP-программирования в Минске. Куда пойти учиться?
- [Программирование, Управление разработкой] Несеребряные пули или кратко про методы софтостроения
- [Программирование, Java, Венчурные инвестиции, Читальный зал, Финансы в IT] Мой маржин-кол: как теряют деньги на бирже
- [Веб-дизайн, Разработка веб-сайтов, CSS, Программирование] Погружаемся в логические свойства CSS (перевод)
- [Программирование, Учебный процесс в IT, Карьера в IT-индустрии, Научно-популярное] Почему я перестал читать статьи «Как стать разработчиком» (перевод)
- [Программирование, C++, C, Разработка под Linux] Неблокирующие паттерны: атомарные операции и частичные барьеры памяти (перевод)
Теги для поиска: #_programmirovanie (Программирование), #_camunda, #_zabavno (забавно), #_programmirovanie (
Программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 21:41
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Придумал тест для 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 =========== Похожие новости:
Программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 21:41
Часовой пояс: UTC + 5