Настройка и расширение языка для конкретного домена

Пакет SDK для моделирования и визуализации Visual Studio (VMSDK) предоставляет несколько уровней, на которых можно определить средства моделирования:

  1. Определите язык для конкретного домена (DSL) с помощью схемы определения DSL. Вы можете быстро создать DSL с схематической нотацией, доступной для чтения xml-формой и основными инструментами, необходимыми для создания кода и других артефактов. Дополнительные сведения см. в разделе "Определение языка для конкретного домена".

  2. Настройте DSL с помощью более сложных функций определения DSL. Например, можно создать дополнительные ссылки, когда пользователь создает элемент. Эти методы в основном достигаются в определении DSL, а некоторые требуют нескольких строк кода программы.

  3. Расширение средств моделирования с помощью кода программы. VMSDK разработан специально для того, чтобы облегчить интеграцию расширений с кодом, который генерируется из определения DSL. Дополнительные сведения см. в статье "Написание кода для настройки языка для конкретного домена".

Примечание.

При обновлении файла определений DSL не забудьте щелкнуть "Преобразовать все шаблоны" на панели инструментов Обозреватель решений перед перестроения решения.

Ссылки на статьи

Для достижения этого эффекта См. этот раздел
Разрешить пользователю задавать свойства цвета и стиля фигуры. Щелкните правой кнопкой мыши фигуру или класс соединителя, наведите указатель мыши на добавление предоставленного объекта и щелкните элемент.
Различные классы элемента модели выглядят примерно так, как на схеме, совместное использование свойств, таких как начальная высота и ширина, цвет, подсказки. Используйте наследование между фигурами или классами соединителей. Сопоставления между производными фигурами и производными классами домена наследуют сведения о сопоставлении родителей.

Или сопоставить разные классы домена с тем же классом фигуры.
Класс элемента модели отображается различными контекстами фигур. Сопоставить несколько классов фигур с одним и тем же классом домена. При создании решения следуйте отчету об ошибке и укажите запрошенный код, чтобы решить, какая фигура будет использоваться.
Цвет фигуры или другие функции, такие как шрифт, указывают текущее состояние. Сведения об обновлении фигур и Подключение для Рефлексия модели.

Создайте правило, которое обновляет предоставленные свойства. См . статью "Правила распространения изменений в модели".

Кроме того, используйте OnAssociatedPropertyChanged() для обновления непреднамеренных функций, таких как стрелки ссылок или шрифт.
Значок изменения фигуры для указания состояния. Задайте видимость сопоставления декоратора в окне сведений о DSL. Найдите несколько декораторов изображений в одной позиции. Сведения об обновлении фигур и Подключение для Рефлексия модели.

Или переопределите ImageField.GetDisplayImage(). См. пример в ImageField.
Настройка фонового изображения на любой фигуре Переопределите InitializeInstanceResources() для добавления привязки ImageField.
Вложенные фигуры в любую глубину Настройте рекурсивное дерево внедрения. Определите BoundsRules, чтобы содержать фигуры.
Подключите соединители в фиксированных точках границы элемента. Определите внедренные элементы терминала, представленные небольшими портами на схеме. Используйте BoundsRules, чтобы исправить порты на месте. См. пример схемы в пакете SDK для визуализации и моделирования.
Текстовое поле отображает значение, производное от других значений. Сопоставляйте декоратор текста с свойством домена вычисляемого или пользовательского служба хранилища. Дополнительные сведения см. в разделе "Вычисляемые и настраиваемые свойства служба хранилища".
Распространение изменений между элементами модели или между фигурами См . проверку на языке для конкретного домена.
Распространение изменений в ресурсы, такие как другие расширения Visual Studio за пределами хранилища. См. раздел "Обработчики событий", распространяющие изменения за пределами модели.
Окно свойств отображает свойства связанного элемента. Настройка пересылки свойств. См. раздел "Настройка окна свойств".
Категории свойств Окно свойств делится на разделы, называемые категориями. Задайте категорию свойств домена. Свойства с тем же именем категории будут отображаться в том же разделе. Вы также можете задать категорию роли связи.
Управление доступом пользователей к свойствам домена Задайте значение false для просмотра, чтобы предотвратить отображение свойства домена в окно свойств во время выполнения. Вы по-прежнему можете сопоставить его с декораторами текста.

Только для чтения пользовательского интерфейса пользователи не могут изменять свойство домена.

