Продолжение использования сайта пользователем интерпретируется как согласие на обработку фрагментов персональных данных (таких, как cookies) для целей корректной работы сайта.

Live Universal Interface

Новое средство коллективной разработки интерфейсов прикладных систем
Нами разработан оригинальный программный продукт – среда для создания интерфейса (экранных форм) к уже существующим или вновь разрабатываемым прикладным системам (Live Universal Interface, LUI). В чем же особенность нового средства?
Несмотря на большое разнообразие инструментов, при производстве ПО очень часто приходится сталкиваться с ситуацией, когда задача создания пользовательского интерфейса оказывается более ресурсоёмкой, чем задача реализации прикладной бизнес-логики. Проект начинает «теряться» в экранных формах. Как правило, это связано с тем, что даже при наличии достаточно совершенных инструментов программист вынужден самостоятельно строить алгоритмы для обработки событий при вводе и отображении данных. Он должен управлять отображением информации на экране посредством элементарных команд в тесной взаимной связи с бизнес-логикой приложения. При этом нести полную ответственность за конечный результат!

Такой подход требует высокого профессионализма и обладания широким спектром компетенций – как от отдельных разработчиков, так и от проектной команды в целом. Те же причины не позволяют опираться на подобные инструменты в случае необходимости быстрого прототипирования приложений без существенных функциональных ограничений при его реализации.
LUI предполагает совершенно иной подход, когда при разработке экранных форм, достаточно просто правильно присваивать определённые свойства элементам интерфейса.
Поведение форм будет выбираться автоматически на основании этих свойств. Некоторые свойства могут иметь значения, в которых продекларирована их зависимость от состояния других интерфейсных элементов. Актуализация и применение новых значений свойств тоже находится вне заботы разработчика.
При таком подходе разработка прикладной логики системы получается чётко отделённой от разработки пользовательского интерфейса. Обе эти задачи могут решаться независимо. Отсюда следует, что интерфейс может быть разработан уже после проектирования и создания базы, а также программирования и отладки прикладной бизнес-логики. Более того, новый интерфейс может быть создан для уже существующей, отлаженной и давно работающей прикладной системы. Ввод его в эксплуатацию может осуществляться по частям, не останавливая существующей Системы – путём постепенной замены старых интерфейсных форм.
Имеющийся в компании «ФОРС» опыт практического использования LUI при разработке программного обеспечения позволяет судить о реальной эффективности применения данного инструмента и утверждать, что он обеспечивает следующие преимущества.

Преимущества

LUI позволяет быстро реализовывать учётные, финансовые, расчётные системы для любых отраслей. Возможности инструментария по праву оценят коллективы разработчиков рынков B2B, B2G, G2B, G2C и, в некоторых случаях, даже B2C. Инструмент может оказаться чрезвычайно полезен для решения IT-задач в бизнес-консалтинге и в иных случаях, когда необходимо быстро и с минимальными затратами предоставить прототип (опытный образец) автоматизированной системы.
Снижение затрат на разработку
LUI позволяет значительно снижать уровень затрат на разработку экранных интерфейсов приложений (в некоторых проектах достигнуто 3-х кратное уменьшение времени разработки по сравнению с ранее использовавшимся фреймворком на основе Apache Wicket)
Быстрая прототипизация
LUI позволяет быстро прототипировать автоматизированные системы, сосредоточившись на первоочередной задаче автоматизации бизнес-процессов
Эффективная модернизация приложений
Приложения, написанные с применением LUI, можно эффективно развивать и модифицировать — любые изменения в экранном интерфейсе вносятся прямо в работающую систему без её остановки, а связанные с ними этапы подготовки локальных модификаций, верификации изменений, компиляции и сборки больше не потребуются
Дополнительные потребительские качества приложений
LUI обеспечивает дополнительные потребительские качества разрабатываемого программного продукта, например, сочетание свойств, присущих традиционному "тонкому" клиенту с "длинными" транзакциями и широкими возможностями поиска информации (QBE — Query by Example)
Длительный период жизни приложений
Применение LUI позволяет рассчитывать на длительный период жизни приложения, поскольку замена средства отображения интерфейса на более современное не потребует изменения интерфейсных форм и уж тем более не затронет логику прикладной системы

