Минорный патч 4.15.2
Главное в версии
- Добавлена поддержка динамических библиотек шаблонов, которые могут хранится в директории репозитория и подгружаться при старте инстанса Getl. Классы подгружаемых библиотек шаблонов могут использоваться для вызова в шагах workflow, в скриптах шагов workflow и выражениях маппинга моделей.
- Реализована поддержка автоматизации работы с master-detail данными, где источник содержит в себе поля, внутри которых подчиненные структуры с данными. В etl.copy можно описать дочерние датасеты, указав им поле источника, с которого они будут получать данные. Для поддержки master-detail для пользовательских шаблонов расширены модели setOfTables и MapTables, чтобы можно было таблицам модели задавать их родительский датасет источник.
P.S. Изменения вошли в платформу визуальной разработки процессов управления данными EasyPortal для версии 1.47.
Dsl фичи
- main: в язык выражений Getl добавлены функции parseProperties и text2List.
- etl: в методы copy, rowsTo и rowsAllTo добавлены события onBeforeWrite и onAfterWrite.
- models: в модели setOfTables и mapTables для таблиц модели добавлены свойства parentDataset и parentLinkFieldName, с помощью которых можно указать, что датасет является подчиненным для другой таблицы модели и берет данные с поля главного датасета.
- etl: в операторе copyRows теперь можно указать маппинг записи полей из источника в приёмник для дочерних датасетов childs, если у них указан источник в linkSource. Поддерживаются все возможности маппинга, такие как автоконвертация типов, автосвязывание по именам, виртуальные поля и язык выражений.
- main: в пути к локальным файлам теперь можно указывать служебную переменную {#REPOSITORY}, в которую будет подставляться путь до репозитория объектов Getl, если он задан.
- models: в пользовательском коде workflow теперь можно напрямую обращаться к шагам и скриптам с помощью встроенных функций step('ИмяШага') и script('ИмяСкрипта').
- repository: в файле конфигурации репозитория в разделе repository в свойстве libs теперь можно задать имя каталога репозитория, в котором лежат пользовательские библиотеки шаблонов. Классы подгружаемых библиотек шаблонов могут использоваться в задачах workflow и маппинге моделей etl процессов. Для подключаемой библиотеки шаблонов можно определить классы, которые должны быть загружены в память в момент старта приложения. Для этого их нужно перечислить в свойстве init_classes=['ИмяКласса1', 'ИмяКласса2', ...] в ресурсном файле getl-library.conf для jar.
- Добавлен метод InitServiceAdd, с помощью которого пользовательская библиотека шаблонов может подписаться в разделе инициализации static на начало работы Getl инстанса и провести свою инициализацию.
Getl фичи
- getl.vertica.VerticaTable: в createOpts добавлено свойство checkPrimaryKey, при включении которого в создаваемой таблице для первичного ключа будет включена проверка целостности констрейнта.
- getl.utils.FileUtils: в функцию CompressToZip добавлен новый параметр архивирования rootDir, в котором можно задать директорию в архиве, в которую будут записываться файлы источника. Если директория не задана, то файлы архивируются в корневую директорию.
- getl.utils.GenerationUtils: если в функции генерации кода скрипта EvalGroovyScript не задан лоадер классов, то используется лоадер классов репозитория инстанса Getl, чтобы генерируемый код видел все подключенные с репозитория библиотеки.
Getl баги
- getl.csv.CSVDriver: при чтении записей eachRow могли не наследоваться параметры форматирования типов данных от соединения, когда они не были указаны в датасете.
- getl.files.Manager: возникала ошибка, если в сортировке списка получаемых файлов были поля с префиксами ASC или DESC.
- getl.jdbc.JDBCDriver: возникала ошибка, если в создаваемых для таблиц индексов были поля с префиксами ASC или DESC.
- getl.utils.NumericUtils: функция BuildDecimalFormatSymbols генерила не правильный формат чисел, если задавался десятичный разделитель без группового, где новый десятичный разделитель совпадал с групповым разделителем по умолчанию. В итоге числа парсились как целые, без десятичной части.
- getl.utils.WebUtils: метод PingHost игнорировал параметр timeout и сразу генерировал ошибку, если хост неизвестен.
- getl.lang.sub.GetlRepository: не у всех объектов с этим интерфейсом был реализован метод clone.
- getl.jdbc.JDBCDriver: при импорте полей с файловых источников в JDBC датасеты не очищались алиасы полей, которые описывают в файловых датасетах путь получения значения файла.
- getl.jdbc.SQLScripter: не определялся оператор ECHO, если в нем была только макропеременная без текста.