Aracılığıyla paylaş


Araçlar ve araç özelleştirme

Araç kutusu öğeleri kendi modellerini eklemelerine olanak istediğiniz öğeler için tanımlamanız gerekir.Araçlar iki tür vardır: öğe araçları ve bağlantı araçları.Oluşturulan Tasarımcısı'nda bir kullanıcı çizime Şekil sürüklemek için bir öğe aracını seçebilirsiniz ve bağlantılar arasında şekiller çizmek için bir bağlantı aracı seçebilirsiniz.Genel olarak, öğe Araçlar kendi modelleri için etki alanı sınıfları eklemelerine olanak ve bağlantı araçları bunları etki ilişkileri örneklerini eklemek izin verin.

Bu konuda:

  • Toolbox sekmeleri değiştirme

  • Öğe araçları

  • Bir aracından öğelerinin grupları oluşturma

  • Bağlantı araçları

  • Araç kutusundaki öğelerin sırasını değiştirme

Araç nasıl tanımlanır

dsl Explorer'da Düzenleyicisi düğümü ve bunun altındaki düğümleri genişletin.Genellikle bu benzer bir hiyerarşi görürsünüz:

Editor
     Toobox Tabs
        MyDsl          //a tab
           Tools
               ExampleElement      // an element tool
               ExampleRelationship // a connection tool

dsl Explorer'ın bu bölümünde şunları yapabilirsiniz:

  • Yeni sekmeler oluşturmak.Sekmeler, araç kutusunda Kısım başlıkları tanımlayın.

  • Yeni Araçlar oluşturabilirsiniz.

  • Kopyalama ve yapıştırma Araçlar.

  • Listede Araçlar yukarı veya aşağı taşıyın.

  • Sekmeler ve araçlar silin.

Önemli notÖnemli

Eklemek veya dsl Explorer'da öğeleri yapıştırmak için yeni düğümün grandparent sağ tıklatın.Örneğin, bir araç eklemek için sağ sekmesini tıklatın ve araçları düğüm.Bir sekme eklemek için sağ Düzenleyen düğüm.

Toolbox simgesi özelliği her Aracı'nın, 16 x 16 bit eşlem dosyası başvurur.Bu dosyalar genellikle tutulur Dsl\Resources klasörü.

Sınıfı özelliği bir öğe aracının somut etki alanı sınıfına başvurur.Varsayılan olarak, bu sınıfın örnekleri, aracı oluşturacaktır.Ancak, aracın öðeleri ya da farklı türdeki öğeleri oluşturmak için kod yazabilirsiniz.

Bağlantı Oluşturucu aracı ne tür öğeler bağlanabilir ve ilişkiler oluşturduğu aralarında tanımlayan bir bağlantı Oluşturucu özelliği bağlantı Aracı'nın başvurur.Bağlantı üreticileri dsl Explorer düğüm şeklinde tanımlanır.Bağlantı üreticileri etki ilişkileri tanımlar, ancak bunları özelleştirmek için kod yazabilirsiniz otomatik olarak oluşturulur.

Araç için bir araç eklemek için

  1. Shape sınıfı oluşturulan ve bir etki alanı sınıfına eşlenen sonra genellikle bir öğe aracı oluşturabilirsiniz.

    Bir bağlayıcı sınıfı ve bir başvuru ilişki eşlenen sonra genellikle bağlayıcı aracı oluşturabilirsiniz.

  2. dsl Explorer'da genişletin Düzenleyen düğümü ve Toolbox sekmeleri düğüm.

    Bir toolbox sekmesi düğümünü sağ tıklatın ve ardından Yeni öğe aracı ekleme veya Yeni bağlantı aracı ekleme.

  3. Set Toolbox simgesi 16 x 16 bit eşlem için başvurmak için özellik.

    Yeni bir simge tanımlamak istiyorsanız, Solution Explorer içindeki bir bit eşlem dosyası oluşturmak Dsl\Resources klasörü.Dosyayı aşağıdaki özellik değerleri listelenmelidir: Build eylem = İçerik; Çıkış dizine kopyalayın = kopyalamak değil.

  4. Öğe Aracı için: Set sınıfı özelliği bir şekle eşlenen bir somut etki sınıfı başvurmak için aracı.

    Bağlayıcı Aracı için: Set Bağlantı Oluşturucu özelliği aşağı açılan listede sunulan öğelerden birini aracı.Bir bağlayıcı etki alanı ilişkisi eşlediğinizde üreticileri bağlantı otomatik olarak oluşturulur.Son zamanlarda bir bağlayıcı oluşturduysanız, ilişkili bağlantı Oluşturucu normalde seçersiniz.

  5. dsl sınamak için F5 veya ctrl + F5 tuşlarına basın ve Deneysel örneğinde Visual Studio, örnek model dosyasını açın.Yeni araç, araç görüntülenmesi gerekir.Yeni bir öğe oluşturur olduğunu doğrulamak için Diyagram sürükleyin.

    Aracı görünmüyorsa, Deneysel Dur Visual Studio.Windows Start Çalıştır menüsünü Microsoft Visual Studio 2010 Deneysel örneği Sıfırla.Üzerinde Visual StudioBuild menüsünde,'ı Çözüm yeniden.dsl yeniden sınayın.

