Dil

Veri Akışı Bileşeni için Kullanıcı Arabirimi Geliştirme

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Bileşen geliştiricileri, bir bileşen için özel bir kullanıcı arayüzü sağlayabilir; bu arayüz, bileşen düzenlendiğinde SQL Server Veri Araçları (SSDT)'de görüntülenir. Özel bir kullanıcı arayüzü uygulamak, bileşenin veri akışı görevine eklendiğinde veya silindiğinde ve bileşen için yardım istendiğinde bildirim sağlar.

Bileşeniniz için özel bir kullanıcı arayüzü sağlamazsanız, kullanıcılar bileşeni ve özel özelliklerini yine de Gelişmiş Düzenleyici kullanarak yapılandırabilirler. Gelişmiş Düzenleyici'ın, uygun olduğunda ve UITypeEditor özelliklerini IDTSCustomProperty100 kullanarak TypeConverter kullanıcıların özel özellik değerlerini uygun şekilde düzenlemelerini sağladığından emin olabilirsiniz. Daha fazla bilgi için, Design-time Methods of a Veri Akışı Component bölümünde "Özel Özellikler Oluşturma" bölümüne bakınız.

UITypeName Özelliğinin Ayarlanması

Özel bir kullanıcı arayüzü sağlamak için, geliştirici arayüzü DtsPipelineComponentAttribute uygulayan bir sınıfın IDtsComponentUI adına özelliği ayarlamalıdırUITypeName. Bu özellik bileşen tarafından ayarlandığında, SQL Server Integration Services, bileşen SSIS Designer'da düzenlendiğinde özel kullanıcı arayüzünü yükler ve çağırır.

Bu UITypeName özellik, türün tam nitelikli adını tanımlayan virgülle ayrılmış bir dizedir. Aşağıdaki liste, tipi tanımlayan öğeleri sırayla göstermektedir:

  • Tür adı

  • Montaj adı

  • Dosya versiyonu

  • Kültür

  • Açık anahtar tokeni

Aşağıdaki kod örneği, temel sınıftan PipelineComponent türeden ve özelliği UITypeName belirten bir sınıfı gösterir.

[DtsPipelineComponent(  
DisplayName="SampleComponent",  
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...",  
ComponentType = ComponentType.Transform)]  
public class SampleComponent : PipelineComponent  
{  
//TODO: Implement the component here.  
}  
<DtsPipelineComponent(DisplayName="SampleComponent", _  
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...", ComponentType=ComponentType.Transform)> _   
Public Class SampleComponent   
 Inherits PipelineComponent   
End Class  

IDtsComponentUI Arayüzü'nün Uygulanması

Arayüz, IDtsComponentUI bir bileşen eklendiğinde, silindiğinde ve düzenlendiğinde SSIS Designer'ın çağırdığı yöntemleri içerir. Bileşen geliştiricileri, bu yöntemlerin uygulanmasında bileşen kullanıcılarıyla etkileşim kurmak için kod sağlayabilir.

Bu sınıf genellikle bileşenin kendisinden ayrı bir montajda uygulanır. Ayrı bir montaj kullanımı zorunlu olmasa da, bu geliştiricinin bileşeni ve kullanıcı arayüzünü birbirinden bağımsız olarak inşa edip dağıtmasına olanak tanır ve bileşenin ikili ayak izini küçük tutar.

Özel bir kullanıcı arayüzü uygulamak, bileşen geliştiricisine SSIS Designer'da düzenlenirken bileşen üzerinde daha fazla kontrol sağlar. Örneğin, bir bileşen yönteme New kod ekleyebilir; bu, bir bileşen veri akışı görevine ilk eklendiğinde çağrılır ve kullanıcıyı bileşenin ilk yapılandırmasında yönlendiren bir sihirbaz gösterebilir.

Arayüzü uygulayan IDtsComponentUI bir sınıf oluşturduktan sonra, bileşenle kullanıcı etkileşimine yanıt vermek için kod eklemeniz gerekir. Yöntem, Initialize bileşenin arayüzünü sağlar IDTSComponentMetaData100 ve ve Edit metodlarından önce New çağrılır. Bu referans, özel bir üye değişkeninde saklanmalı ve bileşenin meta verisini değiştirmek için kullanılmalıdır.

Bir Bileşeni Değiştirmek ve Değişiklikleri Sürdürmek

Arayüz, IDTSComponentMetaData100 yönteme Initialize bir parametre olarak sağlanır. Bu referans, kullanıcı arayüzü kodu tarafından bir üye değişkeninde önbelleğe alınmalı ve kullanıcı arayüzüyle kullanıcı etkileşimine yanıt olarak bileşeni değiştirmek için kullanılmalıdır.

Bileşeni doğrudan arayüz IDTSComponentMetaData100 üzerinden değiştirebilseniz de, yöntemi Instantiate kullanarak bir örnek CManagedComponentWrapper oluşturmak daha iyidir. Arayüzü kullanarak bileşeni doğrudan düzenlediğinizde, bileşenin doğrulama önlemlerini atlarsınız. Bileşenin CManagedComponentWrapper tasarım süresi örneğini kullanmanın avantajı, bileşenin üzerinde yapılan değişiklikler üzerinde kontrol sahibi olmanızı sağlamaktır.

Yöntemin iade değeri, bir bileşende yapılan değişikliklerin Edit devam edip edilmediğini veya atılıp kaldırılmadığını belirler. Bu yöntem false dönerse, tüm değişiklikler atılır; True , bileşendeki değişiklikleri sürdürür ve paketi kaydedilmesi gereken olarak işaretler.

SSIS Tasarımcısının Hizmetlerinin Kullanımı

Yöntemin InitializeIServiceProvider parametresi, SSIS Designer'ın aşağıdaki hizmetlerine erişim sağlar:

Service Description
IDtsClipboardService Bileşenin kopyala/yapıştır veya kes/yapıştır işlemi kapsamında oluşturulup oluşturulmadığını belirlemek için kullanılır.
IDtsConnectionService Mevcut bağlantılara erişmek veya pakette yeni bağlantılar oluşturmak için kullanılır.
IErrorCollectionService Bileşenin çıkardığı tüm hataları ve uyarıları yakalamanız gerektiğinde veri akışı bileşenlerinden olayları yakalamak için kullanılır, sadece son hata veya uyarıyı almak yerine.
IDtsVariableService Mevcut değişkenlere erişmek veya pakette yeni değişkenler oluşturmak için kullanılır.
IDtsPipelineEnvironmentService data flow bileşenleri tarafından ana Veri Akışı görevine ve data flow'taki diğer bileşenlere erişmek için kullanılır. Bu özellik, ihtiyaç duyulduğunda ek veri akışı bileşenleri oluşturup bağlayan Yavaş Değişen Boyut Sihirbazı gibi bir bileşen geliştirmek için kullanılabilir.

Bu hizmetler, bileşen geliştiricilerine bileşenin yüklendiği pakette nesnelere erişme ve oluşturma imkanı sağlar.

Sample

Aşağıdaki kod örneği, arayüzü IDtsComponentUI uygulayan özel bir kullanıcı arayüzü sınıfı ile bir bileşen için düzenleyici olarak hizmet veren bir Windows formunun entegrasyonunu göstermektedir.

Özel Kullanıcı Arayüzü Sınıfı

Aşağıdaki kod, arayüzü IDtsComponentUI uygulayan sınıfı gösterir. Yöntem, Edit bileşen düzenleyicisini oluşturur ve ardından formu gösterir. Formun dönüş değeri, bileşendeki değişikliklerin devam edip etmediğini belirler.

using System;  
using System.Windows.Forms;  
using Microsoft.SqlServer.Dts.Runtime;  
using Microsoft.SqlServer.Dts.Pipeline.Design;  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
  
namespace Microsoft.Samples.SqlServer.Dts  
{  
    public class SampleComponentUI : IDtsComponentUI  
    {  
        IDTSComponentMetaData100 md;  
        IServiceProvider sp;  
  
        public void Help(System.Windows.Forms.IWin32Window parentWindow)  
        {  
        }  
        public void New(System.Windows.Forms.IWin32Window parentWindow)  
        {  
        }  
        public void Delete(System.Windows.Forms.IWin32Window parentWindow)  
        {  
        }  
        public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Variables vars, Connections cons)  
        {  
            // Create and display the form for the user interface.  
            SampleComponentUIForm componentEditor = new SampleComponentUIForm(cons, vars, md);  
  
            DialogResult result  = componentEditor.ShowDialog(parentWindow);  
  
            if (result == DialogResult.OK)  
                return true;  
  
            return false;  
        }  
        public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)  
        {  
            // Store the component metadata.  
            this.md = dtsComponentMetadata;  
        }  
    }  
}  
Imports System   
Imports System.Windows.Forms   
Imports Microsoft.SqlServer.Dts.Runtime   
Imports Microsoft.SqlServer.Dts.Pipeline.Design   
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper   
  
Namespace Microsoft.Samples.SqlServer.Dts   
  
 Public Class SampleComponentUI   
 Implements IDtsComponentUI   
   Private md As IDTSComponentMetaData100   
   Private sp As IServiceProvider   
  
   Public Sub Help(ByVal parentWindow As System.Windows.Forms.IWin32Window)   
   End Sub   
  
   Public Sub New(ByVal parentWindow As System.Windows.Forms.IWin32Window)   
   End Sub   
  
   Public Sub Delete(ByVal parentWindow As System.Windows.Forms.IWin32Window)   
   End Sub   
  
   Public Function Edit(ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal vars As Variables, ByVal cons As Connections) As Boolean   
     ' Create and display the form for the user interface.  
     Dim componentEditor As SampleComponentUIForm = New SampleComponentUIForm(cons, vars, md)   
     Dim result As DialogResult = componentEditor.ShowDialog(parentWindow)   
     If result = DialogResult.OK Then   
       Return True   
     End If   
     Return False   
   End Function   
  
   Public Sub Initialize(ByVal dtsComponentMetadata As IDTSComponentMetaData100, ByVal serviceProvider As IServiceProvider)   
     Me.md = dtsComponentMetadata   
   End Sub   
 End Class   
  
End Namespace  

Özel Editör

Aşağıdaki kod, metod çağrısı Edit sırasında gösterilen Windows formunun uygulanmasını gösterir.

using System;  
using System.Drawing;  
using System.Collections;  
using System.ComponentModel;  
using System.Windows.Forms;  
using System.Data;  
  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
using Microsoft.SqlServer.Dts.Runtime;  
  
namespace Microsoft.Samples.SqlServer.Dts  
{  
    public partial class SampleComponentUIForm : System.Windows.Forms.Form  
    {  
        private Connections connections;  
        private Variables variables;  
        private IDTSComponentMetaData100 metaData;  
        private CManagedComponentWrapper designTimeInstance;  
        private System.ComponentModel.IContainer components = null;  
  
        public SampleComponentUIForm( Connections cons, Variables vars, IDTSComponentMetaData100 md)  
        {  
            variables = vars;  
            connections = cons;  
            metaData = md;  
        }  
  
        private void btnOk_Click(object sender, System.EventArgs e)  
        {  
            if (designTimeInstance == null)  
                designTimeInstance = metaData.Instantiate();  
  
            designTimeInstance.SetComponentProperty( "CustomProperty", txtCustomPropertyValue.Text);  
  
            this.Close();  
        }  
  
        private void btnCancel_Click(object sender, System.EventArgs e)  
        {  
            this.Close();  
        }  
    }  
}  
Imports System   
Imports System.Drawing   
Imports System.Collections   
Imports System.ComponentModel   
Imports System.Windows.Forms   
Imports System.Data   
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper   
Imports Microsoft.SqlServer.Dts.Runtime   
  
Namespace Microsoft.Samples.SqlServer.Dts   
  
 Public Partial Class SampleComponentUIForm   
  Inherits System.Windows.Forms.Form   
   Private connections As Connections   
   Private variables As Variables   
   Private metaData As IDTSComponentMetaData100   
   Private designTimeInstance As CManagedComponentWrapper   
   Private components As System.ComponentModel.IContainer = Nothing   
  
   Public Sub New(ByVal cons As Connections, ByVal vars As Variables, ByVal md As IDTSComponentMetaData100)   
     variables = vars   
     connections = cons   
     metaData = md   
   End Sub   
  
   Private Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs)   
     If designTimeInstance Is Nothing Then   
       designTimeInstance = metaData.Instantiate   
     End If   
     designTimeInstance.SetComponentProperty("CustomProperty", txtCustomPropertyValue.Text)   
     Me.Close   
   End Sub   
  
   Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)   
     Me.Close   
   End Sub   
 End Class   
  
End Namespace