Dostosowywanie i rozszerzanie języka specyficznego dla domeny

Visual Studio Zestaw SDK modelowania i wizualizacji (VMSDK) udostępnia kilka poziomów, na których można zdefiniować narzędzia do modelowania:

  1. Zdefiniuj język specyficzny dla domeny (DSL) przy użyciu diagramu definicji DSL. Można szybko utworzyć DSL z notacji diagramu, formularz XML czytelny i podstawowe narzędzia, które są wymagane do generowania kodu i innych artefaktów. Aby uzyskać więcej informacji, zobacz How to Define a Domain-Specific Language.

  2. Dostosuj DSL przy użyciu bardziej zaawansowanych funkcji definicji DSL. Na przykład dodatkowe linki mogą być wyświetlane, gdy użytkownik tworzy element. Te techniki są w większości osiągane w definicji DSL, a niektóre wymagają kilku wierszy kodu programu.

  3. Rozszerzanie narzędzi modelowania przy użyciu kodu programu. VmSDK zaprojektowano specjalnie, aby ułatwić integrowanie rozszerzeń z kodem wygenerowanym na podstawie definicji DSL. Aby uzyskać więcej informacji, zobacz Writing Code to Customize a Domain-Specific Language (Pisanie kodu w celu dostosowania Domain-Specific języku ).

Uwaga

Po zaktualizowaniu pliku definicji DSL nie zapomnij kliknąć przycisku Przekształć wszystkie szablony na pasku narzędzi Eksplorator rozwiązań przed przebudową rozwiązania.

Informacje o artykule

Aby osiągnąć ten efekt Zapoznaj się z tym tematem
Zezwala użytkownikowi na ustawianie właściwości koloru i stylu kształtu. Kliknij prawym przyciskiem myszy klasę kształtu lub łącznika, wskaż polecenie Dodaj ujawnione i kliknij element.
Różne klasy elementu modelu wyglądają podobnie na diagramie, udostępniając właściwości, takie jak początkowa wysokość i szerokość, kolor, etykietki narzędzi. Używanie dziedziczenia między kształtami lub klasami łączników. Mapowania między kształtami pochodnymi i klasami domeny pochodnej dziedziczą szczegóły mapowania rodziców.

Można też mapować różne klasy domen na tę samą klasę kształtu.
Klasa elementu modelu jest wyświetlana w różnych kontekstach kształtów. Mapuj więcej niż jedną klasę kształtu na tę samą klasę domeny. Podczas tworzenia rozwiązania postępuj zgodnie z raportem o błędach i podaj żądany kod, aby zdecydować, jakiego kształtu użyć.
Kolor kształtu lub inne cechy, takie jak czcionka, wskazują bieżący stan. Zobacz Aktualizowanie kształtów i łączników w celu odzwierciedlenia modelu.

Utwórz regułę, która aktualizuje ujawnione właściwości. Zobacz Reguły propagacji zmian w modelu.

Możesz też użyć funkcji OnAssociatedPropertyChanged(), aby zaktualizować nieuświetlone funkcje, takie jak strzałki linków lub czcionka.
Ikona zmiany kształtu w celu wskazania stanu. Ustaw widoczność mapowania dekoratora w oknie Szczegóły DSL. Znajdź kilka dekoratorów obrazów w tej samej pozycji. Zobacz Aktualizowanie kształtów i łączników w celu odzwierciedlenia modelu.

