Преобразование типов улучшает результаты запроса и
позволяет
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. Различие между запросом преобразования и запросом по фильтру в том, что запрос преобразования предоставляет доступ к дочерним элементам и атрибутам приведенного типа, а запрос по фильтру нет.
Прим.: Источники данных IBM® Rational Tau и IBM Rational Rhapsody поддерживают преобразование типов.
Процедура
- Перетащите элемент
Контейнер в редактор материалов шаблона.
- В представлении Схема источника данных перетащите класс ownedMember в шаблон.
- Присвойте имя контейнеру Контейнер класса для быстрого доступа.
- Щелкните на значке
и выберите тип
Класс для ownedMember.
- Перетащите элемент
Абзац и поместите его ниже элемента контейнера, добавьте имя пакета в Контейнер класса, перетащив атрибут Имя(строка).
- Перетащите элемент
Текст в редактор материалов шаблона.
- Из представления Схема источника данных перетащите статический текст (Активный) в элемент Текст.
- Щелкните правой кнопкой мыши на элементе Текст и выберите .
- В окне Задать условие для текущего элемента разверните узел Атрибуты и включите переключатель для атрибута IsActive.
- Для поля Левый операнд выберите
IsActive.
- Для поля Оператор выберите Равно.
- Для поля Правый операнд введите
true.
- Выберите Добавить. Условие показывается как: IsActive ==
"true"
- Нажмите кнопку OK.
Результаты
Добавление преобразования Класс в элемент ownedMember пакета позволяет определить следующий запрос, возвращающий только определения, являющиеся классами того же контекста: