Aracılığıyla paylaş


Bir İş Öğesi Bağlantı İşleyicisi Nasıl Tanımlanır

Kullanıcı bir UML modeli öğesi ile iş öğesi arasında bağlantı oluşturduğunda veya bağlantıyı sildiğinde cevap veren bir Visual Studio Tümleştirme Uzantısı oluşturabilirsiniz. Örneğin, kullanıcı yeni iş öğesini bir model öğesine bağlamayı seçerse, kodunuz modeldeki değerlerden iş öğesi alanlarını başlatabilir.

Bir UML Uzantısı Çözümü Ayarlama

Bu, işleyicileri geliştirmenize ve diğer kullanıcılara dağıtmanıza izin verir. İki Visual Studio projesi ayarlamanız gerekir:

  • Bağlantı işleyici kodu içeren bir sınıf kitaplığı projesi.

  • Komut yüklemek için kapsayıcı görevi gören bir VSIX projesi. İsterseniz, aynı VSIX içine diğer bileşenleri dahil edebilirsiniz.

Visual Studio çözümünü kurmak için

  1. Varolan bir VSIX çözümüne ekleyerek veya yeni bir çözüm oluşturarak, bir sınıf kitaplığı projesi oluşturun.

    1. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'yi tıklayın.

    2. Yüklü Şablonlar altında Visual C# veya Visual Basic'i tıklatın, ardından orta sütundaki Sınıf Kitaplığı'nı tıklatın.

    3. Yeni bir çözüm oluşturmak veya önceden açmış olduğunuz VSIX çözümüne bir bileşen eklemek isteyip istemediğinizi belirtmek için Çözüm'ü ayarlayın.

    4. Proje Adını ve Konumunu ayarlayıp Tamam'ı tıklatın.

  2. Çözümünüz zaten bir tane içermiyorsa, bir VSIX projesi oluşturun.

    1. Çözüm Gezgini'nde çözümü sağ tıklatın, Ekle'nin üzerine gelin ve sonra Yeni Proje'yi tıklatın.

    2. Yüklü Şablonlar altından Visual C# veya Visual Basic'i genişletin ardından Genişletilebilirlik'i tıklatın. Orta sütundaki VSIX Projesi'ni tıklatın.

  3. Çözümün başlangıç projesi olarak VSIX projesini ayarlayın.

    • Çözüm Gezgini'nde VSIX projesini sağ tıklatın ve sonra Başlangıç Projesi Olarak Ayarla'yı tıklatın.
  4. source.extension.vsixmanifest öğesinde, İçerik'in altında, sınıf kitaplığı projesini MEF Bileşeni olarak ekleyin.

    1. source.extension.vsixmanifest öğesini açın.

    2. İçerik Ekle'ye tıklayın.

    3. Bir içerik türü seçin seçeneğinden MEF Bileşeni'ni seçin.

    4. Bir kaynak seçin seçeneğinde Proje'yi tıklatın ve sınıf kitaplığı projenizin adını seçin.

  5. Sürümleri Seçin'i tıklatın ve uzantınızı çalıştırmak istediğiniz Visual Studio sürümleri seçin.

  6. VSIX'in adını ve açıklayıcı alanlarını ayarlayın. Dosyayı kaydedin.

İş Öğesi Bağlantı İşleyicisini Tanımlama

Sınıf kitaplığı projesinde aşağıdaki görevlerin tümünü gerçekleştirin.

Proje Başvuruları

Aşağıdaki .NET derlemelerini projenizin başvurularına ekleyin:

Microsoft.TeamFoundation.WorkItemTracking.Client.dll

Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll Microsoft.VisualStudio.Modeling.Sdk.10.0

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml

Microsoft.VisualStudio.Uml.Interfaces

System.ComponentModel.Composition

System.Drawing - örnek kodu ile kullanılan

Eğer bu başvurulardan birini Başvuru Ekle iletişim kutusunun .Net sekmesi altında bulamazsanız, \Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\ içinde bulmak için Gözat sekmesini kullanın.