Доступ к свойству домена программ не затрагивается.
Измените имя, значок и видимость узлов в обозревателе моделей DSL. См. статью "Настройка модели Обозреватель".
Включение копирования, выреза и вставки Задайте свойство Enable Copy Paste узла редактора в Обозреватель DSL.
Копирование ссылочных ссылок и их целевых объектов при копировании элемента. Например, скопируйте примечания, присоединенные к элементу. Задайте свойство "Распространение копирования" исходной роли (представлено строкой в одной стороне связи домена на схеме определения DSL).

Напишите код, чтобы переопределить ProcessOnCopy, чтобы добиться более сложных эффектов.

См. статью "Настройка поведения копирования".
При удалении элемента, повторном использовании или повторном связывании связанных элементов. Задайте значение "Распространение удаления" роли связи. Для более сложных эффектов переопределение ShouldVisitRelationship и ShouldVisitRolePlayer методы в MyDslDeleteClosure классе, определенные в DomainModel.cs.
Сохраните макет фигуры и внешний вид при копировании и перетаскивании. Добавьте фигуры и соединители в скопированные ElementGroupPrototype. Самый удобный метод переопределения— ElementOperations.CreateElementGroupPrototype()

См. статью "Настройка поведения копирования".
Вставьте фигуры в выбранное место, например в текущее положение указателя. Переопределите ClipboardCommandSet.ProcessOnCopy() , чтобы использовать версию для конкретных расположений ElementOperations.Merge(). в разделе "Настройка поведения копирования".
Создание дополнительных ссылок для вставки Переопределите ClipboardCommandSet.ProcessOnPasteCommand()
Включение перетаскивания из этой схемы, других DSLs и элементов Windows Практическое руководство. Добавление обработчика перетаскивания
Разрешить перетаскивать фигуру или инструмент на дочернюю фигуру, например порт, как если бы она была перетаскивалась на родительский элемент. Определите директиву слияния элементов в целевом классе объектов, чтобы перенаправить удаленный объект в родительский объект. См. раздел "Настройка создания и перемещения элементов".
Разрешить перетаскивание фигуры или инструмента на фигуру и создание дополнительных связей или объектов. Например, чтобы разрешить удаление комментария на элемент, к которому она должна быть связана. Определите директиву слияния элементов для целевого класса домена и определите создаваемые ссылки. В сложных случаях можно добавить пользовательский код. См. раздел "Настройка создания и перемещения элементов".
Создайте группу элементов с одним инструментом. Например, компонент с фиксированным набором портов. Переопределите метод инициализации панели элементов в ToolboxHelper.cs. Создайте прототип группы элементов (EGP), содержащий элементы и их связи. См. статью "Средства настройки" и панели элементов.

Включите фигуры субъекта и порта в EGP или определите BoundsRules, чтобы разместить фигуры порта при создании экземпляра EGP.
Используйте одно средство подключения для создания экземпляра нескольких типов связей. Добавьте директивы Подключение связи (LCD) в построитель Подключение ion, вызываемый средством. LCD определяют тип связи из типов двух элементов. Чтобы сделать это зависят от состояний элементов, можно добавить пользовательский код. См. статью "Средства настройки" и панели элементов.
Липкие инструменты — пользователь может дважды щелкнуть любое средство, чтобы создать множество фигур или соединителей в последовательности. В Обозреватель DSL выберите Editor узел. В окно свойств задайте элементы панели элементов с помощью липких элементов.
Определение команд меню Практическое руководство. Изменение команды "Стандартное меню"
Ограничение модели правилами проверки См. проверку на языке, относяющемся к домену
Создайте код, файлы конфигурации или документы из DSL. Создание кода из доменного языка
Настройка сохранения моделей в файле. См. статью "Настройка файлов служба хранилища и сериализации XML"
Сохранение моделей в базах данных или других носителях. Переопределите DocData yourLanguage

См. статью "Настройка файлов служба хранилища и сериализации XML"
Интегрируйте несколько DSL, чтобы они работали в рамках одного приложения. См. статью "Интеграция моделей с помощью Visual Studio Modelbus".
Разрешите вашему DSL расширить сторонними лицами и управлять расширением. Расширение доменного языка с помощью MEF

Совместное использование классов в различных доменных языках с помощью библиотеки доменных языков

Определение политики блокировки для создания сегментов, доступных только для чтения

Примечание.

Компонент Text Template Transformation (Преобразование текстовых шаблонов) автоматически устанавливается как часть рабочей нагрузки разработки расширений Visual Studio. Его также можно установить на вкладке Отдельные компоненты Visual Studio Installer в категории Пакеты SDK, библиотеки и платформы. Установите компонент Пакет SDK для моделирования со вкладки Отдельные компоненты.