Минорный патч 4.14.9
Кратко о версии
- Расширена функциональность шаблонов Workflow в EasyPortal в скрипты моделей добавлена поддержка языка событий, который позволяет описывать события для всего шаблона или таблиц модели, с которой он работает.
- Расширена функциональность захвата данных для построения эталонных моделей данных Vertica. Теперь можно указать из трех типов захвата данных: ETL (простое копирование), BULK (пакетное копирование через создание промежуточных CSV файлов) и EXPORT (копирование данных между кластерами Vertica с помощью оператора EXPORT TO VERTICA).
- Исправлены ошибки при работе с файловыми процессами и веб сервисами.
Пример описания событий в секции инициализации в workflow в шаге STEP 1 для его скрипта SCRIPT 1 шаблона CopyToTables:
events('SCRIPT 1') {
event('before') { sourceName -> println "Инициализация вызывается для каждой таблицы модели" }
event('after') { sourceName -> println "Финализация вызывается для каждой таблицы модели" }
event('table1', 'process_row') { scriptName, sourceRow, destRow -> println 'Обработка каждой записи для таблицы table1 в модели скрипта' }
}Dsl фичи
- models: в скриптах шагов моделей Workflow теперь можно задавать события для скриптов в формате: events('ИмяСкрипта') { event('Событие') { ... }; event('Таблица модели', 'Событие') { ... } }. При разработке шаблонов теперь в скриптах Getl доступно свойство scriptEvents, в котором будут содержаться все заданные в workflow события для этого скрипта.
- models: в моделях эталонных данных ReferenceVerticaTables теперь можно указывать, каким способом скопировать эталонные данные с источника Vertica (ETL, BULKLOAD или EXPORT) и нужно ли использовать пакетную загрузку (bulkLoad), если исходные данные забираются не с Vertica источника.
- etl: в etl процессы записи данных добавлен параметр bulkNullAsValue, в котором можно задать, как кодировать null значения, если используется пакетная загрузка данных в приёмник.
Dsl баги
- fileman: в файловых процессах могла возникнуть ошибка NullPointerException при логировании работы, если процесс запускался без указания владельца процесса.
Getl фичи
- getl.h2.H2Table: пакетная загрузка файлов теперь поддерживает опцию nullAsValue.
- getl.utils.SynchromuzeObject: в обьект синхронизации добавлены методы сравнения хранимого числа для поиска минимального или максимального значения (compareMin и compareMax). В свойстве compare можно получить результат.
- getl.proc.Flow: в copy при указании маппинга добавлена возможность указать для полей приёмника числовые и текстовые константы. Текстовые константы должны указываться в одинарных кавычках. Если внутри текста есть одинарные кавычки, их следует указывать как \'. Значение констант нужно указывать согласно типу полей приёмника, которым они присваиваются, чтобы не было ошибки приведения типа. Для полей других типов константы можно задавать через выражения, например дату можно указать как ${DateUtils.ParseDate('2021-12-31')}.
Getl баги
- getl.data.WebServiceDataset: при расчете значений переменных для веб сервис датасетов приоритетными были переменные из webVars, которые перекрывали общие атрибуты датасета. Это приводило к тому, что использование таких датасетов из workflow моделей и шаблонов не наследовало значения атрибутов. Теперь атрибуты датасета являются приоритетнее и перекрывают переменные веб-сервисов, если есть совпадение по имени переменной.
- getl.files.Manager: при записи файла истории ему задавалось имя с расширением sql вместо txt.
- getl.files.ResourceManager: менеджер ресурсных файлов не корректно работал с ресурсами jar файла, если он располагался по пути, в котором присутствовали пробелы.
- getl.json.JSONDataset: при записи полей, значения которых содержат русский или другой национальный язык, в файл писались escape последовательности \u.
- getl.vertica.ReverseEngineering: возникала ошибка при реверсе структуры БД, если имена объектов БД Vertica содержали одинарные кавычки, не разрешенные в использовании в файловых системах символы или переводы строк.
- getl.vertica.VerticaDriver: при подготовке временного CSV файла для пакетной загрузки bulk load при указании nullAsValue возникала ошибка, так как Vertica поддерживает загрузку с указанием значений NULL только при включенном escaped у CSV файлов. Теперь драйвер автоматически выключает escaped, если видит указанный nullAsValue.