Примеры моего кода, 2022 год.
Только для демонстрации, код частичный, к сборке не готов.
-
Подсистема отчетов
Настраиваемый и расширяемый движок для выдачи отчетов в XLSX, HTML и PDF из Excel-шаблонов на основе данных из БД (и не только). Для создания нового отчета нужно нарисовать новый шаблон в виде Excel-файла, и реализовать новый класс Fetcher'а для выборки данных. Верстка в PDF была написана с нуля, т.к. имеющиеся библиотеки были либо проприетарны, либо не предоставляли нужного функционала.См. также: Презентация к докладу на внутреннем митапе
-
"Умный поиск" на основе Elacticsearch
В разных местах веб-интерфейса пользователь имеет возможность ввести строку поиска, тут же в реальном времени ему выдается список результатов, динамически обновляющийся по мере ввода в строку поиска. Поиск ведется в соответствии с бизнес-контекстом формы, откуда ведется поиск. Обновление поисковых индексов ведется в режиме, приближенном к риалтайму. Триггерами БД заполняется таблица с очередью изменений, которая постоянно обрабатывается джобом инкрементальной индексации.См. также: Описание API для фронтэндеров
-
Функционал согласования изменений в объектах системы
Пользователь что-то изменяет в интерфейсе, при этом регистрируется запрос, который передается в смежную систему. Изменения согласовываются, либо отклоняются оператором (возможно с задержкой), после чего ответ возвращается обратно. Обмен происходит через Кафку. Далее, если решение положительное, изменения применяются к экземплярам сущностей. По каждому атрибуту решение может быть принято независимо от остальных. Запросы могут включать в себя иерархически связанные между собой сущности. Задача решалась максимально обобщенно, с тем чтобы в любой момент можно было расшириться на любые типы сущностей.См. также: Описание формата обмена для смежных разработчиков