(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

AllFusion ERwin Data Modeler API - это проще, чем кажется

Зайцев С.Л.

Обновленный программный интерфейс приложения (API) продукта AllFusion ERwin Data Modeler (ранее: ERwin) (версии 4.0 SP2 или более поздней) намного проще в использовании по сравнению со своим предшественником. В этой статье даются некоторые основные советы о начале работы с данным API, которые можно рассматривать как введение в "Справочное руководство API".

Перед чтением данной статьи следует убедиться в том, что установлены все компоненты, необходимые для использования AllFusion ERwin Data Modeler API. Устанавливая AllFusion ERwin Data Modeler версии 4.0 SP2 или более поздней, нужно выставить флажок для установки утилиты ERwin Spy Utility и ERwin API Sample Client. Эти компоненты устанавливаются в подкаталог "\Samples" основного каталога установки.

Более простая и согласованная модель объектов делает AllFusion ERwin Data Modeler API версии 4 проще в эксплуатации, чем ERwin версии 3.5. Ниже перечислены некоторые улучшения.

Парные объекты (таблицы, столбцы и индексы) удалены, остались только категории, атрибуты и ключевые группы.
Категории, атрибуты и ключевые группы теперь имеют логические и физические свойства, подобно доменам в API версии 3.5.
В API версии 3.5 использовались свойства, атрибуты и признаки для представления информации, связанной с объектами модели. API версии 4 использует только свойства.
Проблемы с обработкой многозначных свойств были разрешены благодаря новому, более простому и единообразному методу.

Это только несколько основных отличий между API версий 3.5 и 4. Однако код для версии 3.5 может быть беспрепятственно перенесен в версию 4. Такой переход к новому API выполняется очень несложно и код, получающийся в версии 4, будет проще.

Основная структура API версии 4 столь же проста и однородна, как и в версии 3.5.

  1. Работа ведется с объектами и коллекциями объектов.
  2. Объекты подразделяются на родительские и дочерние. Последние являются коллекцией объектов, для которых корневыми объектами (называемыми контекстом) являются родительские.
  3. Создание объектов осуществляется добавлением их в коллекцию с одним из родительских объектов в качестве контекста.
  4. При работе с уровнями модели нужно понимать, что объект на одном уровне дает коллекцию объектов на следующем уровне.

Одним из сходств API версий 4 и 3.5 является то, что оба они основаны на модели компонентных объектов Microsoft (COM) и фактически являются COM-серверами. Это означает, что любые инструменты, совместимые с COM, могут быть использованы для разработок с использованием API. Например, можно применять такие инструменты как Visual Basic, Visual C++, Delphi и другие. В примерах данной статьи используется VB, чтобы сделать представление материала более простым и понятным. Перед началом работ с AllFusion ERwin Data Modeler API, используя VB, необходимо добавить в текущем проекте ссылку на файл SCAPI.dll, который является COM-сервером динамически подсоединяемых библиотек (DLL).

Как и в API версии 3.5, можно использовать версию 4 для разработки дополнительных функций. Дополнительные функции активируются с помощью опции Add-In в меню Tools программы AllFusion ERwin DM и могут быть использованы для работы с моделями, открытыми в программе. API можно также использовать для разработки автономных программ, работающих с моделями, которые открывают сами программы.

Фактически нет ограничений для расширений и интеграции, которые можно разрабатывать с помощью ERwin API.

Модель объектов в API версии 4

В этой статье будут обсуждаться три уровня API версии 4:

уровень приложения;
уровень сессии;
уровень модели.

Уровень приложений содержит четыре объекта, с которыми будет вестись работа:

объект приложения;
коллекция постоянных модулей;
объект постоянного модуля;
пакет свойств.

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

Постоянным модулем является либо модель ERwin DM, либо предметная область модели ERwin DM. Таким образом, коллекция постоянных модулей представляет уже открытые модели и используется либо для выбора открытой модели, либо для задания новой модели посредством добавления нового объект в коллекцию. Для того чтобы добавить новый объект в коллекцию можно использовать следующий код:

'Открытие новой модели через добавление объекта в коллекцию постоянных модулей

Однако если попытаться добавить объект к уже открытой модели, то возникнет ошибка "модель уже открыта в памяти". Для проверки того, открыта модель или нет, можно использовать следующую функцию:

Эта функция помимо того, что показывает, насколько легко проводить итерацию по всей коллекции, также реализует нужную операцию. Имя открытой модели содержит только имя файла, а не весь путь к нему. Это является некоторой проблемой, так как имя модели не уникально. Поэтому нужно использовать свойство Locator, которое задается префиксами "erwin://" или "mmart://" перед полным именем. Сама модель имеет свойство "file name", которое в принципе можно было бы использовать, но оно требует открытия модели. Поэтому использование локатора более эффективно.

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

Уровень сессии содержит объект Session и коллекцию Sessions. Для уровня сессии можно использовать следующий код:

Если метод Open был выполнен успешно, то практически можно начинать работать с моделью. (Параметр SCD_SL_MO указывает уровень модели. M1 определяет уровень метамодели для доступа к данным метамодели. Для манипулирования моделями всегда используется параметр M0).

Чтобы работать с моделью дальше, нужно инициировать транзакцию. Это очень важный шаг. Если транзакция не будет начата, то при первой же попытке обновить любое из свойств возникнет ошибка. Активизация транзакции не будет успешной, если сессия закрыта или недействительна. Так же нужно следить за тем, чтобы идентификатор транзакции возвращался методом Open. Для безопасного и простого обращения с транзакциями лучше использовать следующие функции (здесь также используются некоторые особенности VB):

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

Производительность может пострадать, если будет слишком много обновлений не прошедших фиксацию. Тест на портативном компьютере с частотой процессора 500 МГц и ОЗУ 512 МВ показал, что проведение фиксации после 100-200 обновлений является оптимальным. Наличие 5000 и более обновлений без фиксации может существенно увеличить время прогона программы, в некоторых случаях вплоть до 5-10 раз. Оптимальный выбор проведения фиксации может зависеть от конкретного приложения.

Теперь обратимся к уровню модели, который содержит активные объекты. Ниже перечислены объекты, принадлежащие уровню модели.

Объект модели и коллекции объектов модели.
Объект свойств модели и коллекции свойств объектов модели.
Объект значения свойства модели и коллекции объектов значений свойств модели.

Доступ к объекту осуществляется с помощью коллекции объектов модели, возвращаемой методом ModelObjects уровня модели, или через коллекцию подмножеств, которую создает программный код, использующий метод Collect. Например, доступ к предметной области можно получить следующим образом:

Метод ModelObjects возвращает коллекцию объектов модели целиком, тогда как ModelObjects.Root дает только родительские или контекстные объекты из всей коллекции. Для того чтобы создать новую предметную область, нужно просто добавить новый объект к данной коллекции:

Добавление нового атрибута к сущности в точности соответствует той же парадигме. Следующие функции осуществляют это совместно:


Эта функция облегчает использование API. В функции CreateAttribute новый атрибут сущности создается простым добавлением его в коллекцию атрибутов данной сущности.

Доступ к элементам коллекции объектов осуществляется следующим образом:

Можно заметить, что присвоение значений выполняется для элементов коллекции свойств (например "A.properties.item(NameProperty)"), а не напрямую через "A.Name". Кроме того, присвоение значений свойствам всегда происходит в массивах (например, A.Properties.Item(NameProperty).Value(0) = Name). Это получается из-за того, что все значения свойств потенциально многозначны. Легко проверить, является ли свойство многозначным:


Если значение не является скаляром, то назначение осуществляется нулевому элементу, как было показано выше. Если оно - скаляр, то число элементов можно получить с помощью свойства Count. Например, следующая функция обращает значение массива в коллекцию:

Для доступа к свойствам используется метод HasProperty:


Другая ценная возможность API версии 4 - метод FormatAsString. Рассмотрим следующий пример:

в качестве альтернативы коду:

В этом случае, в результате будут возвращены идентификаторы объектов источников данных. Тогда, для получения объекта нужно использовать следующую функцию:

Однако если используется метод FormatAsString, API дает нужную интерпретацию даже тогда, когда значение типа "строка" и значения свойств разделены запятой.

В конечном итоге, важно помнить о том, что утилита ERwin SPY снабжена интерфейсом API для того, чтобы облегчить исследование того, как в точности назначены свойства, какие свойства существуют и какие являются обязательными. Эта утилита очень полезна при работе с API. Для получения более подробной информации рекомендуется обратиться к "Справочному руководству API" (ERwinAPI.pdf), которое находится в подкаталоге "\docs" основного каталога установки.



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции ERwin »
Написать редактору 
 Рекомендовать » Дата публикации: 29.05.2003 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
erwin Data Modeler Navigator Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
erwin Data Modeler Workgroup Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
erwin Data Modeler Standard Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
Quest Software. TOAD Professional Edition
IBM Rational Method Composer Authorized User License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
CASE-технологии
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Где взять лицензионный ключ для AllFusion Process Modeler (BPwin) 7? (6)
Выручайте!!! где найти ключ, ужасно срочно нужна программа. заранее спасибо!
 
Как в IBM Rational DOORS сделать заголовки не жирным шрифтом? (2)
Измучился уже, когда идет иерархия уровнем ниже, чем Х.Х., мне нужно, чтобы заголовки не...
 
Русификация рамки IDEF0 BPWin4 (44)
Возможно ли русифицировать рамку диаграмм в BPWin4?
 
Как выбрать матрас (6)
Подскажите как правильно выбрать матрас и на что в целом следует обратить внимание на ваш...
 
Дезинфекция авто (2)
Я бизнесмен у меня большой автопарк автомобилей и так как я беспокоюсь за здоровья пассажиров то...
 
 
 



    
rambler's top100 Rambler's Top100