Поделиться через


Определение доменного языка

Чтобы определить доменный язык (DSL) создается a Visual Studio решение из шаблона.Ключевой части решения схема определения DSL, которая хранится в DslDefinition.dsl.Определение DSL определяет классы и фигуры DSL.После изменения и добавление к этим элементам можно добавить программный код настраивать DSL более подробно.

Для новичков в DSLs, рекомендуется работы посредством DSL Tools Lab, который можно найти в этом сайте. Пакет SDK для Visualizaton и моделирования

Содержание раздела

Выбрать решение шаблона

Шаблоны для указания DSL

Классы элемента модели

Фигуры на схеме

Ссылки и соединителей

Фигуры, которые содержат списки: фигуры секции

Порты на границе другой фигуры

Дорожки

Типы свойств

Настраивать свой DSL

Устранение неполадок

Выбрать решение шаблона

Чтобы определить DSL, необходимо установить следующие компоненты:

Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185579

SDK для Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185580

Пакет SDK для визуализации данных и моделирования Visual Studio

https://go.microsoft.com/fwlink/?LinkID=186128

Чтобы создать доменный язык создании новой Visual Studio решение с помощью шаблона проекта доменного языка.

Создание решения DSL

  1. Создайте решение с Доменный язык шаблон, который можно найти вниз Другие типы проектов и расширяемость в Создать проект диалоговое окно.

    Создание диалогового окна DSL

    При щелчке OK" Мастер доменного языка открытые и отображает список решений DSL шаблона.

  2. Щелкните каждый шаблон, чтобы просмотреть описание.Выберите решение, в наибольшей степени напоминает, что требуется создать.

    Каждый шаблон DSL определяет базовый рабочий DSL.Редактировании этот DSL в соответствии с собственными требованиями.

    Щелкните каждый пример дополнительные сведения.

    • Выберите Поток для задачи создание DSL, имеющий отслеживания.Вертикальные и горизонтальные секции отслеживания схемы.

    • Выберите Модели компонентов создание DSL, имеющий порты.Порты маленьких фигур на краю больший фигуры.

    • Выберите Схемы классов указать DSL, который содержит фигуры секции.Фигуры секции содержат списки элементов.

    • Выберите Минимальный язык в других случаях или если неуверены.

      ПримечаниеПримечание

      Если требуется создать схему классов или схема компонентов, рассмотрите возможность использование моделей UML.Средств моделирования UML предоставляют набор схем, которые интегрируются вокруг одной модели.Они являются расширяемыми и могут быть встроены в ваших DSL с помощью ModelBus.Дополнительные сведения см. в разделе Разработка моделей для программного проектирования.

    • Выберите Минимальный конструктор WinForm OR Минимальный конструктор WPF создание DSL, отображаемый в области форм Windows Forms и WPF.Можно написать код для определения редактора.Дополнительные сведения см. в следующих разделах.

      Создание доменного языка на основе Windows Forms

      Создание доменного языка на основе WPF

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

    • Выберите расширение имени файла, которое не связано ни с каким приложением в компьютере или на любом компьютере, где нужно устанавливать DSL.Например, docx и htm является неприемлемыми расширений имени файла.

    • Мастер предупредит если расширение, введенный используется в качестве DSL.Рекомендуется использовать другое расширение имени файла.Можно также сбросить экземпляр Visual Studio SDK экспериментальном, чтобы очистить старые экспериментальном конструкторы ожидания.Нажать Запускщелкните Все программы" Пакет SDK для Visual Studio 2010" Сервиси Сбросить экземпляр Microsoft Visual Studio 2010 экспериментальном.

  4. Можно настроить параметры на других страницах или оставьте значения по умолчанию.

  5. Нажмите кнопку Готово.

    Мастер создает решение, которое содержит 2 или 3 проектов и создает код из определения DSL.

Пользовательский интерфейс теперь похожа на следующее изображение.

конструктор dsl

Это решение задает язык для домена.Дополнительные сведения см. в разделе Обзор пользовательского интерфейса средств доменных языков.

Bb126581.collapse_all(ru-ru,VS.110).gifПроверьте решения

Решение шаблона обеспечивает работу DSL, который можно изменить и использовать в качестве его.

Чтобы проверить решение, нажмите клавишу F5 " или " CTRL+F5.Новый экземпляр Visual Studio открытые в экспериментальном режиме.

