Delen via


Een domeinspecifieke taal aanpassen en uitbreiden

Visual Studio Modeling and Visualization SDK (VMSDK) biedt verschillende niveaus waarop u hulpprogramma's voor modellering kunt definiëren:

  1. Definieer een domeinspecifieke taal (DSL) met behulp van het DSL-definitiediagram. U kunt snel een DSL maken met een diagrammatische notatie, een leesbaar XML-formulier en de basishulpprogramma's die nodig zijn om code en andere artefacten te genereren. Zie Een Domain-Specific Taal definiëren voor meer informatie.

  2. Verfijn de DSL met behulp van geavanceerdere functies van de DSL-definitie. U kunt bijvoorbeeld extra koppelingen weergeven wanneer de gebruiker een element maakt. Deze technieken worden meestal bereikt in de DSL-definitie en sommige vereisen een paar regels programmacode.

  3. Breid uw modelleringsprogramma's uit met behulp van programmacode. VMSDK is speciaal ontworpen om uw extensies eenvoudig te integreren met de code die wordt gegenereerd op basis van de DSL-definitie. Zie Code schrijven om een Domain-Specific Taal aan te passen voor meer informatie.

Opmerking

Vergeet niet om op Alle sjablonen transformeren in de werkbalk van Solution Explorer te klikken nadat u het bestand DSL-definities hebt bijgewerkt, voordat u de oplossing opnieuw bouwt.

Artikelreferentie

Dit effect bereiken Raadpleeg dit onderwerp
Hiermee staat u de gebruiker toe om de kleur- en stijleigenschappen van een vorm in te stellen. Klik met de rechtermuisknop op de vorm- of verbindingsklasse, wijs Beschikbaar toevoegen aan en klik op een item.
Verschillende klassen van modelelelementen lijken op elkaar in het diagram en delen eigenschappen zoals initiële hoogte en breedte, kleur, en tooltips. Gebruik overerving tussen vormen of verbindingslijnklassen. Toewijzingen tussen afgeleide vormen en afgeleide domeinklassen erven de toewijzingsdetails van hun ouders.

Of wijs verschillende domeinklassen toe aan dezelfde shapeklasse.
Een klasse van het modelelement wordt weergegeven door verschillende shapescontexten. Wijs meer dan één vormklasse toe aan dezelfde domeinklasse. Wanneer u de oplossing bouwt, volgt u het foutenrapport en geeft u de aangevraagde code op om te bepalen welke vorm u wilt gebruiken.
Vormkleur of andere functies, zoals lettertype, geven de huidige status aan. Zie Shapes en verbindingslijnen bijwerken om het model weer te geven.

Maak een regel waarmee de weergegeven eigenschappen worden bijgewerkt. Zie Regels doorgeven wijzigingen binnen het model.

Of gebruik OnAssociatedPropertyChanged() om niet-blootgestelde functies zoals koppelingspijlen of lettertype bij te werken.
Pictogram op vorm verandert om de status aan te geven. Stel de zichtbaarheid van de mapping van decorateurs in het DSL Details venster in. Zoek verschillende afbeeldingsdecorators op dezelfde positie. Zie Vormen en verbindingen bijwerken om het model te weerspiegelen.

Of overschrijven ImageField.GetDisplayImage(). Zie het voorbeeld in ImageField.
Een achtergrondafbeelding instellen op een vorm InitializeInstanceResources() overschrijven om een verankerd ImageField toe te voegen.
Vormen nesten tot iedere diepte Een recursieve inbeddingsboom instellen. Definieer BoundsRules om de vormen te bevatten.
Koppel verbindingslijnen op vaste punten op de grens van een element. Definieer ingesloten terminalelementen, vertegenwoordigd door kleine poorten in het diagram. Gebruik BoundsRules om de poorten te herstellen. Zie het circuitdiagramvoorbeeld bij Visualisatie en Modeling SDK.
In het tekstveld wordt een waarde weergegeven die is afgeleid van andere waarden. Wijs de tekstdecorator toe aan een Berekende of Aangepaste opslag domeineigenschap. Zie Eigenschappen voor berekende en aangepaste opslag voor meer informatie.
Wijzigingen propageren tussen modelelementen of tussen vormen Zie Validatie in een Domain-Specific Taal.
Geef wijzigingen door aan resources, zoals andere Visual Studio-extensies, buiten de winkelomgeving. Zie Gebeurtenishandlers verspreiden wijzigingen buiten het model.
In het eigenschappenvenster worden eigenschappen van een gerelateerd element weergegeven. Doorsturen van eigenschappen instellen. Zie Het venster Eigenschappen aanpassen.
Eigenschapscategorieën Het eigenschappenvenster is onderverdeeld in secties met de naam categorieën. Stel de categorie van uw domeineigenschappen in. Eigenschappen met dezelfde categorienaam worden weergegeven in dezelfde sectie. U kunt ook de categorie van een relatierol instellen.
Gebruikerstoegang tot domeineigenschappen beheren Instellen is Browsable false om te voorkomen dat een domeineigenschap wordt weergegeven in het venster Eigenschappen tijdens runtime. U kunt het nog steeds koppelen aan tekstdecorators.

Is UI Alleen Lezen voorkomt dat gebruikers een domeineigenschap wijzigen.