İş Öğesi İsim Uzayını İçe Aktarma

Visual Studio projeniz Başvurular'da, aşağıdaki derlemelere başvuruları ekleyin: 

  • Microsoft.TeamFoundation.WorkItemTracking.Client.dll

  • Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll

Program kodunuzda aşağıdaki isim uzaylarını içeri aktarın:

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;

Bağlantılı İş Öğesi Olay İşleyicisi Tanımlama

Sınıf kitaplığı projesine bir sınıf dosyası ekleyin ve içeriklerini aşağıdaki şekilde ayarlayın. Ad alanını ve sınıf adını istediğiniz şekilde değiştirin.

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;


namespace WorkItems
{
  [Export(typeof(ILinkedWorkItemExtension))]
  public class MyWorkItemExtension : ILinkedWorkItemExtension
  {
    // Called before a new work item is edited by the user.
    // Use this to initialize work item fields from the model element.
    public void OnWorkItemCreated(System.Collections.Generic.IEnumerable<IElement> elementsToBeLinked, IWorkItemDocument workItemDocument)
    {
      INamedElement namedElement =
            elementsToBeLinked.First() as INamedElement;
      if (namedElement != null)
        workItemDocument.Item.Title = namedElement.Name;

    }

    // Called when any work item is linked to a model element.
    public void OnWorkItemLinked(System.Collections.Generic.IEnumerable<IElement> elements, string serverUri, int workItemId)
    {
      foreach (IElement element in elements)
        foreach (IShape shape in element.Shapes())
          shape.Color = System.Drawing.Color.Red;
    }

    // Called when a work item is unlinked from a model element.
    public void OnWorkItemRemoved(IElement element, string serverUri, int workItemId)
    {
      foreach (IShape shape in element.Shapes())
        shape.Color = System.Drawing.Color.White;
    }
  }
}

Bağlantı İşleyicisini Sınama

Test amaçları için bağlantı işleyicinizi hata ayıklama modunda yürütün.

Bağlantı işleyicisini test etmek için

  1. F5'e basın ya da Hata Ayıklama menüsünde Hata Ayıklamayı Başlat'ı tıklatın.

    Visual Studio deneysel örneği başlar.

    Sorun giderme: Yeni bir Visual Studio başlamazsa, VSIX projesinin çözümün başlangıç projesi olarak ayarlandığından emin olun.

  2. Deneysel Visual Studio üzerinde bir modelleme projesi oluşturun veya açın ve bir modelleme diyagramı oluşturun veya açın.

  3. UML sınıfı gibi bir model öğesi oluşturun ve adını girin.

  4. Öğeyi sağ tıklayın ve İş Öğesi Oluştur'u tıklayın.

    • Alt menü Team Foundation Server Bağlantısını Aç gösteriyorsa, bunu tıklatın ve bir sunucuya bağlanmak için iletişim kutularını izleyin. Sonra tekrar model öğesini sağ tıklatın ve İş Öğesi Oluştur öğesini tıklatın.

    • Alt menü çalışma öğesi türlerinin bir listesini gösterirse, birini tıklatın.

      Yeni bir iş öğesi formu açılır.

  5. Önceki bölümdeki örnek kodu kullandıysanız, çalışma öğesinin başlığının model öğesi ile aynı olduğunu doğrulayın. Bu OnWorkItemCreated() öğesinin çalışmasını gösterir.

  6. Formu doldurun, iş öğesini kaydedin ve kapatın.

  7. Çalışma öğesi artık kırmızı renk olduğunu doğrulayın. Bu örnek kod içinde OnWorkItemLinked() öğesini gösterir.

    Sorun giderme: İşleyici yöntemler çalışmadıysa, şunları doğrulayın:

    • Sınıf kitaplığı projesi, bir MEF bileşeni olarak Content listesinde source.extensions.manifest VSIX projesinde listelenir.

    • Doğru Export özniteliği işleyici sınıfına eklenir ve sınıf ILinkedWorkItemExtension öğesini uygular.

    • Tüm Import ve Export özniteliklerinin parametreleri geçerlidir.