в новом экземпляре Visual Studioв обозревателе решений откройте файл образца.Он открывается в виде схемы, на панели элементов.

Если запустить решение, созданное из Минимальный язык шаблон, в экспериментальном Visual Studio будет выглядеть примерно так:

Bb126581.DSL_min(ru-ru,VS.110).png

Поэкспериментируйте со средствами.Создайте элементы и подключите их.

Закройте экспериментальный экземпляр Visual Studio.

ПримечаниеПримечание

При изменении DSL, больше не будут отображаться фигуры в тестовом файле выборки.Однако можно создать новые элементы.

Bb126581.collapse_all(ru-ru,VS.110).gifИзменение шаблона DSL

Переименуйте и сохраните некоторые или все классы доменных классы и фигуры в определении DSL шаблона.Собственные имена нового класса должны быть допустимыми именами среды CLR, без пробелов и символов пунктуации.

Особенно удобно хранить эти классы:

  • Корневой класс отображается на верхн-левую сторону схемы определения DSL, вниз Классы и связей.Переименуйте его в имени отличающемуся от DSL.Например, MusicLibrary с именем DSL может содержать корневой класс с именем " музыка ".

  • Класс схемы отображается на более низкое право схемы определения DSL, в Элементы схемы столбец.Можно прокрутить вправо для просмотра его.Обычно оно называется YourDslСхема.

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

Удалите или переименуйте другие классы в соответствии с требованиям.

Шаблоны для указания DSL

Рекомендуется начинать DSL, добавив или обработка одна или две функции.Добавьте функцию, выполните DSL и проверьте его, а затем добавьте один или два дополнительных функций.Обычная функция для DSL может быть:

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

  • Свойства домена доменного класса и оформителей, которые отображают их на форму.

  • Отношение ссылки и соединитель, который отображает его на схеме и средстве соединителя, которое позволяет пользователям создавать ссылки.

  • Настройка которая требует программного кода, например ограничение проверки или команду меню.

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

ПримечаниеПримечание

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

На следующем рисунке показаны классы и часть связей DSL, который используется в качестве примера в этом разделе.

Внедрение связей и установка ссылок на них

Следующая диаграмма модели DSL примеры этого.

Модель экземпляра созданного DSL

ПримечаниеПримечание

"Модель" относится к экземпляру вашего DSL, пользователями и обычно отображается как схема.В этом разделе обсуждаются и схему определения модели DSL и схем, которые представлены при DSL используется.

Указание доменных классы

Доменные классы представляют основные понятия вашего DSL.Экземпляры элементы модели.Например, в MusicLibrary DSL может содержать именованные классы доменных Альбомом и песней.

Чтобы создать доменный класс можно перетащить из Доменный класс, именуемый средство к схеме, а затем переименовывает класс.

Дополнительные сведения см. в разделе Свойства доменных классов.

Bb126581.collapse_all(ru-ru,VS.110).gifСоздайте внедрения связь для каждого доменного класса

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

В модели каждый элемент модели узел в одном дереве внедрение связи.Источник и целевой объект связи часто называются содержит родительский элемент и дочерний элемент.

Выделение родительского элемента зависит от доменного класса как требуется время существования его элементов зависит от других элементов.Если узел дерева удален, то его поддерево обычно удаляются.Классы элемента, имеющих независимое существование поэтому внедренные непосредственно под корневым классом.

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

В шаблонах определения DSL, описанные в этом разделе, подразумевается, что элементы, отображаемые в контейнере будут удалены, когда контейнер будет удален.Более сложные схемы возможны и могут быть достиганы путем указания правил.

Отображается как элемент

Родительский класс (внедрения)

Пример в шаблоне решения DSL

Фигуры на схеме.

Запись.

Корневой класс DSL.

Минимальный язык.

Поток задачи: класс субъектов.

Фигура в отслеживания.

Доменный класс элементов, которые отображаются в виде отслеживания.

Поток задачи: класс задачи.

Элемент списка в фигуре, когда элемент удаляется, если контейнер удален.

Порт на краю формы.

Доменный класс, который сопоставляется к фигуре контейнера.

Схема классов: класс атрибутов.

Схема компонентов: класс порта.

Элемент в списке, если контейнер не удалянном удален.

Корневой класс DSL.

Отображает список связей ссылок.

Не напрямую.

