1. Создание шаблона Excel с помощью JXLS 2. Отдалённый сервис предоставляет источник данных 3. Промежуточный слой соединяет шаблон Excel и отдалённые данные Основная идея архитектуры: разделение шаблона Excel и источника данных для повышения гибкости и расширяемости. Ключевые технологии: 1. По данным конфигурации в базе данных (из таблицы `template_dataobject_library`) создаются объекты во время выполнения. 2. Из JSON-строки ответа берутся данные по ключам, указанным в конфигурации (из поля `data_response_key` таблицы `template_dataobject_catalog`). 3. Ключи данных в шаблоне Excel определяются конфигурацией в базе данных (поле `data_key` таблицы `template_dataobject_catalog`). 4. Адрес запроса к удалённому источнику данных определяется конфигурацией в базе данных (поле `remote_request_url` таблицы `template_dataobject_catalog`). 5. Используется версия `commons-jexl` 3.1 из `org.apache.commons:commons-jexl3:3.1`, которая требует изменения подхода к установке функций. 6. Услуги предоставляются как модульные компоненты, обеспечивающие высокую степень декомпозиции и расширяемости. Структура базы данных:Таблица: template_dataobject_catalog (конфигурация запроса шаблона) serialno -- уникальный номер template_id -- ID шаблона data_key -- ключ данных объекта в шаблоне Excel для заполнения данными data_response_key -- ключ списка данных в ответе от удаленного источника transfer_type -- тип преобразования данных: Bean; Map (в настоящее время реализован только Bean, создается динамически во время выполнения) remote_request_url -- адрес запроса к удаленному источнику данных remote_request_type -- тип запроса: GET, POST (в настоящее время реализован только POST) create_time -- время создания записи update_time -- время последнего обновления записиТаблица: template_dataobject_library serialno -- уникальный номер template_id -- ID шаблона data_type -- тип данных: запрос; ответ colKey -- имя колонки colKeyName -- описание колонки keyClassType -- полное имя типа класса sort -- порядок сортировки (основан на входных данных, когда data_type равен request) create_time -- время создания записи update_time -- время последнего обновления записи