Freigeben über


Entwickeln einer Benutzeroberfläche für einen benutzerdefinierten Task

Das Integration Services-Objektmodell bietet Entwicklern benutzerdefinierter Tasks eine einfache Möglichkeit, eine individuelle Benutzeroberfläche für einen Task zu erstellen, der dann in Business Intelligence Development Studio integriert und angezeigt werden kann. Die Benutzeroberfläche kann nützliche Informationen für den Benutzer im SSIS-Designer bereitstellen und den Benutzern Hinweise geben, wie sie die Eigenschaften und Einstellungen des benutzerdefinierten Tasks ordnungsgemäß konfigurieren können.

Bei der Entwicklung einer benutzerdefinierten Benutzeroberfläche für einen Task werden zwei wichtige Klassen verwendet. Diese Klassen werden in der folgenden Tabelle beschrieben.

Klasse

Beschreibung

DtsTaskAttribute

Ein Attribut, das einen verwalteten Task identifiziert und über seine Eigenschaften Informationen zur Entwurfszeit angibt, um zu kontrollieren, wie der SSIS-Designer das Objekt anzeigt, bzw. wie er mit ihm interagiert.

IDtsTaskUI

Eine vom Task verwendete Schnittstelle, um den Task seiner benutzerdefinierten Benutzeroberfläche zuzuordnen.

Dieser Abschnitt beschreibt die Rolle der DtsTaskAttribute-Attribute und der IDtsTaskUI-Schnittstelle bei der Entwicklung einer Benutzeroberfläche für einen benutzerdefinierten Task und enthält Einzelheiten zur Erstellung, Integration, Bereitstellung und dem Debuggen des Tasks innerhalb des SSIS-Designers.

Der SSIS-Designer stellt mehrere Einstiegspunkte zur Benutzeroberfläche für den Task bereit: Der Benutzer kann im Kontextmenü Bearbeiten wählen, auf den Task doppelklicken oder auf den Link Editor anzeigen unten auf dem Eigenschaftsblatt klicken. Wenn der Benutzer auf einen dieser Einstiegspunkte zugreift, dann sucht und lädt der SSIS-Designer die Assembly, die die Benutzeroberfläche für den Task enthält. Die Benutzeroberfläche für den Task ist für die Erstellung des Eigenschaftendialogfelds verantwortlich, das dem Benutzer in Business Intelligence Development Studio angezeigt wird.

Ein Task und seine Benutzeroberfläche sind separate Entitäten. Sie sollten in separaten Assemblys implementiert werden, um den Aufwand bei der Lokalisierung, der Bereitstellung und den Wartungsarbeiten zu reduzieren. Mit Ausnahme der Informationen, die in den im Task codiertenDtsTaskAttribute-Attributwerten enthalten sind, werden von der DLL keine Informationen zur Benutzeroerfläche geladen oder aufgerufen bzw. sind solche Informationen in der Regel nicht in ihr enthalten. Dies ist die einzige Möglichkeit der Zuordnung eines Task zu seiner Benutzeroberfläche.

Das DtsTask-Attribut

Das DtsTaskAttribute-Attribut ist im Code der Taskklasse enthalten, um den Task seiner Benutzeroberfläche zuzuordnen. Der SSIS-Designer nutzt die Eigenschaften des Attributs, um zu ermitteln, wie der Task im Designer angezeigt werden soll. Diese Eigenschaften schließen den anzuzeigenden Namen und ggf. das Symbol ein.

In der folgenden Tabelle werden die Eigenschaften des DtsTaskAttribute-Attributs beschrieben.

Eigenschaft

Beschreibung

DisplayName

Zeigt den Tasknamen in der Toolbox der Ablaufsteuerung an.

Description

Die Taskbeschreibung (geerbt von DtsLocalizableAttribute). Diese Eigenschaft wird in QuickInfos angezeigt.

IconResource

Das im SSIS-Designer angezeigte Symbol.

RequiredProductLevel

Sollte bei Verwendung auf einen der Werte in der DTSProductLevel-Enumeration festgelegt werden. Beispiel: RequiredProductLevel = DTSProductLevel.None.

TaskContact

Enthält Kontaktinformationen, falls für den Task technischer Support benötigt wird.

TaskType

Weist dem Task einen Typ zu.

Attribute.TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribut ab. Weitere Informationen finden Sie in der .NET Framework-Klassenbibliothek unter der Attribute.TypeID-Eigenschaft.

UITypeName

Der Typname der Assembly, der vom SSIS-Designer zum Laden der Assembly verwendet wird. Diese Eigenschaft wird verwendet, um die Benutzeroberflächenassembly für den Task zu suchen.

Im folgenden Codebeispiel wird das DtsTaskAttribute gezeigt, wie es aussehen würde, wenn es oberhalb der Klassendefinition codiert wäre.

using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SSIS.Samples
{
  [DtsTask
  (
   DisplayName = "MyTask",
   IconResource = "MyTask.MyTaskIcon.ico",
   UITypeName = "My Custom Task," +
   "Version=1.0.0.0," +
   "Culture = Neutral," +
   "PublicKeyToken = 12345abc6789de01",
   TaskType = "PackageMaintenance",
   TaskContact = "MyTask; company name; any other information",
   RequiredProductLevel = DTSProductLevel.None
   )]
  public class MyTask : Task
  {
    // Your code here.
  }
}
Imports System
Imports Microsoft.SqlServer.Dts.Runtime