Możesz też przesłonić ImageField.GetDisplayImage() . Zobacz przykład ImageField w .
Ustawianie obrazu tła dla dowolnego kształtu Zastąp metodę InitializeInstanceResources(), aby dodać zakotwiczony element ImageField.
Zagnieżdżanie kształtów na dowolnej głębokości Skonfiguruj cykliczne drzewo osadzania. Zdefiniuj elementy BoundsRules zawierające kształty.
Dołączanie łączników w stałych punktach na granicy elementu. Zdefiniuj osadzone elementy terminalu reprezentowane przez małe porty na diagramie. Użyj funkcji BoundsRules, aby naprawić porty na miejscu. Zobacz przykład diagramu obwodowego na stronie Visualization and Modeling SDK (Zestaw SDK wizualizacji i modelowania).
Pole tekstowe wyświetla wartość pochodną innych wartości. Mapowanie dekoratora tekstu na właściwość domeny obliczeniowej Storage niestandardowej. Aby uzyskać więcej informacji, zobacz Właściwości obliczeniowe i Storage niestandardowe.
Propagacja zmian między elementami modelu lub między kształtami Zobacz Validation in a Domain-Specific Language (Weryfikacja w Domain-Specific języku).
Propagacja zmian do zasobów, takich jak Visual Studio rozszerzenia poza magazynem. Zobacz Programy obsługi zdarzeń propagują zmiany poza modelem.
Okno właściwości wyświetla właściwości powiązanego elementu. Skonfiguruj przekazywanie właściwości. Zobacz Dostosowywanie okna właściwości.
Kategorie właściwości Okno właściwości jest podzielone na sekcje nazywane kategoriami. Ustaw kategorię właściwości domeny. Właściwości o tej samej nazwie kategorii będą wyświetlane w tej samej sekcji. Można również ustawić kategorię roli relacji.
Kontrolowanie dostępu użytkownika do właściwości domeny Ustaw wartość false dla ustawienia Czy można przeglądać, aby zapobiec pojawianiu się właściwości domeny w okno Właściwości w czasie uruchamiania. Nadal można mapować go na dekoratory tekstu.

Jest tylko do odczytu interfejsu użytkownika uniemożliwia użytkownikom zmienianie właściwości domeny.

Nie ma to wpływu na dostęp programu do właściwości domeny.
Zmień nazwę, ikonę i widoczność węzłów w eksploratorze modeli DSL. Zobacz Dostosowywanie Eksploratora modelu.
Włączanie kopiowania, wycinania i wklejania Ustaw właściwość Włącz wklejanie kopii węzła Edytor w eksploratorze DSL.
Kopiuj linki odwołania i ich elementy docelowe za każdym razem, gdy element jest kopiowany. Na przykład skopiuj komentarze dołączone do elementu. Ustaw właściwość Propagates Copy roli źródłowej (reprezentowaną przez wiersz po jednej stronie relacji domeny na diagramie definicji DSL).

Napisz kod zastępujący metodę ProcessOnCopy, aby osiągnąć bardziej złożone efekty.

Zobacz Dostosowywanie zachowania kopiowania.
Usuwanie, ponowne łączenie lub ponowne łączenie powiązanych elementów po usunięciu elementu. Ustaw wartość Propagacja usunięcia roli relacji. Aby uzyskać bardziej złożone efekty, przesłoń ShouldVisitRelationship metody i w klasie zdefiniowane w klasie ShouldVisitRolePlayer MyDslDeleteClosure DomainModel.cs.
Zachowaj układ kształtu i wygląd podczas kopiowania i przeciągania i upuszczania. Dodaj kształty i łączniki do skopiowanego pliku ElementGroupPrototype . Najbardziej wygodną metodą przesłonięcia jest ElementOperations.CreateElementGroupPrototype()