Öğe araçlarını özelleştirme

Varsayılan olarak, araç belirtilen sınıfın tek bir örneğini oluşturur, ancak bu iki şekilde değişebilir:

  • Bunları yeni bu sınıfın örnekleri, kabul etmek etkinleştirme ve yeni öğe oluşturulduğunda, ek bağlantılar oluşturmak için bunları etkinleştirme diğer sınıfları, öğenin birleştirme yönergeleri tanımlayın.Örneğin, kullanıcı başka bir öğenin üzerine bir yorum bırakmak izin ve böylece ikisi arasındaki başvuru bağlantısı oluşturun.

    Bu özelleştirmeleri kullanıcı yapıştırır veya fare ile sürüklendiğinde ve öğenin düşünceye ne olacağını da etkiler.

    Daha fazla bilgi için bkz. Öğe oluşturma ve taşıma özelleştirme.

  • Öğe grupları oluşturabilir ve böylece Özelleştirme Aracı için kod yazmak.Aracı, geçersiz kılabilirsiniz ToolboxHelper.cs yöntemleri tarafından başlatıldı.Daha fazla bilgi için bkz: Oluşturma grupları öğeleri bir aracı.

Bb126279.collapse_all(tr-tr,VS.110).gifBir aracından öğelerinin grupları oluşturma

Her öğe aracı prototip oluşturmak öğeleri içerir.Varsayılan olarak, her öğe aracını tek bir öğe oluşturur, ancak bir araçla ilgili nesnelerin grubunu oluşturmak da mümkündür.Bunu yapmak için araçla birlikte başlatmak bir ElementGroupPrototype , ilgili öğeleri içerir.

Aşağıdaki örnek, bir tür adet transistöre olduğu dsl alınır.Üç adlandırılmış Terminaller her adet transistöre sahiptir.Transistors öğesi aracın dört modeli öğeleri ve üç ilişki bağlantılar içeren bir prototip depolar.Kullanıcı aracı Diyagram sürüklendiğinde, prototip örneği ve model köke bağlı.

Bu kod içinde tanımlanan bir yöntemi geçersiz kılar Dsl\GeneratedCode\ToolboxHelper.cs.

Program kodunu kullanarak modeli özelleştirme hakkında daha fazla bilgi için bkz: Gezinme ve Program kodunda bir modeli güncelleştiriliyor.

using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;

  public partial class CircuitsToolboxHelper
  {
    /// <summary>
    /// Toolbox initialization, called for each element tool on the toolbox.
    /// This version deals with each Component subtype separately.
    /// </summary>
    /// <param name="store"></param>
    /// <param name="domainClassId">Identifies the domain class this tool should instantiate.</param>
    /// <returns>prototype of the object or group of objects to be created by tool</returns>
    protected override ElementGroupPrototype CreateElementToolPrototype(Store store, Guid domainClassId)
    {
        if (domainClassId == Transistor.DomainClassId)
        {
            Transistor transistor = new Transistor(store);

            transistor.Base = new ComponentTerminal(store);
            transistor.Collector = new ComponentTerminal(store);
            transistor.Emitter = new ComponentTerminal(store);

            transistor.Base.Name = "base";
            transistor.Collector.Name = "collector";
            transistor.Emitter.Name = "emitter";

            // Create an ElementGroup for the Toolbox.
            ElementGroup elementGroup = new ElementGroup(store.DefaultPartition);
            elementGroup.AddGraph(transistor, true);
            // AddGraph includes the embedded parts

            return elementGroup.CreatePrototype();
        }
        else
        {
            return base.CreateElementToolPrototype(store, domainClassId);
}  }    }