<DtsTask(DisplayName:="MyTask", _
 IconResource:="MyTask.MyTaskIcon.ico", _
 UITypeName:="My Custom Task," & _
 "Version=1.0.0.0,Culture=Neutral," & _
 "PublicKeyToken=12345abc6789de01", _
 TaskType:="PackageMaintenance", _
 TaskContact:="MyTask; company name; any other information", _
 RequiredProductLevel:=DTSProductLevel.None)> _
Public Class MyTask
  Inherits Task

  ' Your code here.

End Class 'MyTask

Der SSIS-Designer sucht mithilfe der UITypeName-Eigenschaft des Attributs, das den Namen, den Typnamen, die Version, die Kultur und das öffentliche Schlüsseltoken der Assembly enthält, um die Assembly im globalen Assemblycache (GAC) zu suchen und sie für die Verwendung durch den Designer zu laden.

Wenn die Assembly gefunden wurde, verwendet der SSIS-Designer die anderen Eigenschaften im Attribut, um zusätzliche Informationen zum Task im SSIS-Designer, wie z. B. Namen, Symbol und Beschreibung des Tasks anzuzeigen.

Die Eigenschaften DisplayName, Description und IconResource geben an, wie dem Benutzer der Task präsentiert wird. Die IconResource-Eigenschaft enthält die Ressourcen-ID des in der Benutzeroberflächenassembly eingebetteten Symbols. Der Designer lädt die Symbolressource über die ID aus der Assembly und zeigt sie neben dem Tasknamen in der Toolbox sowie auf der Designeroberfläche an, wenn der Task zum Paket hinzugefügt wird. Wenn ein Task keine Symbolressource bereitstellt, dann verwendet der Designer für den Task ein Standardsymbol.

Die IDTSTaskUI-Schnittstelle

Die IDtsTaskUI-Schnittstelle definiert die Auflistung von Methoden und Eigenschaften, die vom SSIS-Designer aufgerufen werden, um die mit dem Task verbundene Benutzeroberfläche zu initialisieren und anzuzeigen. Wenn die Benutzeroberfläche für einen Task aufgerufen wird, dann ruft der Designer die Initialize-Methode auf, die von der Task-Benutzeroberfläche implementiert wurde, als Sie diese schrieben, und stellt dann die TaskHost- und Connections-Auflistungen des Tasks und des Pakets jeweils als Parameter bereit. Diese Auflistungen werden lokal gespeichert und anschließend in der GetView-Methode verwendet.

Der Designer ruft die GetView-Methode auf, um das Fenster anzufordern, das im SSIS-Designer angezeigt wird. Der Task erstellt eine Instanz des Fensters, das die Benutzeroberfläche für den Task enthält, und gibt die Benutzeroberfläche wieder zur Anzeige an den Designer zurück. In der Regel werden die TaskHost- und Connections-Objekte dem Fenster über einen überladenen Konstruktor bereitgestellt, sodass sie zum Konfigurieren des Tasks verwendet werden können.

Der SSIS-Designer ruft die GetView-Methode der Task-Benutzeroberfläche auf, um die Benutzeroberfläche für den Task anzuzeigen. Die Task-Benutzeroberfläche gibt das Windows Form von dieser Methode zurück, und der SSIS-Designer zeigt dieses Formular als modales Dialogfeld an. Wenn das Formular geschlossen ist, untersucht der SSIS-Designer den Wert der DialogResult-Eigenschaft des Formulars, um zu ermitteln, ob der Task geändert wurde und ob diese Änderungen gespeichert werde sollten. Wenn der Wert der DialogResult-Eigenschaft OK ist, dann ruft der SSIS-Designer die Dauerhaftigkeitsmethoden des Tasks auf, um die Änderungen zu speichern; andernfalls werden die Änderungen verworfen.

Das folgende Codebeispiel implementiert die IDtsTaskUI-Schnittstelle, wobei es von der Existenz einer Windows Form-Klasse mit dem Namen SampleTaskForm ausgeht.

using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Design;

namespace Sample
{
   public class HelloWorldTaskUI : IDtsTaskUI
   {
      TaskHost   taskHost;
      Connections connections;
      public void Initialize(TaskHost taskHost, IServiceProvider serviceProvider)
      {
         this.taskHost = taskHost;
         IDtsConnectionService cs = serviceProvider.GetService
         ( typeof( IDtsConnectionService ) ) as   IDtsConnectionService; 
         this.connections = cs.GetConnections();
      }
      public ContainerControl GetView()
      {
        return new HelloWorldTaskForm(this.taskHost, this.connections);
      }
     public void Delete(IWin32Window parentWindow)
     {
     }
     public void New(IWin32Window parentWindow)
     {
     }
   }
}
Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Design
Imports System.Windows.Forms

Public Class HelloWorldTaskUI
  Implements IDtsTaskUI

  Dim taskHost As TaskHost
  Dim connections As Connections

  Public Sub Initialize(ByVal taskHost As TaskHost, ByVal serviceProvider As IServiceProvider) _
    Implements IDtsTaskUI.Initialize

    Dim cs As IDtsConnectionService

    Me.taskHost = taskHost
    cs = DirectCast(serviceProvider.GetService(GetType(IDtsConnectionService)), IDtsConnectionService)
    Me.connections = cs.GetConnections()

  End Sub

  Public Function GetView() As ContainerControl _
    Implements IDtsTaskUI.GetView

    Return New HelloWorldTaskForm(Me.taskHost, Me.connections)

  End Function

  Public Sub Delete(ByVal parentWindow As IWin32Window) _
    Implements IDtsTaskUI.Delete

  End Sub

  Public Sub [New](ByVal parentWindow As IWin32Window) _
    Implements IDtsTaskUI.[New]

  End Sub

End Class
Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN oder TechNet:

Abonnieren Sie die auf der Seite verfügbaren RSS-Newsfeeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.