Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
SSIS Integration Runtime di Azure Data Factory
Pengembang komponen dapat menyediakan antarmuka pengguna kustom untuk komponen, yang ditampilkan di SQL Server Data Tools (SSDT) saat komponen diedit. Menerapkan antarmuka pengguna kustom memberi Anda pemberitahuan saat komponen ditambahkan atau dihapus dari tugas aliran data, dan ketika bantuan diminta untuk komponen.
Jika Anda tidak menyediakan antarmuka pengguna kustom untuk komponen Anda, pengguna masih dapat mengonfigurasi komponen dan properti kustomnya dengan menggunakan Editor Lanjutan. Anda dapat memastikan bahwa Editor Lanjutan memungkinkan pengguna mengedit nilai properti kustom dengan tepat dengan menggunakan TypeConverter properti IDTSCustomProperty100 dan UITypeEditor jika sesuai. Untuk informasi selengkapnya, lihat "Membuat Properti Kustom" dalam Metode Waktu Desain komponen Aliran Data.
Mengatur Properti UITypeName
Untuk menyediakan antarmuka pengguna kustom, pengembang harus mengatur UITypeName properti DtsPipelineComponentAttribute ke nama kelas yang mengimplementasikan IDtsComponentUI antarmuka. Ketika properti ini diatur oleh komponen, SQL Server Integration Services memuat dan memanggil antarmuka pengguna kustom saat komponen diedit di SSIS Designer.
Properti UITypeName adalah string yang dibatasi koma yang mengidentifikasi nama jenis yang sepenuhnya memenuhi syarat. Daftar berikut ini memperlihatkan, secara berurutan, elemen yang mengidentifikasi jenis:
Nama jenis
Nama assembly
Versi file
Kultur
Token kunci umum
Contoh kode berikut menunjukkan kelas yang berasal dari PipelineComponent kelas dasar dan menentukan UITypeName properti .
[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
Menerapkan Antarmuka IDtsComponentUI
Antarmuka IDtsComponentUI berisi metode yang dipanggil SSIS Designer saat komponen ditambahkan, dihapus, dan diedit. Pengembang komponen dapat memberikan kode dalam implementasi metode ini untuk berinteraksi dengan pengguna komponen.
Kelas ini biasanya diimplementasikan dalam rakitan yang terpisah dari komponen itu sendiri. Meskipun penggunaan rakitan terpisah tidak diperlukan, ini memungkinkan pengembang membangun dan menyebarkan komponen dan antarmuka pengguna secara independen satu sama lain, dan menjaga jejak biner komponen kecil.
Menerapkan antarmuka pengguna kustom memberi pengembang komponen kontrol lebih besar atas komponen saat diedit di SSIS Designer. Misalnya, komponen dapat menambahkan kode ke New metode , yang dipanggil ketika komponen awalnya ditambahkan ke tugas aliran data, dan menampilkan wizard yang memandu pengguna melalui konfigurasi awal komponen.
Setelah membuat kelas yang mengimplementasikan IDtsComponentUI antarmuka, Anda harus menambahkan kode untuk merespons interaksi pengguna dengan komponen. Metode ini Initialize menyediakan IDTSComponentMetaData100 antarmuka komponen, dan dipanggil sebelum New metode dan Edit . Referensi ini harus disimpan dalam variabel anggota privat dan digunakan untuk memodifikasi metadata komponen setelahnya.
Memodifikasi Komponen dan Perubahan Yang Bertahan
Antarmuka IDTSComponentMetaData100 disediakan sebagai parameter untuk Initialize metode . Referensi ini harus di-cache dalam variabel anggota oleh kode antarmuka pengguna, lalu digunakan untuk memodifikasi komponen sebagai respons terhadap interaksi pengguna dengan antarmuka pengguna.
Meskipun Anda dapat memodifikasi komponen langsung melalui IDTSComponentMetaData100 antarmuka, lebih baik membuat instans dengan CManagedComponentWrapper menggunakan Instantiate metode . Saat Anda mengedit komponen secara langsung dengan menggunakan antarmuka, Anda melewati perlindungan validasi komponen. Keuntungan menggunakan instans waktu desain komponen melalui CManagedComponentWrapper adalah Anda memastikan bahwa komponen memiliki kontrol atas perubahan yang dilakukan padanya.
Nilai Edit pengembalian metode menentukan apakah perubahan yang dilakukan pada komponen dipertahankan atau dibuang. Ketika metode ini mengembalikan false, semua perubahan dibuang; true mempertahankan perubahan pada komponen dan menandai paket sebagai perlu disimpan.
Menggunakan Layanan Desainer SSIS
Parameter IServiceProvider dari metode ini Initialize menyediakan akses ke layanan SSIS Designer berikut:
| Layanan | Deskripsi |
|---|---|
| IDtsClipboardService | Digunakan untuk menentukan apakah komponen dihasilkan sebagai bagian dari operasi salin/tempel atau potong/tempel. |
| IDtsConnectionService | Digunakan untuk mengakses koneksi yang ada atau untuk membuat koneksi baru dalam paket. |
| IErrorCollectionService | Digunakan untuk mengambil peristiwa dari komponen aliran data saat Anda perlu menangkap semua kesalahan dan peringatan yang dimunculkan oleh komponen alih-alih hanya menerima kesalahan atau peringatan terakhir. |
| IDtsVariableService | Digunakan untuk mengakses variabel yang ada atau untuk membuat variabel baru dalam paket. |
| IDtsPipelineEnvironmentService | Digunakan oleh komponen aliran data untuk mengakses tugas Aliran Data induk dan komponen lain dalam aliran data. Fitur ini dapat digunakan untuk mengembangkan komponen seperti Wizard Dimensi Perubahan Lambat yang membuat dan menyambungkan komponen aliran data tambahan sesuai kebutuhan. |
Layanan ini memberi pengembang komponen kemampuan untuk mengakses dan membuat objek dalam paket tempat komponen dimuat.
Sampel
Contoh kode berikut menunjukkan integrasi kelas antarmuka pengguna kustom yang mengimplementasikan IDtsComponentUI antarmuka, dan formulir Windows yang berfungsi sebagai editor untuk komponen.
Kelas Antarmuka Pengguna Kustom
Kode berikut menunjukkan kelas yang mengimplementasikan IDtsComponentUI antarmuka. Metode ini Edit membuat editor komponen lalu menampilkan formulir. Nilai pengembalian formulir menentukan apakah perubahan pada komponen dipertahankan.
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
Editor Kustom
Kode berikut menunjukkan implementasi formulir Windows yang ditampilkan selama panggilan ke Edit metode .
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