NewEra - новая линия инструментальных средств компании Informix

Н. Вьюкова


Средства разработки приложений и средства доступа к базам данных для конечного пользователя занимали значительное место в деятельности компании Informix с момента ее зарождения. Спектр продуктов Informix в этой области охватывает потребности и предпочтения самых разных групп разработчиков - от профессионалов до прикладных специалистов, не имеющих навыков программирования. Ниже перечислены исторические предшественники Informix- NewEra:
Informix-NewEra - последнее "детище" Informix в области средств разработки, на котором сосредоточены в настоящее время значительные усилия компании. Сохранив определенную преемственность по отношению к продуктам линии 4GL, NewEra обладает рядом принципиально новых свойств, важнейшие из которых - объектная ориентация и инструментарий визуального программирования.
Приложения, создаваемые в среде Informix-NewEra, имеют архитектуру клиент-сервер и могут использовать СУБД Informix или другие СУБД, доступные посредством интерфейса ODBC. Продукт представляет собой комплекс графических и языковых средств, позволяющих описывать модели данных, строить компоненты графического пользовательского интерфейса и задавать их поведение, программировать объекты и процедуры обработки данных, собирать и отлаживать приложения. Важнейшие характеристики Informix-NewEra:
Комплекс Informix-NewEra включает следующие инструментальные средства:
Подробные характеристики основных компонентов Informix-NewEra приведены в последующих разделах.
В предположении, что необходимая база данных уже создана, технологическая цепочка построения приложений в NewEra состоит из следующих шагов:

Генератор окон - Window Painter

Генератор окон NewEra - инструмент, который позволяет в графическом режиме создавать новые классы окон и визуальных объектов. Под визуальным объектом понимается группа взаимосвязанных органов управления окна, например, группа радиокнопок или супертаблица (орган управления для взаимодействия с таблицами БД) в комплекте с управляющими кнопками.

Структура и оформление окна

Разработчику предоставляется типичный для инструментов такого типа интерфейс - мышь, меню, панель инструментов, окно редактирования атрибутов.
На пространство окна "наклеиваются" стандартные органы управления - разного рода кнопки, выпадающие списки, тексты, поля ввода, графические элементы оформления; достаточно указать мышью нужный орган на панели инструментов и место, куда его следует поместить. Для группирования органов управления используются рамки (frame), они необходимы, в частности, если нужно создать несколько групп радиокнопок.
В окне могут использоваться также визуальные объекты созданных ранее классов.
Атрибуты окна и его органов (цвет, шрифт, надпись и др.) задаются в окне редактирования атрибутов.
Имеется также генератор многоуровневых меню, в котором определяется меню для текущего окна.

Супертаблицы - органы управления для взаимодействия с БД

Для взаимодействия с БД генератор окон предоставляет две разновидности органов управления, называемых супертаблицами (SuperTable):

Для создания и редактирования супертаблицы вызывается вспомогательный инструмент - редактор супертаблиц. Он связывается с желаемой базой данных, показывает список всех имеющихся в ней таблиц, представлений и суперпредставлений и позволяет указать мышью столбцы, которые необходимо включить в текущую супертаблицу. Для каждого включенного столбца редактор создает орган управления, называемый суперполем, который позволяет вводить или просматривать значения. Автоматически вставляются заголовки столбцов.
Редактор предлагает также заготовки командных кнопок, часто используемых при работе с БД - Retrieve (выполнить выборку), Insert Row (вставить строку), Delete Row (удалить строку), Apply All - сохранить в БД изменения, сделанные пользователем в супертаблице, и др. В супертаблицу можно обычным образом включить стандартные органы управления. Таким образом, конструктивно супертаблица представляет собой рамку, содержащую суперполя и другие органы управления.
Для пары супертаблиц можно графическими средствами определить отношение master-detale. Например, таким отношением можно связать супертаблицу, отображающую сведения о клиенте, и супертаблицу, с информацией о счетах, чтобы в ней автоматически производилась выборка счетов текущего клиента.
После того как структура супертаблицы определена, задаются ее атрибуты - некоторая выборка из базы данных, тип используемых блокировок и др.
Развитая встроенная функциональность супертаблиц и суперполей позволяет достаточно легко реализовать:
Доступ к БД в супертаблицах реализован на основе универсального объектного интерфейса, который позволяет использовать Informix или любую СУБД, доступную посредством интерфейса ODBC.