Класс формы, что его часть.

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

Чтобы создать доменный класс и его внедрения одновременно, щелкните Внедрение связи средство, затем щелкните родительский класс и щелкните пустую область схемы.

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

Дополнительные сведения см. в разделах Свойства доменных связей и Свойства доменных ролей.

ПримечаниеПримечание

Внедрение отличается от наследования.Дочерние элементы в отношении внедрения не наследуют функции из них родительскиев.

Bb126581.collapse_all(ru-ru,VS.110).gifДобавьте свойства домена к каждому доменному класс

Свойства домена хранят значения.Примеры: имя, название, дата публикации.

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

Задайте для свойства имя элемента. Выберите свойство домена, который может использоваться для определения элементов в обозревателе языка.Например, в доменном классе песни, что можно выбрать свойства домена заголовка.в Свойства окно, набор Имя элемента В true.

Bb126581.collapse_all(ru-ru,VS.110).gifСоздать производные классы доменных

Если требуется доменный класс иметь варианты, которые наследуют его свойства и связи, создайте классы, производные от него.Например, альбом может иметь производные классы WMA, MP3.

Создайте производный класс, используя Доменный класс средство.

Щелкните Наследование средство выберите производный класс, а затем щелкните базовый класс.

Рассмотрите возможность установки Модификатор наследования базового класса abstract.Если думаете, что экземпляры базового класса, могут понадобиться просмотреть вместо создать отдельный производный класс для них.

Производные классы наследуют свойства и роли своих базовых классов.

Bb126581.collapse_all(ru-ru,VS.110).gifАккуратно схема определения DSL

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

Используйте ctrl + стрелка вверх и ctrl + стрелка вниз для перемещения доменных классы и классы фигуры.

Bb126581.collapse_all(ru-ru,VS.110).gifПроверьте доменных классы

Тестирование новые классы доменных

  1. Нажмите кнопку преобразовать все шаблоны на панели инструментов обозревателя решений создается код конструктора DSL.Можно автоматизировать этот шаг.Дополнительные сведения см. в разделе Автоматизация преобразования всех шаблонов.

  2. Постройте и запустите DSL. Нажмите клавишу F5 или сочетание клавиш CTRL+F5, чтобы запустить новый экземпляр Visual Studio в экспериментальном режиме.В экспериментальном экземпляре Visual Studioоткрыть или создать файл с расширением имени файла данного DSL.

  3. Открыть обозреватель. Сбоку схемы окно обозревателя языка, который обычно называется YourLanguage обозреватель.Если это окно не отображается, то оно может находиться на вкладке в обозревателе решений.Если не удается найти, то на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку YourLanguageПроводник.

    В обозревателе представляет представление в виде дерева модели.

  4. создайте новые элементы. Щелкните правой кнопкой мыши корневой узел на вершине и выберите команду ДобавитьYourClass.

    Новый экземпляр класса отображается в обозревателе языка.

  5. Убедитесь, что каждый экземпляр имеет другое имя при создании новых экземпляров.Это происходит, только если у вас есть набор Имя элемента пометить для свойства домена.

  6. Просмотрите свойства домена. С экземпляром, для выбранного класса проверьте окно свойств.Он должен содержать свойствам домена, что указанные в этом доменном классе.

  7. Сохраните файл и закройте и снова откройте его он.Все экземпляры созданного должны быть видны в обозревателе, после того как развернуть узлы.

Указание фигуры на схеме

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