Основные особенности LUI

Абстрагирование свойств элементов интерфейса от средства их реализации


Подробнее
Отказ от событийного подхода при разработке программной логики


Подробнее
Использование декларативных языков при описании свойств элементов интерфейса

Подробнее
Оперативное подключение к любому существующему и работающему приложению


Подробнее

Новости
Показать еще
Базовые концепции LUI
Здесь перечислены принципы, которыми руководствовались разработчики LUI при его проектировании и реализации.
  • 1
    Алгоритмы изменений интерфейсных элементов в процессе работы форм описываются декларациями её динамических свойств, а не процедурами обработки событий в формах. «Движок» обеспечивает адекватность отображения текущих значений свойств каждого элемента и формы в целом на протяжении всей жизни формы.
  • 2
    Набор свойств элемента фиксирован и согласован. То есть, нет таких свойств элементов, значения которых могут противоречить друг другу или быть несовместимыми.
  • 3
    Элементы и их свойства достаточно абстрактны, чтобы не попадать в зависимость от конкретной реализации интерфейсного «движка». То есть, свойства оперируют понятиями, а не физическими устройствами.
  • 4
    Программы на языке, обеспечивающем декларации динамических фрагментов, не порождают необработанных исключений. В любой момент времени вычисление динамического фрагмента возвращает какое-то значение без отображения ошибок.
  • 5
    Динамические фрагменты вычисляются только при необходимости и только непосредственно в момент их востребованности.
  • 6
    При обработке клиентского события единожды вычисленный динамический фрагмент не перевычисляется при повторных использованиях в различных свойствах, если динамические фрагменты текстуально эквивалентны.
  • 7
    «Движок» при реакции на событие передаёт клиентскому монитору команды по изменению интерфейсных элементов, минимизируя трафик — то есть, отправляются только новые или реально изменившиеся свойства форм.

Абстрагирование свойств
Разработчик бизнес-логики приложения при проектировании интерфейсных форм оперирует довольно абстрактными свойствами элементов интерфейса, универсальными для любого средства его визуализации. Разработчик только обозначает — какую функциональность он ожидает от интерфейса, при этом он не озабочен тем, как и какими средствами эта функциональность будет реализована.
Таким образом, разработка прикладной системы окажется полностью отделённой от средства (среды и языка) разработки «движка» или нескольких «движков», которыми осуществляется и будет осуществляться в будущем визуализация труда программиста прикладной системы.
Пример: чтобы визуально выделить элемент среди других элементов интерфейса разработчик прикладной системы не должен оперировать такими свойствами, как шрифт (вдруг «движок» алфавитно-цифровой?), цвет (вдруг «движок» монохромный?), фон и т.п. Он оперирует ролями, о которых условлено с разработчиком «движка», такими как «Внимание», ««Незаметный» и т.п. А уже разработчик конкретного движка, ориентируясь на поставленные цели и исходя из предоставленного ему инструментария, интерпретирует эти роли. При существенных расхождениях во мнении об интерфейсных реализациях свойств элементов интерфейса разработчик «движка» реализует средства кастомизации (настройки) под конкретного Заказчика или даже Пользователя.

Отказ от обработки событий
При описании интерфейса нельзя мыслить в категории событий и триггеров, так как они являются очень специфическими для конкретного «движка», разработанного в конкретной среде. Продвинутые средства поддерживают множество типов событий, а другие — не так много, но зато берут обработку части событий на себя. В одних средах под одним и тем же событием подразумевается одно, а в других — другое. Одни считают, что при каком-то событии надо произвести такой набор стандартных действий, а другие — совсем иной.

Поэтому, в LUI многообразие отношений интерфейсных элементов реализуется не описанием обработчиков событий, а декларативными динамическими свойствами. То есть свойства элементов интерфейса могут изменяться как при синтезе интерфейсных форм движком, так и уже в процессе их функционирования — в зависимости от входных параметров, значений контекстных элементов, параметров контента, изменяемых пользователем элементов, а также результатов запроса к прикладной системе (бизнес-логика).