Обработка больших бинарных объектов (BLOB)

Informix поддерживает две разновидности BLOB-значений - TEXT и BYTE. Значения типа TEXT отображаются в суперполях в виде текста, если они содержат только печатные символы. Значения типа BYTE автоматически не отображаются. Суперполя для обоих типов имеют атрибут blobEditor, в котором указывается имя внешней программы редактора.

Программирование событий окна и органов управления

Как само окно, так и его органы управления являются объектами, образованными от стандартных оконных и визуальных классов NewEra. Для них предопределены множества стандартных событий (табл. 1).

Таблица 1

Примеры событий в объектах визуальных классов

Класс Событие Когда наступает
окно start при открытии окна
многие органы activate при активации, например, управления окна щелчком мыши
супертаблица beforeRetrieve перед началом выполнения выборки
супертаблица rowRetrieve после выборки очередной строки

Генератор окон позволяет задавать процедуры обработки событий (точнее, тела этих процедур - заголовки генерируются автоматически). Для ввода процедур обработки событий вызывается программное окно, предоставляющее простейшие средства редактирования. В программном окне можно ввести также определения дополнительных методов и событий, которые войдут в определение нового оконного или визуального класса.

Результат работы генератора - новый класс объектов

Генератор сохраняет результат работы в виде программы, описывающей новый оконный или визуальный класс. Эти классы могут использоваться в рамках одного или нескольких приложений.
Генератор окон сохраняет описание сгенерированного оконного класса в виде нескольких файлов (рис. 1):
< имя >.wif - файл с описанием структуры окна в формате WIF (Window Intermediate Format). Этот файл может быть прочитан генератором окон для последующего редактирования.
< имя >.4gh - заголовочный файл, содержит декларацию нового оконного класса.
< имя >.4gl - программный файл, содержит функции обработки событий в окне и его органах, заданные программистом. В этом файле содержатся также определения дополнительных или переопределенных функций оконного класса. Файлы 4gh и 4gl обрабатываются компилятором и генератором приложений.
Если при формировании окна был задан атрибут "главное окно", то в 4gl-файл будет добавлена головная функция MAIN. Она будет содержать оператор подключения к БД и вызов главного окна. Таким образом, простое приложение, не требующее сложной обработки данных, может быть целиком создано средствами визуального программирования.
< имярис.rs > - для каждого импортированного графического файла, использованного как элемент оформления окна, создается файл ресурсов.

Рис. 1

Рис. 1. Схема генерации и использования файлов с описаниями оконных и визуальных классов

Использование наследования

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

Создание интерфейсов для АЦ-терминалов

Соблюдая ряд правил, при помощи генератора окон можно создавать универсальные оконные интерфейсы для приложений. В число стандартных библиотек NewEra входят две библиотеки оконных и визуальных классов - для графических и для АЦ-терминалов. Таким образом, из одного и того же исходного кода можно, используя при сборке ту или другую библиотеку, создать два эквивалентных приложения, рассчитанных на разные типы мониторов.

Характеристика языка программирования NewEra

В отличие от языков скриптов, предлагаемых многими инструментальными системами, NewEra представляет собой полномасштабный высокоуровневый объектно-ориентированный язык, содержащий ряд встроенных средств для программирования доступа к базам данных и графического пользовательского интерфейса. NewEra является развитием языка Informix-4gl, поддерживая все его возможности за исключением операторов и встроенных функций для работы с экранными формами и меню.

NewEra как универсальный язык программирования