Определение класса элементов, которые отображаются в виде фигуры на схеме

  1. Определите и проверьте доменный класс как описано в разделе Указание доменных классы**.**

    • Родительский объект класса должен быть классом.Это значит, что должно быть внедрения связь между классом и новым корневым доменным классом.

    • Если в схеме есть прокрутки, то родительский может быть доменным классом, который сопоставлен отслеживания.Прежде чем продолжить с этой процедурой, см. в разделе Определение DSL с дорожки.

  2. Добавьте в класс формы представления элементов модели на схеме.Перетащите из одного из следующих средств на схему определения DSL:

    • Фигуры типа geometry предоставляет прямоугольник и эллипс.

    • Фигура изображения указывает способ, который предоставляется.

    • Фигура секции прямоугольник, содержащий один или несколько списков элементов.

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

  3. Укажите способ, если создана форма образа.

    1. Создайте файл изображения любого размера.Поддерживаются форматы BMP, JPEG, GIF и EMF.

    2. В обозревателе решений добавьте в решение Dsl \ файл под ресурсами.

    3. Вернитесь к схеме определения DSL и выберите новый класс формы образа.

    4. В окне свойства щелкните Изображение свойство.

    5. в Выбор изображения диалоговое окно " щелкните раскрывающееся меню вниз Имя файлаи выберите изображение.

  4. Добавьте оформители текста в фигуре, чтобы отобразить свойства домена.

    Для отображения имени или заголовка элемента модели, скорее всего, будет необходимо, по крайней мере, один оформитель текста.

    Щелкните правой кнопкой мыши заголовок класса формы, укажите Добавить, а затем нажмите кнопку Оформитель текста.Задайте имя оформителя и в наборе окна свойства своем Position.

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

    Щелкните Сопоставление элемента схемы средство, нажмите кнопку доменный класс, а затем щелкните класс формы.

  6. Сопоставление свойств с оформителям текста.

    1. Выберите серую линию между классом и доменным классом фигуры, представляющий сопоставление элемента схемы.

    2. в Сведения DSL окно, нажмите кнопку Сопоставления оформителя вкладка.Если он отсутствует Сведения DSL окно, в Просмотреть меню наведите курсор на пункт Другие окна затем перейдите Сведения DSL.Часто необходимо вызвать верхней части окна, чтобы увидеть все его содержимое.

    3. Выберите имя оформителя.Под Свойство отображениявыберите имя свойства доменного класса.Повторяющиеся это для каждого оформителя.

      Если необходимо отображать свойство связанного элемента, щелкните навигатор dropdown дерева вниз Путь для отображения свойств.

    4. Убедитесь, что флажок отображается рядом с каждым именем оформителя.

    Сопоставление фигур и окно сведений DSL

  7. Создание элемента панели инструментов для создания элементов доменного класса.

    1. IN Обозреватель DSLразверните Редактор узел и все его sub-узлы.

    2. Щелкните правой кнопкой мыши узел вниз Вкладки панели элементов то есть то же имя, что и у DSL, например MusicLibrary.Нажать Добавьте средство элемента.

      ПримечаниеПримечание

      Если щелкнуть правой кнопкой мыши Сервис узел не увидите Добавьте средство элемента.Вместо этого щелкните узел над ним.

    3. В окне свойства элемента с выделенным в нем новым средством, установите Класс доменному к классу, недавно добавленные.

    4. Установка подпись и Всплывающая подсказка.

    5. Установка Значок панели элементов к значку, который отображается в области элементов.Можно поместить в новый значок или значок уже используемым для другого средства.

      Чтобы создать новый значок открыть Dsl \ resources in Обозреватель решений.Скопируйте и вставьте один из существующих файлов BMP средства элемента.Переименуйте вставленная копия, а затем дважды нажмите кнопку, чтобы изменить ее.

      Вернитесь к схеме определения DSL, выберите инструмент и щелкните в окне свойств [...] IN Значок панели элементовВыбор точечного рисунка откроется диалоговое окно выберите файл .bmp из раскрывающегося меню.

Дополнительные сведения см. в разделах Свойства геометрических фигур и Свойства фигур изображений.

Тестирование фигуры

  1. Нажмите кнопку преобразовать все шаблоны на панели инструментов обозревателя решений создается код конструктора DSL.

  2. Постройте и запустите DSL. Нажмите клавишу F5 или сочетание клавиш CTRL+F5, чтобы запустить новый экземпляр Visual Studio в экспериментальном режиме.В экспериментальном экземпляре Visual Studioоткрыть или создать файл с расширением имени файла данного DSL.

  3. Убедитесь, что средства элемента отображаются в области элементов.

  4. Создание фигуры путем перетаскивания из средств на схему модели.

  5. Убедитесь, что каждый оформитель текст отображается, и.

    1. Можно изменить, если он не будет иметь Пользовательский интерфейс только для чтения пометить для свойства домена.

    2. При редактировании свойство или в окне свойства или в оформителе, другое представление обновляется.

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

Определение связей ссылок

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

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

Модель экземпляра созданного DSL

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

Bb126581.collapse_all(ru-ru,VS.110).gifОпределите отношение ссылки

Выберите средства связи ссылки, затем щелкните доменный класс источника связи, а затем щелкните доменный класс целевого объекта.Класс целевого объекта может быть таким же, как и класс источника.