Bağlantı araçları özelleştirme

Genellikle, yeni bir bağlayıcı sınıf oluşturduğunuzda bir öğe aracı oluşturmak.Alternatif olarak, ilişkinin türünü belirlemek için iki ucu türlerini vererek bir aracı aşırı yüklenebilir.Örneğin, kişinin kişilik ilişkileri hem kişi Şehir ilişkileri oluşturabilirsiniz bir bağlantı aracı tanýmlayabilirsiniz.

Bağlantı araçları bağlantı üreticileri harekete geçirmek.Bağlantı üreticileri, kullanıcılara oluşturulmuş Tasarımcısı öğelerini nasıl bağlayabilirsiniz belirlemek için kullanın.Bağlantı üreticileri bağlanabilir öğeleri ve bunların arasında oluşturulan bağlantı türünü belirtin.

Bağlantı Oluşturucu, etki alanı sınıfları arasında başvuru ilişki oluşturduğunuzda otomatik olarak oluşturulur.Bir bağlantı aracı eşleştirdiğinizde Bu bağlantı Oluşturucu'yu kullanabilirsiniz.Bağlantı araçları oluşturma hakkında daha fazla bilgi için bkz: Araçlar ve araç özelleştirme.

Böylece farklı bir kaynak ve hedef türleri aralığı Dağıt ve farklı türde ilişki oluşturmak, varsayılan bağlantı Oluşturucu değiştirebilirsiniz.

Bağlantı için kaynak ve hedef sınıfları belirtmek için yapılması için bağlantı türünü tanımlamak ve bir bağlantı oluşturma ile ilişkili diğer eylemleri bağlantı üreticileri için özel kod da yazabilirsiniz.

Bb126279.collapse_all(tr-tr,VS.110).gifBağlantı üreticileri yapısı

Bir bağlantı üreticileri içeren ya da daha fazla bağlantı etki alanı ilişkisi ve kaynak ve hedef öğeleri belirtin yönergeleri bağlanın.Örneğin, görev akış çözümü şablon içinde CommentReferencesSubjectsBuilder görmek dsl Explorer.Bu bağlantı Oluşturucu bir bağlantıyı içeren adlı yönergesi bağlanmak CommentReferencesSubjects, hangi etki alanı ilişkisi CommentReferencesSubjects eşleştirilmiş.Bu bağlantı bağlanma yönergeyi işaret eden bir kaynak rolü yönergesini içeren Comment etki alanı sınıf ve gösterdiği hedef rolü yönergesi FlowElement etki alanı sınıfı.

Bb126279.collapse_all(tr-tr,VS.110).gifKaynak ve hedef rolleri kısıtlamak için bağlantı oluşturucular kullanma

Bağlantı üreticileri belirli kaynak rolü veya belirtilen etki alanında ilişki hedef rolü sınıflarda geçtiği sınırlamak için kullanabilirsiniz.Örneğin, başka bir etki alanı sınıfı bir etki alanı ilişkisi bir etki alanı temel sınıfı olabilir, ancak bu ilişkide aynı rollere sahip temel sınıfın türetilmiş tüm sınıflar istemeyebilirsiniz.Görev akış çözümü, doğrudan soyut etki alanı FlowElement devralması dört somut etki alanı sınıfları (StartPoint, bitiş noktası, MergeBranch ve eşitleme) ve dolaylı olarak sınıfından miras alan iki somut etki alanı sınıfları (görev ve ObjectInState) vardır.FlowElement etki alanı sınıfları kendi rolünü kaynak ve hedef rol alır bir akış başvuru ilişkisi yoktur.Ancak, bir bitiş noktası etki alanı sınıfının bir örneği kaynak akışı ilişkisi örneği olmamalıdır ve akış ilişki örneğini hedef StartPoint sınıfının bir örneği olması gereken.FlowBuilder bağlantı Oluşturucu yönergesini belirtir hedef rolü (MergeBranch, bitiş noktası ve eşitleme) sınıfları çalıp hangi etki alanında kaynak görevi (görev, MergeBranch, StartPoint ve eşitleme) ve hangi çalıp akış adlı bağlanmak bir bağlantı vardır.