Программа на языке NewEra состоит из одного или нескольких файлов (модулей). Различаются программные и заголовочные модули. Оператор INCLUDE "имя_файла" позволяет включить в тело модуля текст другого файла. Имеется стандартный набор управляющих операторов.
Определены интерфейсы для вызовов С-функций из программ NewEra и функций NewEra из программ на языке С.
Множество встроенных типов данных NewEra соответствует набору типов данных, поддерживаемых СУБД Informix, и включает, в частности, типы данных для работы с большими бинарными объектами.
NewEra автоматически выполняет все осмысленные преобразования типов при присваиваниях, передаче параметров или возврате результатов функций.
Поддерживаются записи и многомерные массивы - два вида структурных необъектных типов, унаследованных от языка Informix-4gl.

Программирование взаимодействия с серверами СУБД

NewEra поддерживает два способа программирования доступа к базам данных:

Преимущества первого способа - простота и наглядность, совместимость с языком Informix-4gl; однако, приложение, включающее операторы встроенного SQL, не может работать с СУБД, отличными от Informix.
Интерфейс CCL - объектный интерфейс к базам данных, который обеспечивает открытость приложений по отношению к используемым СУБД. Модули приложения, основанного на интерфейсе CCL, обращаются при выполнении к одной из двух динамических библиотек, поставляемых с Informix-NewEra (рис. 2):
CCL/Informix - реализует взаимодействие с базами данных Informix;
CCL/ODBC - реализует взаимодействие с произвольной СУБД через интерфейс ODBC.
Рис. 2

Рис. 2. Приложение NewEra может взаимодействовать с СУБД Informix или с любой СУБД, доступной через интерфейс ODBC.

Генерация отчетов. NewEra предоставляет средства для описании структуры текстовых отчетов и их генерации. Более современные, графические, средства создания отчетов имеются в системе Informix-ViewPoint Pro, которая входит в комплект поставки NewEra (см. ниже).

Объектная модель NewEra

Язык NewEra поддерживает основные возможности объектно-ориентированного программирования, в частности, наследование и полиморфизм. В языке явно выделены и имеют специальное синтаксическое оформление понятия "событие в объекте", "обработчик события".
Объектная модель NewEra допускает более гибкий по сравнению, например, с С++, подход к проектированию и применению классов, поскольку функциональность объектов может частично определяться непосредственно в программах, использующих данный класс, причем, индивидуально для каждого объекта.
Класс объектов NewEra характеризуется

ЗАМЕЧАНИЕ. Во всех последующих примерах программ знаки -- обозначают комментарий до конца строки.
Пример декларации класса:

CLASS music      -- ИМЯ КЛАССА

--     КОНСТАНТЫ:

  CONSTANT unknown SMALLINT=0

  CONSTANT folk SMALLINT=1

  CONSTANT classic SMALLINT=2

  CONSTANT pop SMALLINT=4

  CONSTANT hard_rock SMALLINT=8



--     ПЕРЕМЕННЫЕ:

  PUBLIC VARIABLE music_type SMALLINT

  PRIVATE VARIABLE music_title CHAR (32) -- название

  PRIVATE VARIABLE music_code BYTE -- внутреннее представление мелодии



--     ФУНКЦИИ:

-- инициализация нового объекта класса music:

  FUNCTION music (music_type SMALLINT: unknown,

                  music_title CHAR(32): NULL)

-- установка названия:

  FUNCTION set_title (title CHAR(32))

-- опрос названия:

  FUNCTION get_title () RETURNING CHAR(32)

-- установка кода (внутреннего представления) мелодии:

  FUNCTION set_code (file_name CHAR(*))



--     СОБЫТИЯ:

--  воспроизведение мелодии

  EVENT play ()

END CLASS

Объекты класса создаются при помощи операторов NEW и COPY, примеры:

  VARIABLE my_melody MUSIC = NEW music(music::folk, "Калинка")

  VARIABLE your_melody MUSIC = COPY my_melody