Programmatoegang tot de domeineigenschap wordt niet beïnvloed.
Wijzig de naam, het pictogram en de zichtbaarheid van knooppunten in de modelverkenner van uw DSL. Zie Modelverkenner aanpassen.
Kopiëren, knippen en plakken inschakelen Stel de eigenschap Copy Paste inschakelen van het knooppunt Editor in DSL Explorer in.
Kopieer referentiekoppelingen en hun doelen wanneer een element wordt gekopieerd. Kopieer bijvoorbeeld opmerkingen die zijn gekoppeld aan een item. Stel de eigenschap Propagates Copy van de bronrol in (vertegenwoordigd door de lijn aan één kant van de domeinrelatie in het diagram van de DSL-definitie).

Code schrijven om ProcessOnCopy te overschrijven om complexere effecten te bereiken.

Zie Gedrag van kopiëren aanpassen.
Gerelateerde elementen verwijderen, opnieuw toewijzen of opnieuw koppelen wanneer een element wordt verwijderd. Stel de Propagatie Verwijderen waarde van een relatierol in. Voor complexere effecten, overschrijf ShouldVisitRelationship en ShouldVisitRolePlayer methoden in de MyDslDeleteClosure klasse, gedefinieerd in DomainModel.cs.
Behoud de indeling en het uiterlijk van de vorm bij kopiëren en drag-and-drop. Voeg de vormen en verbindingen toe aan de gekopieerde ElementGroupPrototype. De handigste methode om te overschrijven is ElementOperations.CreateElementGroupPrototype()

Zie Gedrag van kopiëren aanpassen.
Plak shapes op een gekozen locatie, zoals de huidige cursorpositie. Gebruik ClipboardCommandSet.ProcessOnCopy() om de locatiespecifieke versie van ElementOperations.Merge(). te overschrijven. Zie Het aanpassen van het kopieergedrag.
Aanvullende koppelingen maken bij plakken KlembordCommandSet.ProcessOnPasteCommand() overschrijven
Schakel slepen en neerzetten in vanuit dit diagram, andere DSL's en Windows-elementen. Zie Hoe te: Een handler voor slepen en neerzetten toevoegen
Hiermee staat u toe dat een shape of hulpmiddel naar een onderliggende shape, zoals een poort, wordt gesleept alsof deze naar het bovenliggende element is gesleept. Definieer een elementsamenvoegingsrichtlijn voor de doelobjectklasse om het verplaatste object door te sturen naar het ouderobject. Zie Het maken en verplaatsen van elementen aanpassen.
Hiermee kunt u toestaan dat een vorm of hulpmiddel naar een andere vorm wordt gesleept, waarbij extra koppelingen of objecten worden gemaakt. Als u bijvoorbeeld wilt toestaan dat een opmerking wordt neergezet op een item waaraan het moet worden gekoppeld. Definieer een elementsamenvoegingsrichtlijn voor de doeldomeinklasse en definieer de koppelingen die moeten worden gegenereerd. In complexe gevallen kunt u aangepaste code toevoegen. Zie Het maken en verplaatsen van elementen aanpassen.
Maak een groep elementen met één hulpmiddel. Bijvoorbeeld een onderdeel met een vaste set poorten. Overschrijf de initialisatiemethode van de gereedschapskist in ToolboxHelper.cs. Maak een EGP (Element Group Prototype) met de elementen en de bijbehorende relatiekoppelingen. Zie Hulpmiddelen en de werkset aanpassen.

Neem de hoofd- en poortvormen op in het EGP of definieer BoundsRules om de poortvormen te positioneren wanneer het EGP wordt geïnstantieerd.
Gebruik één verbindingshulpprogramma om verschillende typen relaties te instantiëren. Voeg Link Connect Directives (LCD) toe aan de opbouwfunctie voor verbindingen die door het hulpprogramma wordt aangeroepen. De LCDs bepalen het relatietype op basis van de typen van de twee elementen. Als u dit afhankelijk wilt maken van de statussen van de elementen, kunt u aangepaste code toevoegen. Zie Hulpmiddelen en de werkset aanpassen.
Plakgereedschappen: de gebruiker kan dubbelklikken op een gereedschap om meerdere vormen of verbindingselementen achter elkaar te creëren. Selecteer het Editor knooppunt in DSL Explorer. In het venster Eigenschappen stelt u Gebruikt Plakbare Toolbox-items in.
Menuopdrachten definiëren Zie Procedure: Een standaardmenuopdracht wijzigen
Het model beperken met validatieregels Bekijk validatie in een domeinspecifieke taal
Genereer code, configuratiebestanden of documenten van een DSL. Code genereren op basis van een Domain-Specific-taal
Aanpassen hoe modellen worden opgeslagen in het bestand. Zie File Storage en XML-serialisatie aanpassen
Modellen opslaan in databases of andere media. Overschrijven van YourLanguageDocData

Zie File Storage en XML-serialisatie aanpassen
Integreer verschillende DSL's zodat ze werken als onderdeel van één toepassing. Zie Modellen integreren met behulp van Visual Studio Modelbus.
Sta toe dat uw DSL wordt uitgebreid door derden en controleer de uitbreiding. Uw DSL uitbreiden met behulp van MEF

Klassen delen tussen DSL's met behulp van een DSL-bibliotheek

Een vergrendelingsbeleid definiëren om Read-Only segmenten te maken

Opmerking

Het onderdeel Text Template Transformation wordt automatisch geïnstalleerd als onderdeel van de ontwikkelworkload van de Visual Studio-extensie . U kunt deze ook installeren op het tabblad Afzonderlijke onderdelen van Visual Studio Installer, onder de categorie SDK's, bibliotheken en frameworks . Installeer het Modeling SDK-onderdeel op het tabblad Afzonderlijke onderdelen .