İş Öğesi İşleyici Kodu Hakkında

Yeni İş Öğeleri İçin Dinleme

Kullanıcı, model öğelere bağlanacak yeni bir iş öğesi oluşturmayı seçtiğinde OnWorkItemCreated çağrılır. Kodunuz iş öğesi alanlarını başlatabilir. Daha sonra iş öğesi, alanları güncelleyebilecek ve iş öğesini kaydedebilecek kullanıcıya gösterilir. İş öğesi başarıyla kaydedilene kadar model öğesine olan bağlantı oluşturulmaz.

  public void OnWorkItemCreated(
      IEnumerable<IElement> elementsToBeLinked,
      IWorkItemDocument workItem)
  {
    INamedElement namedElement = 
           elementsToBeLinked.First() as INamedElement;
    if (namedElement != null)
        workItem.Item.Title = namedElement.Name;
  }

Bağlantı Oluşturma İçin Dinleme

OnWorkItemLinked sadece bağlantı oluşturulduktan sonra çağırılır. Bağlantı yeni bir iş öğesine ya da varolan bir iş öğesine bağlandığında çağrılır. Her iş öğesi için bir kez çağırılır.

public void OnWorkItemLinked
        (IEnumerable<IElement> elements, 
         string serverUri, // TFS server
         int workItemId)
{
  foreach (IElement element in elements)
    foreach (IShape shape in element.Shapes())
         shape.Color = System.Drawing.Color.Red;
}

Not

Bu örneğin çalışması için, System.Drawing.dll'e proje başvurusu eklemelisiniz ve Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation isim uzayını içeri aktarmalısınız. Ancak, bu eklemeler OnWorkItemLinked'in diğer uygulamaları için gerekli değildir.

Bağlantı Kaldırma İçin Dinleme

OnWorkItemRemoved, her iş öğesi bağlantısı silinmeden hemen önce bir kez çağırılır. Eğer bir model öğesi silinirse, onun tüm bağlantıları kaldırılacaktır.

public void OnWorkItemRemoved
         (IElement element, string serverUri, int workItemId)
{...}

Bir iş öğesini güncelleştirmek

Team Foundation isim uzaylarını kullanarak bir iş öğesini düzenleyebilirsiniz.

Aşağıdaki örneği kullanmak için, bu .NET derlemelerini projenizin Başvurular'ına ekleyin:

  • Microsoft.TeamFoundation.Client.dll

  • Microsoft.TeamFoundation.WorkItemTracking.Client.dll

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
...
public void OnWorkItemLinked
        (IEnumerable<IElement> elements, 
         string serverUri, // TFS server
         int workItemId)
{
  TfsTeamProjectCollection tfs =
        TfsTeamProjectCollectionFactory
            .GetTeamProjectCollection(new Uri(serverUri));
  WorkItemStore workItemStore = new WorkItemStore(tfs);
  WorkItem item = workItemStore.GetWorkItem(workItemId);
  item.Open();
  item.Title = "something";
  item.Save();
} 

İş Öğesi Başvuru Bağlantılarına Erişme

Bağlantılara aşağıdaki gibi erişebilirsiniz:

element.GetReferences(ReferenceConstants.WorkItem)

Başvurular hakkında daha fazla bilgi için bkz. Nasıl yapılır: Model Öğelerine Başvuru Dizelerini İliştirme.

Ayrıca bkz.

Görevler

Model Öğelerinden İş Öğelerine Nasıl Bağlanılır

Başvuru

Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore

Kavramlar

UML API ile Programlama

Diğer Kaynaklar

Nasıl yapılır: Model Öğelerine Başvuru Dizelerini İliştirme

Nasıl yapılır: Bir Modelleme Uzantısı Tanımlama ve Yükleme