Допускается определение нескольких различных функций-обработчиков для одного и того же события данного класса. Обработчики могут присваиваться индивидуальным объектам динамически.

Компиляторы

Продукт Informix-NewEra содержит два типа компиляторов и, соответственно, два способа сборки приложений:

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

Генератор приложений

Генератор приложений (Application Builder) - графический инструмент для построения приложений, состоящих из нескольких файлов. Разработчик описывает структуру приложений в терминах проектов, программ, файлов. Проект может состоять из одной или нескольких программ, каждая программа собирается из одного или нескольких исходных файлов (рис. 3). Описания проектов сохраняются в системной базе данных.
Генератор позволяет собирать как интерпретируемый, так и выполняемый вариант приложения. Выполняемое приложение создается в виде EXE-файла и, возможно, нескольких динамически загружаемых библиотек (DLL).

Рис. 3

Рис. 3. Структура проектов NewEra.

Отладчик

Символьный отладчик позволяет отлаживать в исходных кодах программы на языке NewEra. Основные возможности:

Informix-ViewPoint Pro

Продукт Informix-ViewPoint Pro используется в двух качествах:

Администрирование

Административная подсистема Informix-ViewPoint Pro содержит инструменты, которые позволяют в графическом режиме

Создание приложений в Informix-ViewPoint Pro

Informix-ViewPoint Pro - это также инструмент для построения простейших приложений без какого бы то ни было программирования. Приложения, создаваемые в ViewPoint Pro, состоят из окон 3-х типов:

Все типы окон могут содержать графические декоративные элементы, а также параметризуемые командные кнопки из фиксированного набора: Open(открыть окно), Goto (перейти в другое окно), Close (закрыть окно), Retrieve (выполнить выборку) и т. п.

Суперпредставления

Суперпредставление, так же, как и представление (view), является описанием информационного среза БД, но несет некоторую дополнительную структурную нагрузку, имеет наглядное внешнее представление. При помощи ViewPoint Pro администратор строит серию суперпредставлений, отражающих существенные информационные связи. На их основе прикладные специалисты, не обладающие навыками программирования, могут при помощи средств разработки ViewPoint Pro быстро создавать приложения, отвечающие их потребностям.
Генератор суперпредставлений ViewPoint Pro позволяет описывать их структуру не в терминах операторов SQL SELECT, а в терминах связей между таблицами. Связь задается операцией соединения столбцов двух таблиц с явным указанием типа: "один к одному", "один к 0 или к одному", "один ко многим", "один к нулю или многим".

Фрагментация приложений

Поставляемая с Informix-NewEra библиотека классов прикладного сервера (Application Server Class Library) предназначена для создания распределенных многозвенных приложений. В таком приложении на машине-клиенте обслуживается только интерфейс с пользователем, а прикладная бизнес-логика реализуется при помощи одной или нескольких серверных компонентов. Предполагается, что поддержка серверных компонентов приложений NewEra будет обеспечена для всех платформ, на которых могут работать серверы СУБД Informix.
В последующих версиях NewEra планируется реализация расширенного инструментария распределенного программирования. В него войдут средства для автоматического создания коммуникационного кода, обеспечивающего взаимодействие удаленных компонентов, а также распределенный отладчик. При необходимости, фрагментация приложения может быть переопределена без перепрограммирования содержательного кода, что чрезвычайно важно в условиях постоянно изменяющихся потребностей.

Заключение

Informix-NewEra - продукт, находящийся в стадии интенсивного развития и становления. Сильной стороной его, несомненно, является высокоуровневый объектно-ориентированный язык NewEra, который составляет прочный фундамент всего инструментального комплекса. Планы относительно усовершенствований, новых библиотек и инструментальных компонентов, которые, согласно официальным техническим материалам компании, должны войти в ближайшие версии, позволяют охарактеризовать Informix-NewEra как перспективный профессиональный инструментарий

[Назад] [Содержание] [Вперед]