Bb126279.collapse_all(tr-tr,VS.110).gifBirden çok bağlantı ile bağlantı üreticileri yönergeleri bağlanma

Birden fazla bağlantı ekleyebilirsiniz yönergesi bir bağlantı Oluşturucu bağlayın.Bu, kullanıcıların etki alanı modelinden GetMembers gizlemek ve tutmak yardımcı araç çok karışmasını karşı.Ekleyebileceğiniz bağlantı yönergeleri için birkaç farklı etki alanı ilişkilerini bir tek bağlantı Oluşturucu bağlamak.Bununla birlikte, yaklaşık olarak aynı işlevini gerçekleştirdiğinizde etki ilişkileri birleştirmelisiniz.

Görev akış çözümü, akış bağlantı aracı akışını hem de ObjectFlow etki alanı ilişkilerini örneklerini çizmek için kullanılır.Bağlantı Oluşturucu sahip akış bağlantısının yanı sıra bağlantı yukarıda açıklanan yönergesi FlowBuilder, iki bağlantı yönergeleri ObjectFlow adlı bağlayın.Bu yönergeleri ObjectFlow ilişki örneğini ObjectInState etki alanı sınıfının veya bir görev, ancak bir görev iki örneği arasında değil, örneğine bir ObjectInState örneği veya bir ObjectInState örneği için bir görev örneğini örnekleri arasında çizilmiş belirtin.Ancak, akışı ilişkisi örneği bir görev iki örneği arasında çizilmiş.Derleme ve görev akışı çözümünü çalıştırırsanız, görevin bir örneği için bir ObjectInState bir örneğinden bir akış çizim ObjectFlow bir örneğini oluşturur, ancak bir görev iki örneği arasında bir akış çizimi bir akışı örneği oluşturur görebilirsiniz.

Bb126279.collapse_all(tr-tr,VS.110).gifBağlantı üreticileri için özel kod

Bağlantı oluşturucular özelleştirme farklı türlerini tanımlamak dört onay kutuları kullanıcı arabiriminde vardır:

  • özel kabul bir kaynak veya hedef rolü yönergesi onay kutusu

  • özel bağlanma bir kaynak veya hedef rolü yönergesi onay kutusu

  • özel bağlantı kullanan Bağlan yönergesi onay kutusu

  • Olan özel bağlantı Oluşturucu özelliği

Bu özelleştirmeler yapmak için bazı program kodunu girmeniz gerekir.Sağlamanız gerekir ne kodu bulmak için bu kutulardan denetleyin, dönüştürme tüm Şablonları'nı tıklatın ve sonra çözümünüzü oluşturun.Bir hata raporu neden olur.Eklemeniz gereken hangi kodunu açıklayan bir açıklama görmek için hata raporu çift tıklatın.

[!NOT]

Özel kod eklemek için kısmi sınıf tanımını kod dosyasında kod dosyaları GeneratedCode klasörlere ayrı oluşturun.Çalışmalarınızı kaybetmemek için üretilen kod dosyaları düzenlememelisiniz.Daha fazla bilgi için bkz. Geçersiz kılma ve üretilen sınıfları genişletme.

Bb126279.collapse_all(tr-tr,VS.110).gifÖzel bağlantı kodu oluşturma

Yönergesi, her bağlantı bağlanma Kaynak rolü yönergeleri sekmesini tanımlar, türleri sürükleyebilirsiniz.Benzer şekilde, hedef rolü yönergeleri sekmesini tanımlar için türleri sürükleyebilirsiniz.Her türü için daha fazla ayarlayarak bağlantısı yönergesi (Bu bağlantıyı bağlanmak için) izin verilip verilmeyeceğini belirtebilirsiniz Özel kabul bayrak ve fazladan kod sağlama.

Ayrıca, bağlantı kurulduğunda ne olacağı da özelleştirebilirsiniz.Örneğin, ya da belirli bir sınıftan Sürükle oluştuğu durumda özelleştirebilirsiniz tüm servis talepleri, bir bağlantısının bağlantı yönergesi yönetir, veya tüm FlowBuilder bağlantı Oluşturucu.Bu seçeneklerin her biri için uygun düzeyde özel bayraklar ayarlayabilirsiniz.Tüm şablonları dönüştürmek ve çözümü oluşturmayı denerseniz, hata iletileri, oluşturulan kodda olduğu yorumları doğrudan.Bu açıklamalar sağlamanız gerekir tanımlayın.

