Megosztás a következőn keresztül:


Kód írása tartományspecifikus nyelv testreszabásához

Ez a szakasz bemutatja, hogyan használhat egyéni kódot egy tartományspecifikus nyelven (DSL) lévő modell elérésére, módosítására vagy létrehozására.

DSL-kód írásának környezete

Számos olyan környezet van, amelyben DSL-vel működő kódot írhat:

In-Memory Áruház

A DslDefinition.dsl-ben definiált osztályok példányai egy In-Memory Store (IMS) vagy Store nevű adatstruktúrában vannak tárolva. A DSL-ben definiált osztályok mindig argumentumként fogadnak el egy Tárolót a konstruktorhoz. Ha például a DSL a következő nevű Exampleosztályt definiálja:

Example element = new Example (theStore);

Az objektumok tárolása az Áruházban a szokásos objektumok helyett számos előnnyel jár.

  • Tranzakciók. A kapcsolódó módosítások sorozatát egy tranzakcióba csoportosíthatja:

    using (Transaction t = store.TransactionManager.BeginTransaction("updates"))
    {
      // make several changes to Store elements here
      t.Commit();
    }
    

    Ha kivétel történik a módosítások során, így a végleges Commit() nem lesz végrehajtva, az Áruház visszaáll a korábbi állapotára. Ezzel a módszerrel gondoskodhat arról, hogy a hibák ne hagyják inkonzisztens állapotban a modellt. További információ: Modell navigálása és frissítése a ProgramKódban.

  • Bináris kapcsolatok. Ha két osztály közötti kapcsolatot határoz meg, a mindkét végén lévő példányok rendelkeznek egy tulajdonsággal, amely a másik végére mutat. A két vége mindig szinkronizálva van. Ha például szülői kapcsolatot határoz meg a Szülők és gyermekek nevű szerepkörökkel, a következőt írhatja:

    John.Children.Add(Mary)

    A következő kifejezések mindegyike igaz:

    John.Children.Contains(Mary)

    Mary.Parents.Contains(John)

    Ugyanezt a hatást a következő írással is elérheti:

    Mary.Parents.Add(John)

    További információ: Modell navigálása és frissítése a ProgramKódban.

  • Szabályok és események. Definiálhat olyan szabályokat, amelyek a megadott módosítások végrehajtásakor aktiválódnak. A szabályok például arra szolgálnak, hogy a diagramon lévő alakzatok naprakészek legyenek az általuk használt modellelemekkel. További információt a Változások megválaszolása és propagálása című témakörben talál.

  • Szerializálás. Az Áruház szabványos módszert biztosít a fájlban található objektumok szerializálására. Testre szabhatja a szerializálás és a deszerializálás szabályait. További információ: A fájltárolás és az XML-szerializálás testreszabása.