Dostosowywanie i rozszerzanie języka specyficznego dla domeny
Zestaw SDK modelowania i wizualizacji programu Visual Studio (VMSDK) udostępnia kilka poziomów, na których można zdefiniować narzędzia do modelowania:
Zdefiniuj język specyficzny dla domeny (DSL) przy użyciu diagramu definicji DSL. Język DSL można szybko utworzyć z notacją diagramową, czytelnym formularzem XML i podstawowymi narzędziami wymaganymi do generowania kodu i innych artefaktów. Aby uzyskać więcej informacji, zobacz How to Define a Domain-Specific Language (Jak zdefiniować język specyficzny dla domeny).
Dostrajanie rozszerzenia DSL przy użyciu bardziej zaawansowanych funkcji definicji DSL. Na przykład możesz utworzyć dodatkowe linki, gdy użytkownik utworzy element. Te techniki są w większości osiągane w definicji DSL, a niektóre wymagają kilku wierszy kodu programu.
Rozszerz narzędzia do modelowania przy użyciu kodu programu. Zestaw VMSDK został zaprojektowany specjalnie w celu ułatwienia integracji rozszerzeń z kodem generowanym na podstawie definicji DSL. Aby uzyskać więcej informacji, zobacz Pisanie kodu w celu dostosowania języka specyficznego dla domeny.
Uwaga
Po zaktualizowaniu pliku definicji DSL nie zapomnij kliknąć przycisku Przekształć wszystkie szablony na pasku narzędzi Eksplorator rozwiązań przed odbudową rozwiązania.
Dokumentacja artykułu
Aby osiągnąć ten efekt | Zapoznaj się z tym tematem |
---|---|
Zezwalaj użytkownikowi na ustawianie właściwości koloru i stylu kształtu. | Kliknij prawym przyciskiem myszy kształt lub klasę łącznika, wskaż polecenie Dodaj uwidocznione, a następnie 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żyj dziedziczenia między kształtami lub klasami łączników. Mapowania między kształtami pochodnymi i pochodnymi klasami domen dziedziczą szczegóły mapowania elementów nadrzędnych. Lub zamapuj różne klasy domen na tę samą klasę kształtu. |
Klasa elementu modelu jest wyświetlana przez różne konteksty kształtów. | Zamapuj więcej niż jedną klasę kształtu na tę samą klasę domeny. Podczas kompilowania 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 funkcje, takie jak czcionka, wskazują bieżący stan. | Zobacz Aktualizowanie kształtów i Połączenie orów, aby Emocje modelu. Utwórz regułę, która aktualizuje uwidocznione właściwości. Zobacz Reguły propagacji zmian w modelu. Możesz też użyć polecenia OnAssociatedPropertyChanged(), aby zaktualizować nie uwidocznione funkcje, takie jak strzałki linku lub czcionka. |
Ikona na kształcie zmienia się, aby wskazać stan. | Ustaw widoczność mapowania dekoratora w oknie Szczegóły DSL. Znajdź kilka dekoratorów obrazów na tej samej pozycji. Zobacz Aktualizowanie kształtów i Połączenie orów, aby Emocje modelu. Alternatywnie zastąpij wartość ImageField.GetDisplayImage() . Zobacz przykład w pliku ImageField. |
Ustawianie obrazu tła na dowolnym kształcie | Zastąp element InitializeInstanceResources(), aby dodać zakotwiczone pole obrazu. |
Zagnieżdżanie kształtów do dowolnej głębokości | Skonfiguruj cykliczne drzewo osadzania. Zdefiniuj reguły BoundsRules, aby zawierały 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 reguł BoundsRules, aby naprawić porty. Zobacz przykład diagramu obwodu w temacie Wizualizacja i zestaw SDK modelowania. |
Pole tekstowe wyświetla wartość pochodzącą z innych wartości. | Zamapuj dekorator tekstu na właściwość domeny Calculated lub Custom Storage. Aby uzyskać więcej informacji, zobacz Właściwości obliczeniowe i niestandardowego magazynu. |
Propagacja zmian między elementami modelu lub między kształtami | Zobacz Walidacja w języku specyficznym dla domeny. |
Propaguj zmiany do zasobów, takich jak inne rozszerzenia programu Visual Studio 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żesz również ustawić kategorię roli relacji. |
Kontrolowanie dostępu użytkownika do właściwości domeny | Ustaw wartość Fałsz funkcji Przeglądania, aby zapobiec wyświetlaniu właściwości domeny w okno Właściwości w czasie wykonywania. Nadal można mapować go na dekoratory tekstu. Czy interfejs użytkownika tylko do odczytu uniemożliwia użytkownikom zmianę 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 modeli. |
Włączanie kopiowania, wycinania i wklejania | Ustaw właściwość Włącz kopiowanie wklejenia węzła Edytor w Eksploratorze DSL. |
Kopiuj łącza odwołania i ich obiekty docelowe za każdym razem, gdy element zostanie skopiowany. Na przykład skopiuj komentarze dołączone do elementu. | Ustaw właściwość Propagates Copy roli źródłowej (reprezentowana przez wiersz po jednej stronie relacji domeny na diagramie definicji DSL). Napisz kod, aby zastąpić narzędzie ProcessOnCopy, aby osiągnąć bardziej złożone efekty. Zobacz Dostosowywanie zachowania kopiowania. |
Usuwanie, ponowne usuwanie lub ponowne łączenie powiązanych elementów po usunięciu elementu. | Ustaw wartość Propagates Delete roli relacji. W przypadku bardziej złożonych efektów przesłonięcia ShouldVisitRelationship i ShouldVisitRolePlayer metod w klasie zdefiniowanej MyDslDeleteClosure w pliku DomainModel.cs. |
Zachowaj układ kształtu i wygląd podczas kopiowania i przeciągania. | Dodaj kształty i łączniki do skopiowanego ElementGroupPrototype elementu . Najwygodniejsza metoda zastąpienia to ElementOperations.CreateElementGroupPrototype() Zobacz Dostosowywanie zachowania kopiowania. |
Wklej kształty w wybranej lokalizacji, na przykład bieżące położenie kursora. | Zastąpić ClipboardCommandSet.ProcessOnCopy() , aby użyć wersji specyficznej ElementOperations.Merge(). dla lokalizacji zobacz Dostosowywanie zachowania kopiowania. |
Tworzenie dodatkowych linków podczas wklejania | Zastąp schowekCommandSet.ProcessOnPasteCommand() |
Włącz przeciąganie i upuszczanie z tego diagramu, innych elementów DSL i Windows | Zobacz Instrukcje: dodawanie procedury obsługi przeciągania i upuszczania |
Umożliwia przeciągnięcie kształtu lub narzędzia na kształt podrzędny, taki jak port, tak jakby został przeciągnięty na element nadrzędny. | Zdefiniuj dyrektywę scalania elementu w klasie obiektu docelowego, aby przekazać obiekt porzucony do obiektu nadrzędnego. Zobacz Dostosowywanie tworzenia i przenoszenia elementów. |
Umożliwia przeciąganie kształtu lub narzędzia na kształt i utworzenie dodatkowych łączy lub obiektów. Na przykład, aby zezwolić na usunięcie komentarza do elementu, do którego ma być połączony. | Zdefiniuj dyrektywę scalania elementów w docelowej klasie domeny i zdefiniuj łącza do wygenerowania. W złożonych przypadkach można dodać kod niestandardowy. Zobacz Dostosowywanie tworzenia i przenoszenia 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 pliku ToolboxHelper.cs. Utwórz prototyp grupy elementów (EGP) zawierający elementy i ich linki relacji. Zobacz Dostosowywanie narzędzi i przybornika. Dołącz kształty podmiotu zabezpieczeń i portu do EGP lub zdefiniuj wartości BoundsRules, aby ustawić kształty portów po utworzeniu wystąpienia egp. |
Użyj jednego narzędzia połączenia, aby utworzyć wystąpienie kilku typów relacji. | Dodaj dyrektywy Połączenie linku (LCD) do konstruktora Połączenie ion wywoływanego przez narzędzie. Identyfikatory LCD określają typ relacji z typów dwóch elementów. Aby to zależeć od stanów elementów, można dodać kod niestandardowy. Zobacz Dostosowywanie narzędzi i przybornika. |
Narzędzia sticky — użytkownik może kliknąć dwukrotnie dowolne narzędzie, aby utworzyć wiele kształtów lub łączników z rzędu. | W Eksploratorze Editor DSL wybierz węzeł. W okno Właściwości ustaw pozycję Używa elementów przybornika Sticky. |
Definiowanie poleceń menu | Zobacz Instrukcje: modyfikowanie standardowego polecenia menu |
Ograniczanie modelu przy użyciu reguł walidacji | Zobacz Walidacja w języku specyficznym dla domeny |
Generowanie kodu, plików konfiguracji lub dokumentów z rozszerzenia DSL. | Generowanie kodu z języka specyficznego dla domeny |
Dostosuj sposób zapisywania modeli w pliku. | Zobacz Dostosowywanie magazynu plików i serializacji XML |
Zapisywanie modeli w bazach danych lub innych nośnikach. | Zastąpuj metodę YourLanguageDocData Zobacz Dostosowywanie magazynu plików i serializacji XML |
Zintegruj kilka list DSL, aby działały w ramach jednej aplikacji. | Zobacz Integrowanie modeli przy użyciu programu Visual Studio Modelbus. |
Zezwól na rozszerzenie DSL przez inne firmy i kontrolowanie rozszerzenia. | 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 |
Powiązana zawartość
- Instrukcje: Definiowanie języka właściwego dla domeny
- Pisanie kodu w celu dostosowania języka specyficznego dla domeny
- Modelowanie SDK dla Visual Studio — języki specyficzne dla domeny
Uwaga
Składnik Przekształcanie szablonu tekstu jest automatycznie instalowany w ramach obciążenia programistycznego rozszerzenia programu Visual Studio. Można go również zainstalować na karcie Poszczególne składniki Instalator programu Visual Studio w kategorii Zestawy SDK, biblioteki i struktury. Zainstaluj składnik Zestawu SDK modelowania na karcie Poszczególne składniki.