Пример: преобразование типов в Rational Rhapsody

Преобразование типов улучшает результаты запроса и позволяет Rational Publishing Engine интерпретировать тип схемы .xsd как другой тип, подобно операциям преобразования типов в языках программирования. Тип не сопоставляется с элементами схемы, которые могут иметь несколько допустимых типов. Определить типы для элементов схемы можно с помощью функции привести к типу на панели схемы источника данных.

Прежде чем начать

В Rational Publishing Engine 1.2 и более ранних версий оператор cast можно применить только к последнему сегменту запроса. Примеры запросов:
  • Правильный: Packages/Packages/NestedElements/ModelElement(Class)
  • Неправильный: Packages/Packages/NestedElements/ModelElement(Class)/Attributes
Для того чтобы сделать второй пример запроса допустимыми в Rational Publishing Engine 1.2, необходимо разбить его на два запроса:
  • $1 - Packages/Packages/NestedElements/ModelElement(Class)
  • $2 - $1/Attributes

В Rational Publishing Engine 1.2.0.1 оператор cast можно применить к любому сегменту запроса.

Об этой задаче

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

Процедура

  1. На панели Палитра перенесите элемент Значок контейнера Контейнер в редактор содержимого шаблона.
  2. На панели Схема источника данных перенесите класс ownedMember в элемент контейнера.
  3. Необязательно: Назовите контейнер Контейнер класса для облегчения ссылки на него.
  4. Щелкните на значке Значок приведения к типу Привести к типу для добавления типа Class для ownedMember.
  5. Добавьте элемент Значок абзаца Абзац под элементом контейнера.
  6. На панели Схема источника данных перенесите атрибут Name(string) в Контейнер класса, чтобы добавить имя пакета.

Комментарии