Каждое отношение содержит 2 роли, представленных линией на каждой стороне окна связи.Можно выбрать каждая роль и задать его свойства в окне свойства.

Рассмотрите возможность переименования роли.Например, в отношении между sales и sales может понадобиться изменить имена по умолчанию родительскиям и дочерним элементам, и диспетчеру учителю и студенту субъекта, и т д

Настройка количества элементов каждой роли, если это необходимо.Если необходимо каждую продажу иметь по крайней мере один диспетчер, установите количество элементов, которое отображается под меткой распределения в схеме значение 0..1.

добавьте свойства домена к отношению. В диаграмме связи Исполнитель-Альбома имеет свойство роли.

УстановкаРазрешены дубликаты свойство связи если более чем одна связь того же класса может существовать между одинаковыми парами элементов модели.Например, можно разрешить учитель для научить нескольких разделе к одному и тому же студенту.

Карты фигур для соединителей

Дополнительные сведения см. в разделах Свойства доменных связей и Свойства доменных ролей.

Bb126581.collapse_all(ru-ru,VS.110).gifУкажите соединитель для отображения отношений

Соединитель отображается линия между фигурами на 2 модели схемы.

Перетащите Соединитель средство на схему определения DSL.

Добавьте оформители текст если необходимо отображать метки на соединителе.Задайте их позиции.Чтобы позволить пользователю перемещение текста, установите его оформитель Подвижн свойство.

Используйте Сопоставление элемента схемы средство для связывания соединитель в соответствии ссылки.

Если выбранное сопоставление элемента схемы, открытие Сведения DSL окно, и открытие Сопоставления оформителя вкладка.

Выделить все Оформитель и Свойство отображения к нужному свойству домена.

Убедитесь, что флажок отображается рядом с каждым элементом Оформители список.

Bb126581.collapse_all(ru-ru,VS.110).gifУкажите средство " построитель подключения

в Обозреватель DSL окно разверните Редактор узел и все его дочерние узлы, расположенные.

Щелкните правой кнопкой мыши узел, который имеет такое же имя, как и затем выберите DSL Добавьте новое средство соединения.

При выборе нового средство в окне свойства:

  • Установка подпись и Всплывающая подсказка.

  • Нажать Построитель подключения и выберите нужный построитель для нового отношения.

  • Установка Значок панели элементов к значку, которые нужно включить в область элементов.Можно поместить в новый значок или значок уже используемым для другого средства.

    Чтобы создать новый значок открыть Dsl \ resources in Обозреватель решений.Скопируйте и вставьте один из существующих файлов BMP средства элемента.Переименуйте вставленная копия, а затем дважды нажмите кнопку, чтобы изменить ее.

    Вернитесь к схеме определения DSL, выберите инструмент и щелкните в окне свойств [...] IN Значок панели элементовВыбор точечного рисунка откроется диалоговое окно выберите файл .bmp из раскрывающегося меню.

Проверка связи и соединитель ссылки

  1. Нажмите кнопку преобразовать все шаблоны на панели инструментов обозревателя решений создается код конструктора DSL.

  2. Постройте и запустите DSL. Нажмите клавишу F5 или сочетание клавиш CTRL+F5, чтобы запустить новый экземпляр Visual Studio в экспериментальном режиме.В экспериментальном экземпляре Visual Studioоткрыть или создать файл с расширением имени файла данного DSL.

  3. Убедитесь, что средство подключения отображается в области элементов.

  4. Создание фигуры путем перетаскивания из средств на схему модели.

  5. Создайте соединения между фигурами.Щелкните средство для соединителя, щелкните фигуру, а затем нажмите кнопку другой фигуры.

  6. Убедитесь в том, что невозможно создать классы связь между ненужных. Например, если связи между альбомами и исполнителями, то убедитесь в том, что невозможно связать исполнители к исполнителям.

  7. Убедитесь в правильности количества элементов. Например, убедитесь в том, что невозможно подключиться person на более чем один диспетчер.

  8. Убедитесь, что каждый оформитель текст отображается, и.

    1. Можно изменить, если он не будет иметь Пользовательский интерфейс только для чтения пометить для свойства домена.

    2. При редактировании свойство или в окне свойства или в оформителе, другое представление обновляется.

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

