Bagikan melalui


Mengembangkan Antarmuka Pengguna untuk Komponen Data Aliran

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  

Lihat Juga

Membuat Komponen Aliran Data Kustom