Bileşenleri Diyagram örnek bağlantı Oluşturucu bağlantının etki alanı ilişkisi için bağlantı noktaları arasında yapılan bağlantıları sınırlamak için özelleştirilmiştir.Yalnızca gelen bağlantıları yapabileceğiniz aşağıda gösterilmiştir OutPort öğeleri InPort öğeleri, ancak bileşenlerinin birbiriyle iç içe.

' Bir OutPort iç içe geçmiş bir bileşenden gelen bağlantı

Bağlantı oluşturucu

Bu nedenle, bir bağlantı için bir OutPort iç içe geçmiş bir bileşenden gelebilir belirtmeyi isteyebilirsiniz.Böyle bir bağlantı belirtmek için Kullandığı özel kabul üzerinde InPort türü olarak Kaynak rolü ve OutPort türü hedef rolünde olarak dsl ayrıntıları aşağıdaki resimlerde gösterildiği gibi pencere:

Bağlantısının bağlantı dsl Explorer'da yönergesi

Bağlantı oluşturucu resmi

Bağlantısının bağlantı dsl Detayları penceresindeki yönergesi

Bb126279.ConnectionBuilder_4b(tr-tr,VS.110).png

Sonra ConnectionBuilder sınıfındaki yöntemler sağlaması gerekir:

  public partial class ConnectionBuilder
  {
    /// <summary>
    /// OK if this component has children
    /// </summary>
    private static bool CanAcceptInPortAsSource(InPort candidate)
    {
       return candidate.Component.Children.Count > 0;
    }

    /// <summary>
    /// Only if source is on parent of target.
    /// </summary>
    private static bool CanAcceptInPortAndInPortAsSourceAndTarget                (InPort sourceInPort, InPort targetInPort)
    {
      return sourceInPort.Component == targetInPort.Component.Parent;
    }
// And similar for OutPorts…

Program kodunu kullanarak modeli özelleştirme hakkında daha fazla bilgi için bkz: Gezinme ve Program kodunda bir modeli güncelleştiriliyor.

Kullanıcıların üst-alt bağlantıları ile döngü oluşturmasını engellemek için benzer bir kod gibi kullanabilirsiniz.Bu kısıtlamalar, kullanıcılar bunları herhangi bir zamanda ihlal edemez çünkü 'sabit' kısıtlamaları kabul edilir.Kaydedilemiyor geçersiz yapýlandýrmalarý oluþturarak kullanıcılar geçici olarak atlayabilirsiniz 'yumuşak' doğrulama denetimleri de oluşturabilirsiniz.

Bb126279.collapse_all(tr-tr,VS.110).gifBağlantı üreticileri tanımlamakta iyi

Yalnızca kavramsal olarak ilişkili oldukları, farklı türde ilişkileri oluşturmak için bir bağlantı Oluşturucu tanımlamanız gerekir.Görev akışı örnek görevler arasında ve ayrıca görevleri ile nesne arasındaki akışı oluşturmak için aynı Oluşturucusu'nu kullanın.Ancak, yorumlar ve görevler arasındaki ilişkileri oluşturmak için aynı Oluşturucusu'nu kullanmak kafa karıştırıcı olabilir.

Birden çok türde ilişkileri için bir bağlantı Oluşturucu tanımlarsanız, birden fazla kaynak ve hedef nesneler aynı bilgisayar çiftine türünden eşleştirilemiyor emin olmanız gerekir.Aksi halde, sonuçlar öngörülemez olacaktır.

'Sabit' kısıtlamaları uygulamak için özel kodlar kullanır, ancak kullanıcılar geçici olarak geçersiz bağlantıları yapma olanağınız olup olmadığını göz önünde bulundurmanız gerekir.Yapmaları gerektiğini, böylece kullanıcılar değişiklikleri kaydetmeye kadar bağlantıları doğrulanmaz kısıtlamaları değiştirebilirsiniz.

Ayrıca bkz.

Kavramlar

Öğe oluşturma ve taşıma özelleştirme

Kopyalama davranışını özelleştirme

Nasıl yapılır: sürükle ve bırak işleyicisi ekleyin

Gezinme ve Program kodunda bir modeli güncelleştiriliyor

Diğer Kaynaklar

Devre diyagramları örnek dsl