Определение фигуры, которые содержат списки: фигуры секции

Фигура секции содержит один или несколько списков элементов.Например, в библиотеке " музыка " DSL, можно использовать фигуры секции для представления альбомы music.В каждом альбоме список песен.

Фигура секции

В самом простом методе достижения этого эффекта в определении DSL, указывается один доменный класс для контейнера и один доменный класс для каждого списка.Класс контейнера привязан к фигуре секции.

Карта фигур

Дополнительные сведения см. в разделе Свойства фигур, состоящих из секций.

Задать форму секции

  1. Создать доменный класс контейнера.Щелкните Внедрение связи средство щелкает корневой класс модели, а затем щелкните пустую область схемы определения DSL.Это создает доменный класс с именем Альбомом в диаграмме примера.

    В качестве альтернативы вместо внедрять в корневом классе можно внедрить контейнер в доменном классе, который сопоставлен отслеживания.

    Добавьте свойство к классу, что имя домена и задайте его Имя элемента пометить в окне свойства.

  2. Создать доменный класс элемента списка.Щелкните Внедрение связи средство, класс контейнера (альбом), а затем щелкните пустую область схемы.Это создает доменный класс с именем Песней в диаграмме примера.

    Добавьте свойство к классу, что имя домена и задайте его Имя элемента пометить.

    Добавьте другие свойства домена.

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

  3. Смешивать несколько типов элементов в спискесоздайте классы, наследующие от класса списка.Создание класса списка путем установки его abstract Модификатор наследования.

    Например, если нужно классическую музыку быть сортированным композитором вместо исполнителя, то можно создать 2 подкласса песни, ClassicalSong и NonClassicalSong.

  4. Создание фигуры секции.Перетащите из Фигура секции средство на схему определения DSL.

    Добавьте оформитель текст и задайте его имя.

    Добавление секции и задайте его имя.

  5. Чтобы позволить пользователю скрыть секции списка щелкните правой кнопкой мыши класс формы секции, указывающие на Добавить, а затем нажмите кнопку Развернуть/свернуть оформитель.В окне свойства задайте расположение оформителя.

  6. Щелкните Сопоставление элемента схемы средство выберите доменный класс контейнера, а затем щелкните фигуру секции.

  7. Выберите ссылку элемента схемы сопоставления между классом и доменным фигурой.в Сведения DSL окно:

    1. Щелкните Оформители вкладка.Щелкните имя оформителя а затем выберите соответствующий элемент вниз Свойство отображения.Убедитесь, что флажок отображается рядом с именем оформителя.

    2. Щелкните Сопоставления секций вкладка.

      Щелкните имя секции.

      Под Путь коллекцию отображаемых элементовперейдите к классу элемента списка (песне).Щелкните стрелку раскрывающегося списка для использования средства навигатора.

      Под Свойство отображениявыберите свойство, которое должно отображаться в списке.В приведенном примере это имя.

ПримечаниеПримечание

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

Указать средство для создания формы

  1. Создание элемента панели инструментов для создания элементов доменного класса.

  2. IN Обозреватель DSLразверните Редактор узел и все его sub-узлы.

  3. Щелкните правой кнопкой мыши узел вниз Вкладки панели элементов то есть то же имя, что и у DSL, например MusicLibrary.Нажать Добавьте средство элемента.

    ПримечаниеПримечание

    Если щелкнуть правой кнопкой мыши Сервис узел не увидите Добавьте средство элемента.Вместо этого щелкните узел над ним.

  4. В окне свойства элемента с выделенным в нем новым средством, установите Класс доменному к классу, недавно добавленные.

  5. Установка подпись и Всплывающая подсказка.

  6. Установка Значок панели элементов к значку, который отображается в области элементов.Можно поместить в новый значок или значок уже используемым для другого средства.

    Чтобы создать новый значок открыть Dsl \ resources in Обозреватель решений.Скопируйте и вставьте один из существующих файлов .bmp средства элемента.Переименуйте вставленная копия, а затем дважды нажмите кнопку, чтобы изменить ее.

    Вернитесь к схеме определения DSL, выберите инструмент и щелкните в окне свойств [...] IN Значок панели элементовВыбор точечного рисунка откроется диалоговое окно выберите файл BMP из раскрывающегося меню.

