Продолжение использования сайта пользователем интерпретируется как согласие на обработку фрагментов персональных данных (таких, как cookies) для целей корректной работы сайта.
Выпущен релиз Live Universal Interface 2.0.9
10.07.2022
Настройка функций группировки данных
Ранее в приложениях, разработанных в LUI, при создании группировки данных списка можно было использовать весьма ограниченный набор статистических групповых функций. Этот набор расширен. Добавлены MIN, MAX, STDDEV (стандартное отклонение), VAR (дисперсия), COV (ковариация), COR(коэффициент корреляции).

Администратор может самостоятельно настроить требуемые иные функции в меню LUI.

Кроме того пользователи теперь могут задать собственные выражения для показателей группировки данных.
Диаграммы в виде поверхностей
Теперь конечный пользователь и пользователь-разработчик могут создавать в своих приложениях 3D-графики в виде поверхностей.
Это расширяет область применения LUI. Особенно, для научных приложений.
Дополнительная проекция для 3D-графиков
Теперь для 3D-графиков можно установить не только перспективную проекцию, но и ортогональную.

Ортогональная проекция полезна тем, что если точку зрения расположить вертикально сверху по оси Z, то график преобразовывается в тепловую карту.
Отображение длинных текстов в многострочных ячейках списка
Начиная с версии 2.0.9 среди свойств формы типа "список" появились два новых.

Первое определяет правило разбиения строк в ячейках списка. Возможны три значения:
  • Без разбиения – по умолчанию (т.е. тексты усекаются и отображаются одной строкой)
  • С разбиением по "переводам строк" (т.е. по символам "новая строка" - \n)
  • C разбиением по пробелам (т.е. по словам в зависимости от ширины ячейки и наличия пробела между словами)
Второе свойство определяет максимальное возможное количество строк текста в ячейках списка. По умолчанию = 5.

При разработке списка разработчик должен указывать значения этих свойств исходя из того, каковы наиболее вероятные значения данных, которые будет отображать список.

Конечный пользователь может изменить правило разбиения и максимальное количество строк.
Расширение функций нагрузочного тестирования и поиска "узких мест"
Теперь помимо журнала событий, которые регистрируются системой в режиме отладки, появилась возможность сбора и накопления метрик о работе одного или нескольких сеансов пользователей одного или нескольких приложений. Метрики:

  • Количество обращений
  • Общее время обработки обращений
  • Минимальное время обработки обращений
  • Максимальное время обработки обращений
  • Дата и время первого обращения
  • Дата и время последнего обращения
  • Среднее время обработки обращений

В ходе нагрузочных тестов эти метрики могут аккумулироваться по следующим размерностям:

  • Код приложения
  • № сеанса от момента старта сервера приложений LUI
  • ID сеанса
  • Код формы
  • Шаблон формы
  • Тип формы
  • Код элемента формы
  • Шаблон элемента формы
  • Тип элемента формы (действие, поле, пункт меню,…)
  • Код свойства формы или элемента
  • Операция (Загрузка формы, выполнение основного запроса, извлечение данных, событие инициированное пользователем в браузере)
  • Язык (SQL, PL/pgSQL, JS, …)
  • Код соединения с БД

Для сбора статистики следует зарегистрировать коллектор в пункте меню "Статистика LUI". Начать процесс сбора статистики можно как до, так и после начала сеансов, по которым будут собираться метрики.

Два года назад для версии 2.0.5 был разработан модуль автоматизации нагрузочного тестирования. Он позволяет записать типовые сценарии работы пользователей приложений и запустить их выполнение одновременно в нескольких десятках или даже сотнях сеансов. Теперь до, или вовремя выполнения этих сценариев можно включать сбор метрик и получать объективную картину состояния и динамики системы в ситуации максимально приближённой к реальной эксплуатации.