Zobacz Dostosowywanie zachowania kopiowania.
Wklej kształty w wybranej lokalizacji, takiej jak bieżąca pozycja kursora. Zastąp ClipboardCommandSet.ProcessOnCopy() , aby użyć specyficznej dla lokalizacji wersji zobacz Dostosowywanie zachowania ElementOperations.Merge(). kopiowania.
Tworzenie dodatkowych linków podczas wklejania Zastąp metodę ClipboardCommandSet.ProcessOnPasteCommand()
Włącz przeciąganie i upuszczanie z tego diagramu, innych plików DSL Windows elementów Zobacz How to: Add a Drag-and-Drop Handler (Jak dodać obsługę przeciągania i upuszczania)
Zezwalaj na przeciągnięcie kształtu lub narzędzia na kształt podrzędny, taki jak port, tak jakby został przeciągnięty do elementu nadrzędnego. Zdefiniuj dyrektywę Scalanie elementów w klasie obiektu docelowego, aby przesyłać porzucony obiekt do obiektu nadrzędnego. Zobacz Dostosowywanie tworzenia i przemieszczania elementów.
Zezwalaj na przeciągnięcie kształtu lub narzędzia na kształt i mieć utworzone dodatkowe linki lub obiekty. Na przykład w celu umożliwienia upuszczenia komentarza do elementu, z którym ma zostać połączony. Zdefiniuj dyrektywę scalania elementów w docelowej klasie domeny i zdefiniuj linki do wygenerowania. W złożonych przypadkach można dodać kod niestandardowy. Zobacz Dostosowywanie tworzenia i przemieszczania elementów.
Utwórz grupę elementów za pomocą jednego narzędzia. Na przykład składnik ze stałym zestawem portów. Zastąp metodę inicjowania przybornika w przybornikuHelper.cs. Utwórz prototyp grupy elementów (EGP) zawierający elementy i ich linki relacji. Zobacz dostosowywanie narzędzi i przybornik.

Dołącz do EGP kształty podmiotu zabezpieczeń i portu lub zdefiniuj boundsRules, aby ustawić położenie kształtów portów podczas wystąpienia EGP.
Użyj jednego narzędzia połączenia, aby utworzyć kilka typów relacji. Dodaj link Połączenie do konstruktora połączeń wywoływanego przez narzędzie. Identyfikatory LCD określają typ relacji na podstawie typów dwóch elementów. Aby było to zależne od stanów elementów, można dodać kod niestandardowy. Zobacz dostosowywanie narzędzi i przybornik.
Narzędzia sticky — użytkownik może kliknąć dwukrotnie dowolne narzędzie, aby utworzyć kolejno wiele kształtów lub łączników. W Eksploratorze DSL wybierz Editor węzeł. W okno Właściwości ustaw wartość Używa elementów przybornika sticky.
Definiowanie poleceń menu Zobacz How to: Modify a Standard Menu Command ( Jak zmodyfikować standardowe polecenie menu)
Ograniczanie modelu przy użyciu reguł weryfikacji Zobacz Validation in a Domain-Specific Language (Walidacja w Domain-Specific języku)
Generowanie kodu, plików konfiguracji lub dokumentów z DSL. Generowanie kodu z języka specyficznego dla domeny
Dostosowywanie sposobu zapisania modeli w pliku. Zobacz Dostosowywanie ustawień Storage i serializacji XML
Zapisywanie modeli w bazach danych lub na innych nośnikach. Przesłanianie danych YourLanguage DocData

Zobacz Dostosowywanie ustawień Storage i serializacji XML
Zintegruj kilka plików DSL, aby działały jako część jednej aplikacji. Zobacz Integrating Models by using Visual Studio Modelbus (Integrowanie modeli przy użyciu Visual Studio Modelbus).
Zezwolij na rozszerzenie DSL przez inne firmy i kontroluj rozszerzenie. Rozszerzanie DSL za pomocą MEF

Udostępnianie klas między językami DSL za pomocą biblioteki DSL

Definiowanie zasad blokowania na potrzeby tworzenia segmentów tylko do odczytu

Zobacz też

Uwaga

Składnik transformacji szablonu tekstu jest automatycznie instalowany w ramach obciążenia programistycznego rozszerzenia programu Visual Studio . Można go również zainstalować z karty poszczególne składniki Instalator programu Visual Studio, w obszarze zestawy SDK, biblioteki i struktury . Zainstaluj składnik Modeling SDK na karcie poszczególne składniki .