Тестирование форма секции

  1. Нажмите кнопку преобразовать все шаблоны на панели инструментов обозревателя решений создается код конструктора DSL.

  2. Постройте и запустите DSL. Нажмите клавишу F5 или сочетание клавиш CTRL+F5, чтобы запустить новый экземпляр Visual Studio в экспериментальном режиме.В экспериментальном экземпляре Visual Studioоткрыть или создать файл с расширением имени файла данного DSL.

  3. Убедитесь, что средство отображаются в области элементов.

  4. Перетащите инструмент на схему модели.Фигура создана.

    Убедитесь, что имя элемента встречается и набором автоматически к значению по умолчанию.

  5. Щелкните правой кнопкой мыши заголовок новой фигуры и выберите команду добавить Элемент списка. В этом примере команда добавляет песня.

    Убедитесь, что элемент появляется в списке и что он имеет новое имя.

  6. Щелкните один из элементов списка, а затем просмотрите окно свойств.Вы должны увидеть свойства элементов списка.

  7. Открыть обозреватель языка.Убедитесь, что можно увидеть узлы внутри контейнера с узлами элемента списка.

Созданный обозреватель DSL

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

Bb126581.collapse_all(ru-ru,VS.110).gifОтображение связей ссылок в секции

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

Например, можно добавить вторую секцию в AlbumShape, указывающее список ожидания запуска, связанных с альбому.

В этом случае секции должна отображаться ссылка, вместо ссылочного элемента.Это происходит потому, что, когда пользователь выбирает элемент в секции и нажмите клавишу УДАЛЕНИЯ необходимо соединение, не удален элемент, на который указывает ссылка.

Однако можно иметь имя упоминаемого элемента отображаться в секцию.

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

Для отображения ссылки свяжите в секции

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

  2. Установка Путь коллекцию отображаемых элементов перейти к ссылке, а не его элемента целевого объекта.Щелкните раскрывающееся меню и используйте представление в виде дерева для выбора отношение ссылки, а не его целевого объекта.В этом примере связь ArtistAppearedOnAlbums.

  3. Установка Путь для отображения свойств переход по связи к элементу целевого объекта.В примере этот исполнитель.

  4. Установка Свойство отображения соответствующее свойству элемента целевого объекта, например имя.

  5. Преобразовать все шаблонывыполните построение и запуск DSL, и открытие модели теста.

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

  7. Выберите или ссылку или элемент в фигуре секции.Отношение и элемент должна исчезнуть.

Указание портов на границе другой фигуры

Фигура порта, расположенной на границе другой фигуры.

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

Чтобы просмотреть пример использования портов выберите Схема компонентов шаблон при создании нового решения DSL.В этом примере показано, сутям проблем, что можно рассмотреть при указании порты:

  • Доменный класс, представляющий контейнер порты Component.

  • Доменный класс, представляющий порты.В приведенном примере это ComponentPort.

  • Связь из класса контейнера внедрения доменный к классу доменному порта.Дополнительные сведения см. в разделе Указание доменных классы.

  • Если требуется различные типы порта быть смешанным на одном и том же контейнере, можно создать доменный подклассы класса порта.В этом примере InPort и OutPort наследование ComponentPort.

  • Доменный класс контейнера могут быть сопоставлены с любой тип фигуры.В этом примере он ComponentShape.Дополнительные сведения см. в разделе Указание фигуры.

  • Классы доменных порта сопоставляются фигурам порта.Можно сопоставить производные классы для разделения классы фигуры порта или сопоставьте базовый класс на один класс формы порта.

В других отношениях фигура порта, как описано в поведение Указание фигуры.

Дополнительные сведения см. в разделе Свойства фигур портов.

Определение DSL с дорожки

Горизонтальный или вертикальный раздел отслеживание схемы.Каждая запись соответствует элементу модели.Определение DSL требует одного доменного класса для элементов отслеживания.

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

Чтобы добавить класс, который будет отображаться в виде внутри отслеживания, создайте внедрения связь между классом отслеживания, новым классом.Пользователи смогут к элементам перетаскивания из одной прокрутки в другой, но каждый элемент всегда будет представляться указанной отслеживания.В шаблоне решения потока задачи, FlowElement дочерний элемент класса отслеживания.

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

Дополнительные сведения см. в разделе Свойства дорожек.

Добавление типы свойств

Bb126581.collapse_all(ru-ru,VS.110).gifПеречисления и литералы домена

