Русский
Русский
English
Статистика
Реклама

Факториал 100 через рекурсию процесса в Camunda

Придумал тест для 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
К списку статей
Опубликовано: 15.03.2021 04:23:51
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Программирование

Camunda

Забавно

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru