Bir veri akışı bileşeni için bir kullanıcı arabirimi geliştirme
Bileşen geliştiricileri, görüntülenen bir bileşen için özel bir kullanıcı arabirimi sağlayabilir SQL Server Veri Akışı Araçları (SSDT)zaman bileşen düzenlenebilir. Özel bir kullanıcı arabirimi uygulayan bileşen eklenen ya da silinen veri akışı görev ve bileşen için Yardım istendiğinde bildirimi sağlar.
Bileşen için özel bir kullanıcı arabirimi sağlamazsanız, kullanıcılar hala bileşen ve özel özelliklerini Gelişmiş Düzenleyicisi'ni kullanarak yapılandırabilirsiniz. Gelişmiş Düzenleyici kullanarak özel özellik değerleri uygun şekilde düzenlemek için kullanıcılar sağlar emin olabilirsiniz TypeConverterve UITypeEditorözelliklerini IDTSCustomProperty100uygun olduğunda. Daha fazla bilgi için "Özel özellikler oluşturma" konusuna bakın. in Bileşen tasarım zamanı yöntemleri bir veri akışı.
UITypeName özelliği ayarlama
Özel bir kullanıcı arabirimi sağlamak için geliştirici ayarlamalısınız UITypeNameözelliği DtsPipelineComponentAttributeuygulayan bir sınıfın adını IDtsComponentUIarabirimi. Bileşen tarafından bu özelliği ayarlandığında SQL Server Integration Servicesyükler ve özel kullanıcı arabirimi bileşeni içinde düzenlenirken aramalar SSIStasarımcı.
UITypeNameTam türü tanımlar virgülle sınırlandırılmış bir dize özelliğidir. Aşağıdaki listede, sipariş, türünü tanımlayan öğeleri gösterir:
Tür adı
Derleme adı
Dosya sürümü
Kültür
Ortak anahtar belirteci
Aşağıdaki kod örneği dan türeyen bir sınıfı gösterir PipelineComponenttaban sınıfı ve belirtir UITypeNameözellik.
[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 : 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
<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 arabirimi uygulama
IDtsComponentUIArabirimini içeren yöntemleri, SSISTasarımcısı çağırır bir bileşen eklendi, silinmiş ve düzenlenmiş. Bileşen geliştiricileri uygulanışını bileşen kullanıcılarıyla etkileşimde bulunmak için bu yöntemlerin kodu sağlar.
Bu sınıf genellikle bir derleme bileşenden ayrı uygulanmaktadır. Ayrı bir derleme kullanımını gerekli olmasa da, bu geliştirici oluşturmak ve dağıtmak bileşen ve bağımsız olarak, her kullanıcı arabirimi sağlar ve bileşenin ikili ayak izi küçük tutar.
Bileşen olarak düzenlenmiş gibi daha fazla denetim sağlar bileşeni geliştirici özel bir kullanıcı arabirimi uygulayan SSIStasarımcı. Örneğin, Bileşen koduna ekleyebilirsiniz Newbir bileşeni başlangıçta veri eklendiğinde çağrılan yöntemi akışı görev ve ilk yapılandırma bileşeninin kullanıcıya yol gösteren bir sihirbaz görüntüler.
Uygulayan bir sınıfın oluşturduktan sonra IDtsComponentUIarayüzü bileşeniyle kullanıcı etkileşimi yanıt kodu eklemeniz gerekir. InitializeYöntemi sağlar IDTSComponentMetaData100bileşen, arabirim ve önce denir Newve Edityöntemleri. Bu başvuru bir özel üye değişken depolanan ve bundan sonra bileşen meta verileri değiştirmek için kullanılır.
Bir bileşen ve değişiklikleri Persisting değiştirme
IDTSComponentMetaData100Arabirimi parametre olarak sağlanan Initializeyöntemi. Bu başvuru bir üye değişkeni kullanıcı arabirimi kodu tarafından önbelleğe alınmış ve ardından yanıt olarak kullanıcı etkileşimi ile kullanıcı arabirimi bileşeni değiştirmek için kullanılır.
İstediğiniz bileşeni doğrudan aracılığıyla değiştirebilirsiniz, ancak IDTSComponentMetaData100arabirimi, bu örneği oluşturmak için daha iyi CManagedComponentWrapperkullanarak Instantiateyöntemi. Arabirimi kullanarak doğrudan bileşen düzenlediğinizde, bileşen doğrulaması güvenlik önlemlerinin atlayabilir. Tasarım zamanı bileşeni bir örneğini kullanmanın avantajı CManagedComponentWrapperise, emin bileşen görüneceği için yapılan değişiklikleri üzerinde denetime sahip
Dönüş değeri Edityöntemi, bir bileşenine yapılan değişiklikler kalıcı atılır veya olup olmadığını belirler. Ne zaman bu yöntem döndürür false, tüm değişiklikler atılır; truebileşen değişiklikleri devam ederse ve paketin kaydedilmesine gerek olarak işaretler.
SSIS Tasarımcısı kullanarak
IServiceProviderParametresi Initializeyöntemi aşağıdaki hizmetleri erişim sağlar SSISDesigner:
Hizmet |
Açıklama |
---|---|
Bileşen kopyalama veya yapıştırma bir parçası olarak oluşturulup oluşturulmadığını belirlemek veya kesme/yapıştırma işlemi için kullanılır. |
|
Varolan bağlantıları erişmek veya paket içinde yeni bağlantı oluşturmak için kullanılır. |
|
Tüm hatalar ve uyarılar yalnızca son hata alma veya uyarı yerine bileşen tarafından geçirilen yakalamak gerektiğinde veri akışı bileşenlerinden olayları yakalamak için kullanılır. |
|
Varolan değişkenleri erişmek veya yeni değişkenler pakette oluşturmak için kullanılır. |
|
Üst veri akışı görev erişmek için veri akışı bileşenlerini ve diğer veri akışı bileşenleri tarafından kullanılır. Bu özellik, yavaş değiştirme boyut oluşturur ve gerektiği gibi ek veri akışı bileşenlerini bağlayan Sihirbazı gibi bir bileşen geliştirmek için kullanılabilir. |
Bu hizmetleri bileşeni geliştiriciler erişmek ve bileşen yüklendiği paketi nesneleri oluşturma olanağı sağlar.
Örnek
Aşağıdaki kod örneği uygulayan bir özel kullanıcı arabirim sınıfı Tümleştirme gösterir IDtsComponentUIarabirim ve bir bileşen için düzenleyici olarak gören Windows form.
Özel kullanıcı arabirim sınıfı
Aşağıdaki kod, uygulayan sınıfı gösterir IDtsComponentUIarabirimi. EditYöntemi bileşen düzenleyiciyi oluşturur ve sonra formu görüntüler. Forma döndürme değeri, bileşen değişiklikler kalıcı olup olmadığını 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;
}
}
}
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
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 Düzenleyicisi
Çağrı sırasında gösterilen Windows form uygulaması aşağıdaki kodu gösterir Edityöntemi.
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();
}
}
}
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
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
|