Назад в раздел
NewEra - новая линия инструментальных средств компании Informix
NewEra - новая линия инструментальных
средств компании Informix
Н. Вьюкова
Средства разработки приложений и средства доступа к базам данных для конечного пользователя
занимали значительное место в деятельности компании Informix с момента ее зарождения. Спектр
продуктов Informix в этой области охватывает потребности и предпочтения самых разных групп
разработчиков - от профессионалов до прикладных специалистов, не имеющих навыков
программирования. Ниже перечислены исторические предшественники Informix-
NewEra:
Informix-SQL - инструмент программирования на языке SQL.
Informix-ESQL/C - среда программирования на языке С со встроенным SQL.
Informix-ESQL/COBOL - среда программирования на языке COBOL со
встроенным SQL.
Informix-4GL - инструмент программирования на языке 4-го поколения (4GL)
со встроенным SQL, включает компилятор языка 4GL, средства построения
экранных форм и меню.
Informix-4GL-RDS+ID - версия Informix-4GL со средствами быстрой
разработки (RDS) и интерактивной отладки (ID).
Informix-HyperScript Tools - инструмент создания приложений в среде
Windows, Unix и др. Позволяет программировать меню, диаграммы,
электронные таблицы, экранные формы.
Informix-ViewPoint - средство доступа к базам данных, позволяет
непрограммным способом создавать графические формы, отчеты,
запросы.
Informix-NewEra - последнее "детище" Informix в области средств разработки, на котором
сосредоточены в настоящее время значительные усилия компании. Сохранив определенную
преемственность по отношению к продуктам линии 4GL, NewEra обладает рядом принципиально
новых свойств, важнейшие из которых - объектная ориентация и инструментарий визуального
программирования.
Приложения, создаваемые в среде Informix-NewEra, имеют архитектуру клиент-сервер и могут
использовать СУБД Informix или другие СУБД, доступные посредством интерфейса ODBC.
Продукт представляет собой комплекс графических и языковых средств, позволяющих описывать
модели данных, строить компоненты графического пользовательского интерфейса и задавать их
поведение, программировать объекты и процедуры обработки данных, собирать и отлаживать
приложения. Важнейшие характеристики Informix-NewEra:
Многоплатформность, кросс-платформность. Informix-NewEra работает
в системах MS Windows, OSF/Motif и Macintosh. Приложения или компоненты
приложений, разработанные на одной платформе, могут работать на других
платформах.
Объектно-ориентированный характер инструмента. Преимущества данного
подхода - переиспользуемость кода, бизнес-моделирование, хорошая
приспособляемость приложений к меняющимся требованиям, простота
сопровождения, интегрируемость с библиотеками от независимых
поставщиков. Допустимо использование внешних библиотек, разработанных на
С и С++.
Поддержка наряду с объектно-ориентированными разработками
традиционного структурного программирования.
Поддержка групповых разработок. Программисты совместно используют
библиотеки, файлы исходных кодов и ресурсов. Возможно применение
системы управления версиями и конфигурациями PVCS (Intersolv).
Стилистическое единообразие пользовательского интерфейса
обеспечивается за счет механизма наследования и поддержания репозитория
данных. В репозитории хранятся такие элементы интерфейса, как цветовое и
шрифтовое оформление, маски ввода и форматы вывода данных, правила
верификации, заголовки и метки столбцов, используемые при выводе, и т. п.
Открытость создаваемых приложений по отношению к используемой СУБД.
В комплект поставки входят библиотеки взаимодействия с СУБД Informix, а
также с СУБД, доступными через интерфейс ODBC. Определен объектный
интерфейс для создания других аналогичных библиотек доступа к СУБД.
Преемственность по отношению к Informix-4gl. Благодаря существенной
совместимости языков NewEra и 4gl, возможен перенос приложений 4gl в среду
Informix-NewEra.
Возможность создания распределенных многозвенных приложений, в
которых обработка данных отделена от обслуживания интерфейса с
пользователем.
Комплекс Informix-NewEra включает следующие инструментальные средства:
Инструменты визуального программирования - генератор окон и генератор составных
органов управления;
Компиляторы и интерпретатор языка NewEra;
Компилятор файлов сообщений и справок;
Генератор приложений;
Интерактивный символьный отладчик программ на языке NewEra;
Электронная документация, доступная в интерактивном режиме;
Набор примеров элементарных приложений (рецептов);
Демонстрационные базы данных;
Вспомогательный продукт Informix-NewEra ViewPoint Pro, который содержит;
инструменты администрирования баз данных и репозитория данных NewEra;
средства для построения простых приложений без программирования на SQL или каких-
либо других языках.
Подробные характеристики основных компонентов Informix-NewEra приведены в последующих
разделах.
В предположении, что необходимая база данных уже создана, технологическая цепочка
построения приложений в NewEra состоит из следующих шагов:
Используя средства администрирования ViewPoint Pro, создать
репозиторий приложения, описав в нем связи между таблицами, атрибуты
внешнего представления данных для таблиц и столбцов - шрифты, цвета,
заголовки и т. п.
Создать при помощи визуальных инструментов макет прикладной системы
в виде серии окон, отражающей общую структуру приложения и
пользовательский интерфейс. Описать поведение органов управления окон.
Создать программные модули, реализующие классы и процедуры для
содержательной обработки данных и поддержки некоторых компонентов
пользовательского интерфейса.
Создать файлы сообщений, используемые в приложении.
Создать новый проект в рамках генератора приложений, собрать
приложение.
Отладить его при помощи отладчика, возвращаясь по мере необходимости
к предыдущим шагам.
Генератор окон - 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. Схема генерации и использования файлов с описаниями
оконных и визуальных классов
Использование наследования
По умолчанию вновь генерируемый оконный класс является наследником системного класса
ixWindow. Однако программист может указать в качестве базового и другой оконный класс,
созданный ранее. Например, если требуется, чтобы все окна приложения содержали логотип
фирмы, то достаточно сгенерировать оконный класс с желаемым графическим компонентом и
указывать этот класс в качестве базового для других окон приложения.
Создание интерфейсов для АЦ-терминалов
Соблюдая ряд правил, при помощи генератора окон можно создавать универсальные оконные
интерфейсы для приложений. В число стандартных библиотек NewEra входят две библиотеки
оконных и визуальных классов - для графических и для АЦ-терминалов. Таким образом, из одного
и того же исходного кода можно, используя при сборке ту или другую библиотеку, создать два
эквивалентных приложения, рассчитанных на разные типы мониторов.
Характеристика языка программирования NewEra
В отличие от языков скриптов, предлагаемых многими инструментальными системами, NewEra
представляет собой полномасштабный высокоуровневый объектно-ориентированный язык,
содержащий ряд встроенных средств для программирования доступа к базам данных и
графического пользовательского интерфейса. NewEra является развитием языка Informix-4gl,
поддерживая все его возможности за исключением операторов и встроенных функций для работы с
экранными формами и меню.
NewEra как универсальный язык
программирования
Программа на языке NewEra состоит из одного или нескольких файлов (модулей). Различаются
программные и заголовочные модули. Оператор INCLUDE "имя_файла" позволяет включить в
тело модуля текст другого файла. Имеется стандартный набор управляющих операторов.
Определены интерфейсы для вызовов С-функций из программ NewEra и функций NewEra из
программ на языке С.
Множество встроенных типов данных NewEra соответствует набору типов данных,
поддерживаемых СУБД Informix, и включает, в частности, типы данных для работы с большими
бинарными объектами.
NewEra автоматически выполняет все осмысленные преобразования типов при присваиваниях,
передаче параметров или возврате результатов функций.
Поддерживаются записи и многомерные массивы - два вида структурных необъектных типов,
унаследованных от языка Informix-4gl.
Программирование взаимодействия с серверами
СУБД
NewEra поддерживает два способа программирования доступа к базам данных:
операторы встроенного SQL;
интерфейс библиотеки классов CCL (Connectivity Class Library).
Преимущества первого способа - простота и наглядность, совместимость с языком Informix-4gl;
однако, приложение, включающее операторы встроенного SQL, не может работать с СУБД,
отличными от Informix.
Интерфейс CCL - объектный интерфейс к базам данных, который обеспечивает открытость
приложений по отношению к используемым СУБД. Модули приложения, основанного на
интерфейсе CCL, обращаются при выполнении к одной из двух динамических библиотек,
поставляемых с Informix-NewEra (рис. 2):
CCL/Informix - реализует взаимодействие с базами данных Informix;
CCL/ODBC - реализует взаимодействие с произвольной СУБД через интерфейс ODBC.
Рис. 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 содержит два типа компиляторов и, соответственно, два способа сборки
приложений:
Модули NewEra -> файлы с интерпретируемым кодом -> объединенный
файл с интерпретируемым кодом
Модули NewEra -> модули на языке С -> объектные модули ->
выполняемая программа
В ходе разработки и отладки приложений используется первый способ, поскольку компиляция в
интерпретируемый код выполняется быстрее и с ним может работать отладчик. Для изготовления
производственных версий применяется второй способ.
Генератор приложений
Генератор приложений (Application Builder) - графический инструмент для построения
приложений, состоящих из нескольких файлов. Разработчик описывает структуру приложений в
терминах проектов, программ, файлов. Проект может состоять из одной или нескольких
программ, каждая программа собирается из одного или нескольких исходных файлов (рис. 3).
Описания проектов сохраняются в системной базе данных.
Генератор позволяет собирать как интерпретируемый, так и выполняемый вариант приложения.
Выполняемое приложение создается в виде EXE-файла и, возможно, нескольких динамически
загружаемых библиотек (DLL).
Рис. 3. Структура проектов NewEra.
Отладчик
Символьный отладчик позволяет отлаживать в исходных кодах программы на языке NewEra.
Основные возможности:
просмотр исходных модулей, входящих в программу, показ текущей
позиции выполнения;
пошаговое выполнение программ;
установка и снятие точек останова непосредственно в тексте модулей;
просмотр значений переменных, элементов массивов, компонентов
структур и объектов;
поиск фрагмента текста по всем модулям.
Informix-ViewPoint Pro
Продукт Informix-ViewPoint Pro используется в двух качествах:
как вспомогательный инструмент администрирования баз данных
Informix и репозиториев приложений;
как самостоятельный инструмент для разработки простейших приложений.
Администрирование
Административная подсистема Informix-ViewPoint Pro содержит инструменты, которые позволяют
в графическом режиме
просматривать списки и структуру существующих баз данных, таблиц,
суперпредставлений;
создавать, изменять, уничтожать базы данных, таблицы,
суперпредставления;
задавать атрибуты ввода и вывода данных из столбцов - заголовки,
шрифты, цвета и форматы вывода данных, маски ввода и др. Эта информация
запоминается в системных таблицах базы данных и используется по
умолчанию генератором окон при формировании супертаблиц и суперполей;
управлять привилегиями пользователей по отношению к базам данных,
таблицам, столбцам и суперпредставлениям;
вводить и выполнять произвольные операторы SQL.
Создание приложений в Informix-ViewPoint Pro
Informix-ViewPoint Pro - это также инструмент для построения простейших приложений без какого
бы то ни было программирования. Приложения, создаваемые в ViewPoint Pro, состоят из окон 3-х
типов:
простые окна (screen) - служат для вызова других окон, выполняют
управляющие функции в приложении;
окна с формами (form) - содержат формы для ввода или просмотра
информации из базы данных;
окна с отчетами (report) - содержат отчеты.
Все типы окон могут содержать графические декоративные элементы, а также параметризуемые
командные кнопки из фиксированного набора: 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 как перспективный профессиональный
инструментарий
|