Сегодня я хочу выложить в открытый доступ свою библиотеку на Scala. Библиотека реализует Directed Acyclic Graph (DAG) для выполнения задач внутри одного приложения (на замену Airflow и подобных не претендую :-)) и позволяет определять задачи с зависимостями, выполнять их в правильном порядке и обрабатывать исключения, которые могут возникнуть в процессе выполнения. Библиотека писалась через призму моих личных и профессиональных потребностей, поэтому не претендует на покрытие всех возможных кейсов, встречающихся в разработке вообще.
Use case:
Иногда возникает необходимость выполнять взаимосвязанные задачи/функции/классы в рамках одного приложения, где эти задачи могут быть частично параллелизованы, то есть их можно "собрать" в DAG для более эффективного использования ресурсов и повышения общей производительности. Например при обрабтке/загрузке данных или в event-driven приложении.
Особенности:
Управление задачами: Добавление задач с указанными зависимостями.
Гибкость: Выполенение всех или только некоторых задач (с сохранением зависимостей)
Обработка ошибок: Встроенная обработка ошибок с передачей исключений "наверх" для упрощенного их анализа.
Результаты выполнения задач: Возможность получения результата выполнения задач для дальнейшего их использования программным кодом.
Код, документация и инструкция по импорту и использованию доступны на GitHub.
Буду рад любым отзывам и предложениям по улучшению. Также не стесняйтесь задавать вопросы и заводить issue :-)