Динамические свойства
Значение свойства может быть константой (надпись на кнопке, признак активности элемента, тип данных ячейки и т.п.). В этом случае свойство определено ещё до начала работы формы и не меняется до закрытия формы. Однако внутри (или вместо) значения формы можно использовать текстовые конструкции, заключённые в фигурные скобки, которые называются Динамическим фрагментом. Их наличие — указание интерпретатору, что в момент применения значения свойства содержание фигурных скобок будет проинтерпретировано, вычислено и заменено (включая и сами скобки) на результат вычисления.
Пример динамического свойства — заголовка таблички с объектами договора:

Объекты договор{SQL:Select NVL(Max('а №'||CONTR_NO), 'ов') from CONTRACTS where ID=0{Param:CONTRID}}
Это свойство содержит динамический фрагмент в виде запроса к базе данных, опирающийся на входной параметр CONTRID. Ноль перед параметром страхует от пустого значения параметра CONTRID. Так как вся динамика в этом примере опирается только на входной параметр, то считаться она будет один раз за всё время жизни формы — при загрузке.
Другой пример — динамическое свойство Заголовок, выполненное на процедурном языке JavaScript, который тут используется как декларативный:

{JavaScript:"{FormProperty:RowNum}"?"Текущая строка №{FormProperty:RowNum}, код={CODE}":"нет текущей строки"}
Этот динамический фрагмент опирается на меняющееся свойство формы — RowNum — номер текущей строки списка, а также на значение ячейки CODE текущей строки. В какой момент нужно перевычислять динамическое значение решает «движок». Он знает когда у него меняется номер строки или значение ячейки CODE. Программисту писать обработчики событий, чтобы перевычислить и заменить свойство Заголовок, уже не надо!

Схема взаимодействия частей универсального интерфейса
  • 1
    На клиентском устройстве, где отображаются интерфейсные формочки, возникает событие, требующее реакции сервера интерфейса. Это такое событие, которое теоретически может повлечь перевычисление зависимых динамических свойств каких-то элементов интерфейса. Конечно, первопричиной возникновения события являются некий клик мышкой, нажатие клавиши на клавиатуре и т.п., но Клиентский монитор транслирует в Сервер интерфейса уже более осмысленные события с их параметрами: перемещение курсора в другое поле/строку/ячейку, нажатие на кнопку, изменение значения поля, выбор пункта меню и т.п.
  • 2
    Сервер интерфейса имеет обработчик каждого типа события, поступившего с Клиентского монитора. Он производит необходимые манипуляции с формами, элементами и их значениями. Если в процессе используются свойства элементов, то вычисляются их динамические значения.
  • 3
    Выполнение прикладной бизнес-логики посредством вызова процедур приложения — напрямую или через API или даже прямое манипулирование данными.
  • 4
    Формирования команд в терминах Клиентского монитора, которые производят необходимые визуальные изменения на клиентском устройстве. При использовании свойств элементов интерфейса вычисляются их динамические значения.
  • 5
    Определение иных свойств элементов интерфейса, которые могли бы измениться в результате обработки события. Формирования команд для отправки в Клиентский монитор, которые применят изменившиеся свойства.
  • 6
    Клиентский монитор преобразует абстрактные команды Сервера интерфейса в реальные изменения на экране у клиента.
Демонстрация форм, работающих на LUI
Нажав на одну из кнопок, вы запустите демонстрационную форму.
В этих формах можно:
  • Навигироваться по пунктам, строкам, ячейкам и полям — мышью или клавиатурой;
  • В Списках переходить в режим многострочного выделения — кликая мышью с нажатым CTRL на нужные строки списка;
  • Вызывать локальное меню действий в формах, применимых к объекту, где был сделан клик правой кнопкой мыши — к ячейке, полю, строке, пункту, заголовку или всей форме;
  • Вызывать локальное меню действий со столбцами списков — кликая на заголовке столбца левой кнопкой мыши;
  • Перемещать мышью границы окон, столбцов и внутренних областей;
  • В Списках переходить в режим QBE (Query by Example) — клавишей F7; Применять введённые условия QBE — клавишей F8;
  • Принудительно обновлять данные в списке — клавишей F8;
  • Выполнять действия — нажимая кнопки в формах, на ToolBar списков, в полях и ячейках форм.