В ходе выполнения процесса сбора можно наблюдать изменения значений метрик в табличной форме, в виде списка с группировкой метрик по требуемым размерностям. Из сгруппированного списка можно сформировать различные графики как для наблюдения в режиме реального времени, так и для анализа после завершения процесса сбора с целью выявления "узких мест" в приложениях. Так, например можно легко определить форму, её элемент, в котором разработчик написал наиболее ресурсоёмкий или долго работающий код. А также, такие важные характеристики приложения и его отдельных форм, как среднее время отклика на действие пользователя, частота обращений к тем или иным функциям. Это позволяет точно определить, по каким направлениям следует выполнять оптимизацию прикладной системы.

Подключаемые модули на уровне браузера
В версии 2.0.9 стало возможным подключение собственных программных модулей уровня браузера. Ранее такое было возможно на уровнях БД и сервера приложений LUI. Теперь плагин разработчика написанный на JavaScript может выполняться браузером. Помимо JavaScript-кода плагин может использовать собственные нужные CSS-объекты и формы html. Для реализации этого вводится новый тип модуля – WEB-модуль.
Интеграция с CryptoPro для реализации простой цифровой подписи
В состав версии включен WEB-модуль CPRO электронной цифровой подписи. В нём есть два элемента. Первый (CADESPLUGIN_API) – программа на JavaScript от компании КриптоПро. Она реализует базовый API браузера с программой "крипто-провайдер", которая должна быть установлена на компьютере пользователя. Второй (LUI_CPRO_JS) – программа на JavaScript, написанная нами. Она с одной стороны взаимодействует с CADESPLUGIN_API, а с другой стороны с LUI-сервером через JAVA-плагин EDSCPRO. Полный текст JAVA-плагина помещён в качестве примера в поле "примечание" элемента LUI_CPRO_JS.

Помимо WEB-модуля в данную версию включены две формы для тестирования. Они, как и WEB-модуль расположены в группе LUI_COMMON приложения LUI. Их можно запустить из редактора форм. Первая тестовая форма подписывает данные введённые в поле вручную. Вторая – загруженные из файла.
Новый экспериментальный интерпретатор JavaScript
Для написания высокопроизводительных программ на JavaScript в LUI добавлен плагин V8JS.

Вызовы для вычислений и выполнений аналогичны вызовам JS.

Примеры: {V8JS: if ("{F:CODE}"=="12345")"N";else "Y";}

Производительность нового модуля в несколько раз превышает прежний JS. Рекомендуется использовать для написания сложных программ к которым предъявляются высокие требования по быстродействию. Для тестирования нового интерпретатора следует добавить строку

includePlugin='V8JS' в LuiServer.cfg
Кеширование форм
Для увеличения производительности стала доступна возможность буферной памяти форм - кэширование.

Без кэширования при повторном обращении к форме она вновь считывается из БД. Если включено кеширование, то форма будет загружаться из БД только в том случае, если её нет в оперативной памяти. Буферная память форм существует в рамках сеанса пользователя. Т.е. у каждого сеанса свой собственный кэш.

Управлять кэшированием можно с помощью следующих параметров приложения.

FORMS_CACHE_GROUPS – перечень групп форм, формы из которых будут запоминаться в кэше. Коды групп перечисляются через запятую.

Если кэш включен и FORMS_CACHE_GROUPS пуст или отсутствует, то в буфере будут запоминаться любые формы приложения.

FORMS_CACHE_SIZE – максимальное количество форм в кэше. При превышении этого количества из кэша будет удаляться форма попавшая туда раньше других.

FORMS_CACHE_LIFETIME – максимальное время жизни кэша в секундах. По истечении этого времени буфер может быть очищен для наполнения новыми формами.

Функциональность кэша выключена если FORMS_CACHE_LIFETIME=0 или отсутствует.

Функциональность кэша также выключена если FORMS_CACHE_SIZE=0

Если FORMS_CACHE_LIFETIME>0, а FORMS_CACHE_SIZE отсутствует, то функциональность кэша включена и будет считаться, что FORMS_CACHE_SIZE=20.

Пример. Если FORMS_CACHE_LIFETIME=1200, а FORMS_CACHE_SIZE=50, то количество форм в кэше не превысит 50, а очистка памяти кэша может происходить каждые 20 минут.

Следует понимать, что слишком большие значения этих параметров могут деградировать производительность системы, если количество конкурирующих сеансов тоже велико.