Опубликован: 04.12.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 13:

Знакомство с DSM-платформой Microsoft DSL TOOLS

< Лекция 12 || Лекция 13: 123

Доменные свойства (Domain Propeties)

Определяя в метамодели DSL Tools класс (доменный, отношение, графический класс), разработчик может создать у него произвольное количество доменных свойств. Для доменных классов такие свойства используются при задании свойств предметной области. Например, если у нас есть доменный класс "Тип Оборудования", то его атрибуты "маркировка", "изготовитель" и "описание" будут доменными свойствами. Для графических классов доменные свойства позволяют определить характеристики этих классов, связанные с метамоделью, в то время как декораторы определяют свойства таких классов, связанные с графическими характеристиками фигур.

Каждое такое свойство имеет следующие группы атрибутов:

  • Code - характеристики данного свойства как свойства C# -класса; дело в том, что созданный в DSL-дизайнере класс будет превращен при генерации в C# -класс, а его свойства - в C# -свойства этого класса; группа атрибутов code определяет различные C# -характеристики данного свойства, например, его видимость ( public protected и т. д.);
  • Definition - определение таких характеристик доменного свойства, как его имя (Name), значение по умолчанию ( Default Value ), быть именем класса или нет ( Is Element Name ) - если да, тогда генератор обеспечит уникальность имен по умолчанию на диаграммах будущего графического редактора; еще один атрибут из этой группы - Kind, который может принимать значения normal или calculated ; в последнем случае у нас имеется вычисляемое свойство, которое задается некоторым кодом на языке C#, прилагаемом к метамодели;
  • Resources - дополнительные C#-характеристики свойства.

Рассмотрим пример calcutated-свойства. Одно такое свойство присутствует на рис. 13.8 - это свойство класса Transition под названием ComplexTransition. Оно задает текст на линии, обозначающей переход между двумя состояниями. Этот текст, во-первых, "собирается" из нескольких доменных классов и отношений, во-вторых, имеет сложное форматирование. Ниже представлен фрагмент кода на языке C#, который определяет правило вычисления и форматирования этого свойства:

public partial class Transition
{
 public string  GetComplexCaptionValue()
 {
  string result = string.Empty;
   result += string.Format(@"{0}/{1};{2}{3}",
     this.InvokedBy == null ? string.Empty : this.InvokedBy.Name,
      this.Signal == null ? string.Empty : this.Signal.Name,
       Environment.NewLine,
         this.Method == null? string.Empty : this.Method.Name);                    
   return result;
 }
}
Листинг 13.1.

Здесь используется механизм частичных классов языка C#, с помощью которого доопределяется класс Transition, автоматически генерируемый по классу Transition. Данный текст записывается в отдельный файл, который помещается в проекте Dsl.

Декоратор (Decorator)

Свойства такого типа могут встречаться у графических классов DSL-метамодели. У одного класса их может быть несколько, например, одно - для определения изображения имени фигуры на диаграмме, другое - для задания свойств текстовой секции фигуры (например, атрибут Collapse, который позволяет отображать такие секции на фигуре в двух режимах - в "схлопнутом" и развернутом виде). На рис. 13.7 у графического класса StateShape есть декоратор StateName, определяющий способ изображения имен состояний, которые будут создаваться в целевом графическом редакторе.

Декораторы бывают следующих видов:

  • текст ( text );
  • изображение ( icon );
  • "схлопывающаяся" область ( Expand Collapse ).

Кроме того, свойства декоратора отличаются для фигуры и соединителя.

Вот основные группы атрибутов декоратора:

  • Appearance - настройка шрифтов изображения;
  • Definition - имя в коде и в метамодели;
  • Layout - задание расположения текста;
  • Documentation - примечания метамодели;
  • Resources - настройка отображаемого текста.

Настройка палитры

На рис. 13.11, слева, можно увидеть палитру ( toolbox ), в которой перечислены все конструкции нового языка, которые можно создавать на диаграммах. При активации элемента Edit/Toolbox в браузере вызывается инструмент для задания палитры: создаются ее элементы, которые связываются с соответствующими классами метамодели языка, задается иконка и другие свойства. Аналогичным образом настраивается и браузер целевого редактора.

В итоге…

На рис. 13.12 показан внешний вид целевого редактора, сгенерированный для языка SCL. Сравните это с рис. 13.7 предыдущей лекции.

SCL-редактор

увеличить изображение
Рис. 13.12. SCL-редактор

Контрольные вопросы

  1. Расскажите о тех задачах, для решения которых, по вашему мнению, предназначен пакет DSL Tools.
  2. На вашем компьютере установлена Visual Studio. Опишите ваши действия по подготовке DSL Tools к работе. Проделайте эти действия.
  3. На вашем компьютере пакет DSL Tools готов к работе. Опишите ваши начальные действия, вплоть до открытия рабочего окошка DSL Designer. Проделайте эти действия.
  4. Почему целесообразно создавать метамодель нового DSL с помощью UML, вне DSL Tools, и только после ее завершения перенести ее DSL Tools?
  5. Сформулируйте, для чего предназначены доменные классы DSL Tools.
  6. Выскажите свое мнение о том, зачем в DSL Tools ассоциации изображаются с помощью специальных классов.
  7. Опишите виды графических классов, используемых в DSL Tools для создания метамодели нового языка.
  8. Как в метамоделях DSL Tools реализуется связь доменных графических классов?
  9. Для задания какой информации используется доменное свойство?
  10. Для задания какой информации используется декоратор?
  11. Приведите пример вставки собственного кода в проект нового редактора, разрабатываемого с помощью DSL Tools. Попробуйте написать, вставить и протестировать (в составе итогового редактора) собственный "ручной" код.
  12. Зачем в DSL Tools используется валидация?
  13. Попробуйте оценить (отдавая отчет в недостаточности имеющейся у вас информации!) эффективность использования DSL Tools в промышленном проекте. Постарайтесь определить минимальный нижний порог сочетания "объем проекта/компетентность специалистов" для того, чтобы пакет DSL Tools "выстрелил".
  14. Вам предложили реализовать в DSL Tools язык UML. Возможно ли будет это сделать? Что облегчит, а что затруднит вашу работу?
< Лекция 12 || Лекция 13: 123
Ольга Зырянова
Ольга Зырянова

Здравствуйте, не могу найти ссылку на скачивание курса  «Визуальное моделирование: теория и практика»

 

Номер платежа 6400454020565

Анна Митюрёва
Анна Митюрёва

http://www.intuit.ru/studies/courses/1041/218/info

С мобильного приложения доступ есть, а через сайт не отображается. Печально =(

Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург
Игорь Лука
Игорь Лука
Молдова, Республика, Кишинев