Обращаем внимание, что в демонстрационном режиме все изменения в базе, сделанные при помощи форм LUI, не сохраняются!
Поставка и загрузка
Программный продукт LUI является инструментальным средством для разработки и выполнения web-приложений. Условия лицензии распространения LUI приведены в файле https://lui.forstelecom.ru/LUI.License.pdf

Правообладатели версий продукта LUI указаны в свидетельствах регистрации на странице: https://forstelecom.ru/pls/portal/url/page/fastcom/certificates

LUI предоставляется пользователю для ознакомления и тестирования бесплатно на ограниченный срок по запросу на основании Лицензионного договора использования тестовой версии программы. Дистрибутив и инструкцию по установке LUI можно скачать на следующих страницах, в зависимости от версий программного продукта, операционной системы и СУБД:


Всем заинтересованным в промышленной эксплуатации LUI, включая возможность разработки web-приложений, мы предлагаем воспользоваться нашими платными договорными услугами:

  • Поставка промышленной версии LUI для разработки и выполнения web-приложений
  • Оказание услуг технической поддержки
  • Миграция существующих приложений на LUI
  • Обучение LUI
  • Доработка и настройка LUI под конкретные требования
      Интероперабельная среда разработки WEB-интерфейсов пользователей на основе декларативного программирования LUI (Live Universal Interface), версия ПО 2.0 – (LUI 2.0)
      (Свидетельство о государственной регистрации № 201666405. ФГИС Реестр ПО № 7010)

      Особенности версии LUI 2.0:

      • Метаданные форм хранятся в СУБД PostgreSQL
      • Поддерживаются несколько соединений с разными СУБД
      • Поддерживаются соединения с СУБД PostgreSQL и Oracle
      • Декларативные языки — SQL, JavaScript, PL/pgSQL
      • Процедурные языки — PL/pgSQL, JavaScript
      Интероперабельная среда разработки WEB-приложений для платформы Эльбрус (LUI-Эльбрус)
      (Свидетельство о государственной регистрации № 2020617979. ФГИС Реестр ПО № 7692)

      Особенности версии LUI-Эльбрус:

      • Поставка LUI в виде deb-пакета
      • Deb-пакет LUI входит в дистрибутив ОС «Эльбрус» с версии 6.2.1
      • Метаданные форм хранятся в СУБД PostgreSQL
      • Поддерживаются несколько соединений с разными СУБД
      • Поддерживаются соединения с СУБД PostgreSQL и Oracle
      • Декларативные языки — SQL, JavaScript, PL/pgSQL
      • Процедурные языки — PL/pgSQL, JavaScript
        Интероперабельная среда разработки интерфейса пользователя – LUI
        (Свидетельство о государственной регистрации № 2018614173. ФГИС Реестр ПО № 4773)

        Особенности данной версии LUI:

        • Метаданные форм хранятся в СУБД Oracle
        • Поддерживается одно соединение и только с СУБД Oracle
        • Декларативный язык — Oracle SQL, Oracle PL/SQL
        • Процедурный язык — Oracle PL/SQL
        Система автоматизации миграции прикладных систем с СУБД Oracle в СУБД PostgreSQL (САМ LUI4ORA2PG)
        (Свидетельство о государственной регистрации № 2020667206. ФГИС Реестр ПО № 9940)

        Система автоматизации миграции LUI4ORA2PG (САМ LUI4ORA2PG) — инструментальное программное средство для автоматизации планирования и управления процессами миграции прикладных программных систем с СУБД Oracle на СУБД Postgres.

        LUI4ORA2PG состоит из клиентской и серверной частей. Серверная часть находится и выполняется под управлением СУБД Postgres. Клиентская часть — под управлением LUI.
        Для получения указанных услуг Вы также можете обратиться по адресу lui@fors.ru или по телефону: +7 495 913-75-75.
        Контакты
        «ФОРС - Центр разработки», дополнительный офиc

        129626, г. Москва, Графский пер., д. 14, корп. 2
        https://www.fors.ru
        +7 495 798 98 38, доб. 240, 267, 239, 212
        lui@fors.ru

        «ФОРС Телеком»

        129626, г. Москва, Графский пер., д. 14, корп. 2
        https://forstelecom.ru
        forstelecom@fors.ru