Перечисление домена тип с несколькими литеральных значений.

Добавление перечисление домена, щелкните правой кнопкой мыши корень модели Обозреватель DSL затем перейдите Добавьте новое перечисление домена.Элемент появляется в Обозреватель DSL под Типы домена узел.Этот элемент не отображается на схеме.

Добавление литералов перечисления к перечислению домена, щелкните правой кнопкой мыши перечисление домена Обозреватель DSL затем перейдите Добавьте новый литерал перечисления.

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

Bb126581.collapse_all(ru-ru,VS.110).gifВнешние типы

При установке тип свойства домена, если не найдите тип, то необходимо в тип раскрывающегося списка можно добавить внешний вид.Например, можно добавить System.Drawing.Color тип в список.

Добавление типа щелкните правой кнопкой мыши корень модели в обозревателе DSL, а затем щелкнуть Добавьте новый внешний вид.В окне свойства задайте имя Color и пространство имен в System.Drawing.Этот тип теперь отображается в обозревателе DSL вниз Типы домена.Можно выбрать его при установке тип свойства домена.

Настраивать DSL

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

Определение метода расширения: DSL 2

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

    Дополнительные сведения см. в разделе Настройка и расширение доменного языка.

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

Bb126581.collapse_all(ru-ru,VS.110).gifИзменение определения DSL

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

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

Поэтому иметь в виду, что при смене некоторые связи в своем определении DSL, он не необыкновенны для ошибок быть сообщенным то при сохранении определения или при преобразовании все шаблоны.Большая часть этих ошибок легко, чтобы устранить.Дважды щелкните отчет об ошибках, чтобы увидеть место ошибки.

См. также раздел Практическое руководство. Изменение пространства имен доменного языка.

Устранение неполадок

В следующей таблице перечислены некоторые наиболее распространенные проблемы, возникающие при проектировании DSL вместе с предложениями для их решения.Дополнительные советы доступны на Форум Extensibililty средства визуализации.

Проблема

Рекомендации

Ли внесены изменения в файле определения DSL не имеют никакого эффекта.

Нажать Преобразовать все шаблоны на панели инструментов в обозревателе решений, а затем перестроить решение.

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

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

Открытие Сведения DSL окна.Если не отображается, в меню вид выберите Другие окна, а затем нажмите кнопку Сведения DSL.

Щелкните Сопоставления оформителя вкладка.Выберите имя оформителя.Убедитесь, что флажок рядом с ним флажок установлен.Под Свойство отображениявыберите имя свойства домена.

Дополнительные сведения см. в разделе фигуры на схеме.

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

В обозревателе для my DSL, не удается добавить элемент к списку.

Щелкните правой кнопкой мыши элемент на узел, попытке.Если необходимо добавить в список, команда добавить не является в узле списка, а в своем владельце.

I создал доменный класс, но не удается создать экземпляры в обозревателе языка.

Каждый доменный класс за исключением корневого должен быть целевым объектом внедрения связи.

В обозревателе для my DSL, элементы отображаются только с их именами типа.

В определении DSL выберите свойство домена класса и в окне свойств наборе Имя элемента значение true.

Мой DSL всегда открывается в редакторе XML.

Это может происходить из-за ошибки при читался файл.Однако даже после фиксируете эту ошибку, необходимо явно сбросить редактор, чтобы быть конструктором DSL.

Щелкните правой кнопкой мыши проект щелкните элемент Открыть с помощью и select YourLanguageКонструктор (по умолчанию).

Область элементов " моего DSL не появится после того как я изменился имена сборок.

Проверьте и обновление DslPackage\GeneratedCode\Package.tt Дополнительные сведения см. в разделе Практическое руководство. Изменение пространства имен доменного языка.

My DSL область элементов не отображается, но не изменялся имя сборки.

Окно сообщения отображается числа или сбой загрузки расширения.

Сбросить экспериментальном экземпляр, и перестройте решение.

  1. В меню " Пуск " windows, вниз Все программыразверните SDK для Visual Studioпосле этого Сервис, а затем нажмите кнопку Сбросить экземпляр Visual Studio экспериментальном.

  2. На Visual StudioПостроение меню выберите команду Перестроить решение.

См. также

Задачи

Создание доменного языка на основе Windows Forms

Основные понятия

Начало работы с доменными языками

Создание доменного языка на основе WPF