Компьютер Пресс №10-98
ERwin и автоматическая генерация кода клиентских приложений
Анатолий Тощев
Введение
Привычным становится для программистов, создающих информационные системы
в технологии «клиент-сервер», работа по моделированию структуры базы данных
с помощью CASE-средств. Это позволяет значительно упростить процесс создания
реально работающих информационных систем, а также облегчает их сопровождение.
Но данная методика касается только серверной части информационных систем.
А может ли CASE-средство автоматизировать разработку клиентского приложения?
Однозначно положительный ответ вряд ли кто рискнет дать. Когда разговор
идет об автоматической генерации кода приложения, любой программист скажет,
что об оптимальности этого кода не может быть и речи. Однако все серьезные
CASE-средства имеют модули по автоматизации разработки клиентской части
информационной системы. В чем же они могут оказать помощь программисту?
Рассмотрим генерацию клиентских приложений на примере одного из самых распространенных
CASE-средств программного продукта ERwin фирмы Logic Works.
С чем работает ERwin?
Первый вопрос, который возникает при попытке использования ERwin для разработки
клиентской части звучит так: «Какие средства разработки приложений поддерживает
ERwin?». Последняя версия ERWin 3.5 напрямую работает с двумя средствами:
Visual Basic (Microsoft) и PowerBuilder (Sybase) версии 4.0, 5.0 и 6.0.
Т.е., весь процесс обмена информацией при генерации приложения осуществляется
только между ERwin и соответствующим средством разработки. Используя специальный
продукт MetaBase (производитель - швейцарская фирма «gs-soft»), можно расширить
список еще одним популярным средством разработки, а именно Delphi (Borland).
Какое приложение ERwin создает при использовании автоматической генерации
кода? Все зависит от используемого средства разработки. Давайте более подробно
остановимся на каждом из этих средств.
Visual Basic
При работе с Visual Basic сразу виден результат работы, т.к. на основе
модели данных создается экранная форма. Процесс генерации можно разбить
на две части: формирование клиентских данных в ERwin и использование Visual
Basic для создания кода приложения.
Загрузив в ERwin модель данных, необходимо установить через меню Client
- Target Client средство разработки Visual Basic. Следует заметить, что
ERwin работает с Visual Basic версии 4.0 или 5.0. Выбор номера версии непредусмотрен,
т.к. практически нет никаких различий с точки зрения ERwin на генерацию
кода в различных версиях Visual Basic. Работа с клиентской частью доступна
только на уровне физической модели.
Далее приступаем к созданию словарей (осуществляется с помощью соответствующих
пунктов меню Client) для стилей, форматов, условий проверки и начальных
значений. Можно пропустить этот шаг и формировать словари непосредственно
на следующем шаге. Назначение словарей состоит в следующем:
-
Стили - задает стиль отображения колонки модели в экранной форме (поле,
выпадающий список, список, радиокнопка и т.д.):
-
Форматы - варианты форматов для соответствующих типов переменных.
-
Условия проверки - допустимые значения для данной колонки в экранной форме
(не надо путать с таким же параметром для серверной части).
-
Начальные значения - значения, которые будут введены в колонки в экранной
форме при ее создании в процессе работы приложения.
Следующий шаг требует задать параметры для всех колонок модели, которые
будут использованы в процессе генерации.
Для этого используются соответствующие закладки в редакторе колонок. Параметры,
задаваемые для колонок:
-
Стиль (Style), условие проверки (Valid), начальное значение (Initial) -
эти параметры были рассмотрены выше при рассмотрении соответствующих словарей.
-
Видимость - будет ли данная колонка отображена на экранной форме (при этом
она обязательно будет присутствовать в форме).
-
Только для чтения (Read only) - колонка помечается как доступная только
для просмотра, изменения в ней запрещены.
-
Обязательность ввода данных в колонку (Reguired) - в эту колонку необходимо
обязательно ввести данные, иначе будет выдана ошибка.
-
Помощь (Help ID)- ссылка на раздел файла помощи, который будет отображаться
при выполнении приложения.
-
Метка (Label) - текстовое пояснение, выводимое вместе с полем (при отображении
информации в свободном формате) и режим выравнивания.
-
Заголовок (Header) - заголовок в экранной колонке (при отображении информации
в табличной форме) и режим выравнивания
-
Прочие параметры - шрифт, его размер и стиль, цвет текста и фона, комментарий.
На данном этапе работу с ERwin можно считать завершенной.
Перейдем к этапу генерации, который выполняется с помощью Visual Basic.
Для процесса генерации кода должны быть загружены обе программы (ERWin
и Visual Basic). Первым шагом необходимо создать новый проект Visual Basic
и подключить к нему два внешних файла (модуля) CONST40.BAS и ERWIN40.BAS,
расположенных в каталоге ERwin. Если Вы забудете добавить файлы, генерация
кода пройдет успешно, но проблемы возникнут на этапе компиляции приложения.
Используя пункт меню AddIns-ERwin-Form Wizard, начните процесс генерации.
Генерация кода производится по принципу Wizard. Для данной операции потребуется
от трех до пяти шагов:
1. Выбор таблицы (таблиц) для генерации кода - перенесите нужные таблицы
из левого списка в правый. Если в ERwin в данный момент открыто более одной
модели имеется возможность работы с любой из них, но только с одной, выбрав
ее в списке моделей. Нажмите кнопку Next.
2. Выбор дочерних таблиц (выполняется если выбрано более одной таблицы)
- выберите дочерние таблицы (из выбранных) для всех родительских таблиц,
приведенных в верхнем списке. Нажмите кнопку Next.
3. Выбор колонок для включения в форму - перенесите все необходимые
колонки из левого списка в правый для всех выбранных таблиц. Нажмите кнопку
OК для пропуска шага 4 или кнопку Next.
4. Установите стиль отображения таблиц с помощью выпадающего списка:
-
свободный (freeform) - в виде полей
-
табличный (grid).
Нажмите кнопку OК.
5. Задайте параметры для соединения с базой, имя и заголовок формы.
Нажмите кнопку OК.
Через некоторое время будет создана экранная форма, которая содержит
все выбранные таблицы и элементы для работы с базой данных (кнопки New,
Update, Delete и навигатор для перемещения по строкам), а также кнопку
Close. Результат работы можно увидеть на рисунке:
Если созданную форму сделать главной формой проекта, то при запуске приложения
будет предложено соединиться с базой данных (через ODBC). При успешном
соединении будет загружена данная форма. Не забудьте предварительно выполнить
генерацию структуры базы данных по модели данных.
К достоинствам данной технологии можно отнести очень быстрый процесс
разработки приложений. Практически не приходится писать одну из самых трудоемких
частей приложения - функции работы с базой данных, что значительно сокращает
время на разработку.
Конечно имеются и недостатки:
-
диалог соединения с базой данных будет вызываться на каждую созданную форму;
-
при изменении модели нет возможности синхронизации ее с формой.
-
необходимо написать дополнительный код при создании двух и более форм для
их вызова.
Учитывая все вышесказанное, можно сделать вывод, что для Visual Basic автоматическая
генерация кода приложения очень выгодна на этапе прототипирования для получения
быстрого результата. Полученный код в дальнейшей работе можно модифицировать
для использования в окончательном варианте приложения.
В заключение этого раздела приведу пример из личной практики. В процессе
чтения лекций по ERwin за два часа было создано работающее приложение,
состоящее из четырех форм, что произвело неизгладимое впечатление на Клиента.
PowerBuilder
По другому пути пошли разработчики ERwin при генерации кода для PowerBuilder.
Одна из основных задач построения модели данных - генерация структуры базы
данных. Резонно предположить, что правильнее всего в клиентском приложении
формировать ту часть, которая отвечает за работу с базой данных. Эта часть
в PowerBuilder реализована в виде объекта DataWindow, который отвечает
за взаимодействие приложения с БД через сформированные запросы. И именно
он создается ERwin при генерации кода для PowerBuilder.
В отличие от Visual Basic ERwin для PowerBuilder все делает сам без
загрузки последнего. Единственное условие - в AUTUEXEC.BAT должен быть
прописан путь к каталогу PowerBuilder, т.к. ERwin при генерации использует
динамические библиотеки PowerBuilder. Описанным выше способом установите
в качестве средства разработки PowerBuilder. ERwin работает с тремя версиями
PowerBuilder - 4.0, 5.0 и 6.0. Установите нужную версию. В поле PBL File
надо указать путь и имя файла (библиотеки Power Builder), в котором будут
создаваться DataWindow.
При работе с PowerBuilder ERwin имеет одну важную особенность: в структуре
БД создаются служебные таблицы для работы с PowerBuilder, называемые PB
Catalog. В них прописываются все элементы модели, а так же стили, форматы.
и начальные значения. Для правильной работы с таблицами в поле PB Catalog
Owner надо указать имя пользователя БД, под которым они были созданы. Если
таблицы в БД не созданы, не надо расстраиваться: ERwin будет нормально
работать с Power Builder и без них. Правда, при синхронизации структуры
БД ERwin будет формировать запросы по изменению данных в данных таблицах,
а значит будут выдаваться сообщения об ошибках. Но эти ошибки не мешают
нормальной генерации структуры, т.к. вышеуказанные запросы будут созданы
в конце скрипта.
Принцип работы с клиентской частью ERwin аналогичен работе с Visual
Basic. Надо также создать словари стилей,
форматов и начальных значений. Требуется описать свойства колонок в редакторе
колонок.
Есть некоторое отличие в стилях, объясняемое наличием PowerBuilder специфических
элементов управления, таких как Drop Down DataWindow. Я не буду останавливаться
на этом подробно, т.к. на мой взгляд программист, который решил воспользоваться
возможностью ERwin для генерации кода, наверняка знает их знает. Еще одним
отличием является присутствие во всех формах работы с клиентской частью
кнопки PB Sync. Она позволяет синхронизировать модель данных и приложение.
Наличие этой возможности отразилось на появлении дополнительных пунктов
в меню Client. Имеется возможность установки большого числа опций для настройки
синхронизации, по результатам которой можно формировать отчеты. К сожалению
синхронизация происходит на уровне стилей, форматов и т. п., но не затрагивает
DataWindow.
Процесс генерации DataWindow начинается выполнением пункта меню Client
- Create DW. Для генерации надо выбрать таблицы из модели данных и перенести
их в список выбранных таблиц. За один сеанс ERwin может создать несколько
DataWindow. Необходимо отметить тот факт, что нельзя создать DataWindow
из двух и более таблиц (организовать JOIN). Еще одной особенностью является
задание стиля отображения DataWindow. ERwin позволяет создать три стиля:
-
FreeForm - свободный стиль, отображение в виде полей
-
Grid - табличный стиль с разделением линиями
-
Tabular - табличный стиль со специальным разделением
Надо заметить, что стиль задается на все выбранные таблицы. Создание DataWindow
с различными стилями выполняется за несколько сеансов. Имя DataWindow будет
состоять из префикса (поле DataWindow Name Prefix) и имени таблицы. При
нажатии на кнопку Finish начнется непосредственно процесс генерации кода
приложения. Результат процесса будет выдан в виде сообщения с указанием
количества созданных DataWindow. При наличии в приложении DataWindow с
таким же именем, как у создаваемого, будет выдано предупреждение и пользователю
надо будет решить: создавать или нет DataWindow.
Второй вариант создания DataWindow - это использовать закладку Power
Builder редактора таблиц.
В этом случае будет создаваться DataWindow на конкретную таблицу. Имеется
возможность установки шрифтов для всей DataWindow (для данных, меток и
заголовков). Процесс генерации разбит на два шага:
-
задание стиля DataWindow
-
выбор колонок, участвующих в генерации
Пожалуй, все, что было сказано по поводу использования ERwin для генерации
кода на Visual Basic, можно сказать и для Power Builder. Можно еще отметить,
что генерация DataWindow очень удобна на начальном этапе кодирования, когда
за короткое время можно создать DataWindow на все таблицы модели. В дальнейшем,
как показывает опыт, в ходе разработки приложения придется неоднократно
изменять расположение полей в DataWindow под требования заказчика. Наличие
синхронизации приложения и модели несомненно можно отнести к достоинствам,
т.к. это шаг вперед по сравнению с Visual Basic.
Delphi
По сравнению с предыдущими средствами разработки Delphi не может напрямую
работать с ERwin. Посредником между ними выступил продукт фирмы gs-soft
MetaBase. На момент написания данной статьи MetaBase версии 3.0 может работать
только с ERwin 3.0 (пока нет поддержки ERwin 3.5).
Как взаимодействуют эти три продукта? Созданная с помощью ERwin модель
данных сохраняется в файле с расширением ERX (по умолчанию ERwin создает
файлы с расширением ER1). Формат ERX стандартизован и описывает модель
данных в текстовом формате. Применяется он для переноса моделей между разными
CASE-средствами и для организации доступа к моделям из пользовательских
приложений. Чтобы понять дальнейший процесс проектирования давайте определим
последовательность преобразования модели данных. Модель преобразуется в
метамодель MetaBase, которая хранится в файле специального формата. В метамодели
описываются свойства сущностей и атрибутов модели данных. Кроме того, MetaBase
содержит библиотеку компонент, которые помимо работы с базой умеют читать
метамодель. При построении проекта на Delphi с использованием данных компонент
не требуется настройка свойств, т. к. они описаны уже в метамодели. В чем
преимущество подобного подхода к проектированию. При изменении модели данных
потребуется только прочитать ее в MetaBase и изменить метамодель, настроив
свойства новых или измененных сущностей и атрибутов. Но сначала надо сделать
обратное проектирование метамодели в модель данных (чтобы в модели данных
сохранились все описанные в метамодели свойства). При запуске проекта на
Delphi все новые колонки или поля появятся в экранной форме. Пожалуй, потребуется
только изменить размер формы (если будут дополнительные поля).
Для работы с MetaBase необходимо запустить программу MetaGen.
Работа начинается с создания проекта (закладка Projects), для которого
надо задать следующие параметры:
-
название проекта
-
каталог, где будет расположен проект
-
каталог, где находится модель данных
-
имя базы данных (объявляется в BDE)
-
фильтр проекта - своего рода маска для имен файлов проекта.
На закладке Model выводится список файлов моделей данных, расположенных
в указанном каталоге и соответствующих фильтру. Необходимо выбрать одну
модель для проекта. Закладки Settings и Settings Codegen позволяют установить
дополнительные параметры для проекта.
Далее надо перейти на закладку Transfer. Нажатием кнопки Import модель
преобразуется в метамодель MetaBase. Чтобы иметь возможность редактировать
метамодель надо нажать кнопку Check Out. Для редактирования нажимается
кнопка MetaBase Editor. Для открытия доступа к метамодели надо нажать кнопку
Check In. Кнопкой Export выполняется процесс создания из метамодели модели
данных в формате ERX.
Редактор метамодели позволяет установить свойства сущностей и атрибутов
модели данных, которые сохраняются в метамодели:
-
метки
-
заголовки
-
домены
-
подсказки и т.д.
Особенностью MetaBase является возможность задания индивидуальных свойств
для каждого пользователя (при условии многопользовательской версии MetaBase),
т. о. каждый пользователь может увидеть свои заголовки колонок в таблице
и т. п.. Однопользовательская версия работает только с пользователем, имеющим
имя USER1. Данную особенность надо учесть при создании базы, . объявив
пользователя USER1 в БД.
В редакторе можно выполнить команды Check In и Check Out.
Следующим этапом надо создать новый проект в Delphi. Если создается
первый проект, предварительно надо установить компоненты MetaBase.
Компоненты устанавливаются командой Install Packages. Устанавливать надо
файл, расположенный в подкаталоге VCLGS того каталога, куда был установлен
MetaBase. Порядок создания формы для работы с MetaBase в Delphi практически
ничем не отличается от создания стандартной формы для работы с базой данных.
Отличие заключается только в используемых компонентах (названия компонент
MetaBase оканчивается на GS). В таблице приведена последовательность подключения
компонент в стандартном и рассматриваемом случае (рассмотрен самый простой
случай).
Стандартный |
Работа с БД с использованием
MetaBase |
Database *) |
MetabaseGS *) |
- |
MetaSourceGS |
Table или Query |
TableGS или QueryGS |
DataSource |
DataSourceGS |
DBGrid |
DBGridGS |
*) - использование необязательно
Для связи компонент в цепочку устанавливаются соответствующие свойства.
При установке свойства MetaBaseName в компоненте MetaSourceGS (надо установить
имя метамодели) для остальных компонент становятся доступными соответствующие
параметры и свойства метамодели. Например в компоненте TableGS для свойства
MetaEntityName появляется возможность выбора из списка сущностей метамодели.
После выбора сущности автоматически устанавливается свойство TableName,
т.к. в метамодели прописана связь имен сущностей и таблиц.
Преимуществами использования MetaBase является полное согласование модели
данных и кода приложения (при посредничестве метамодели), что значительно
упрощает процесс внесения изменений в процесс разработки информационных
систем. Можно отметить наличие индивидуальных настроек свойств для пользователей,
приводящее к повышению гибкости приложения К недостаткам можно отнести
более длительный процесс проектирования на начальной стадии и более сложную
структуру компонент для работы с базой данных. Пожалуй, есть еще один неприятный
момент: иногда возникают ошибки при чтении ERwin файла ERX, созданного
MetaBase, что практически сводит на нет весь круговорот разработки приложения.
Заключение
В заключение, подводя итоги, можно сказать, что CASE-средства не может
полностью создать приложение на основе модели данных, т.е. заменить программиста,
но оно может оказать большую помощь по ускорению процесса разработки приложений.
Использование CASE-средств для генерации кода приложений очень удобно на
начальном этапе создания приложения, этапе прототипирования, от которого
во многом зависит будет ли продолжена разработка информационной системы.
При этом создается основа приложения, содержащая значительную часть такого
сложного этапа, как разработка запросов для работы с БД. Поэтому доработка
приложения потребует меньше времени, чем разработка с нуля.
Координаты автора:
Учебно-консалтинговый центр Interface Ltd., тел. (095)135-55-00, 135-25-19,
mail@interface.ru
Interface Ltd.