Sdílet prostřednictvím


Vývoj uživatelského rozhraní pro vlastní úlohu

platí pro:SQL Server SSIS Integration Runtime ve službě Azure Data Factory

Objektový model Integrační služby poskytuje vývojářům vlastních úloh možnost snadno vytvořit vlastní uživatelské rozhraní pro úlohu, která se pak dá integrovat a zobrazit v NÁSTROJích SQL Server Data Tools (SSDT). Uživatelské rozhraní může uživateli poskytnout užitečné informace v nástroji SSIS Designer a vést uživatele k správné konfiguraci vlastností a nastavení vlastní úlohy.

Vývoj vlastního uživatelského rozhraní pro úlohu zahrnuje použití dvou důležitých tříd. Následující tabulka popisuje tyto třídy.

Třída Popis
DtsTaskAttribute Atribut, který identifikuje spravovanou úlohu a poskytuje informace o době návrhu prostřednictvím svých vlastností k řízení způsobu zobrazení a interakce návrháře SSIS s objektem.
IDtsTaskUI Rozhraní, které úloha používá k přidružení úkolu k vlastnímu uživatelskému rozhraní.

Tato část popisuje roli atributu DtsTaskAttributeIDtsTaskUI a rozhraní při vývoji uživatelského rozhraní pro vlastní úlohu a poskytuje podrobnosti o tom, jak vytvořit, integrovat, nasadit a ladit úlohu v nástroji SSIS Designer.

Návrhář SSIS poskytuje více vstupních bodů k uživatelskému rozhraní úkolu: uživatel může v místní nabídce vybrat možnost Upravit , poklikejte na úkol nebo klikněte na odkaz Zobrazit editor v dolní části seznamu vlastností. Když uživatel přistupuje k jednomu z těchto vstupních bodů, aplikace SSIS Designer vyhledá a načte sestavení, které obsahuje uživatelské rozhraní pro úlohu. Uživatelské rozhraní úlohy zodpovídá za vytvoření dialogového okna vlastností, které se uživateli zobrazí v NÁSTROJích SQL Server Data Tools (SSDT).

Úkol a jeho uživatelské rozhraní jsou samostatné entity. Měly by být implementovány v samostatných sestaveních, aby se snížila lokalizace, nasazení a údržba. Knihovna DLL úloh nenačítá, volá nebo obecně neobsahuje žádné znalosti uživatelského rozhraní s výjimkou informací obsažených v DtsTaskAttribute hodnotách atributů kódovaných v úkolu. Toto je jediný způsob, jak je přidružen úkol a jeho uživatelské rozhraní.

Atribut DtsTask

Atribut DtsTaskAttribute je součástí kódu třídy úkolu pro přidružení úkolu k jeho uživatelskému rozhraní. Návrhář SSIS používá vlastnosti atributu k určení, jak zobrazit úkol v návrháři. Mezi tyto vlastnosti patří název, který se má zobrazit, a ikonu( pokud existuje).

Následující tabulka popisuje vlastnosti atributu DtsTaskAttribute .

Vlastnictví Popis
DisplayName Zobrazí název úlohy v sadě nástrojů Tok řízení.
Description Popis úkolu (zděděný z DtsLocalizableAttribute). Tato vlastnost se zobrazuje v popisech.
IconResource Ikona zobrazená v návrháři SSIS.
RequiredProductLevel Pokud se používá, nastavte ji na jednu z hodnot v výčtu DTSProductLevel . Například: RequiredProductLevel = DTSProductLevel.None.
TaskContact Uchovává kontaktní informace pro příležitosti, kdy úkol vyžaduje technickou podporu.
TaskType Přiřadí k úkolu typ.
Attribute.TypeId Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento atribut. Další informace naleznete v atribut.TypeID vlastnost v knihovně tříd rozhraní .NET Framework.
UITypeName Název typu sestavení, které používá návrhář SSIS k načtení sestavení. Tato vlastnost slouží k vyhledání sestavení uživatelského rozhraní pro úlohu.

Následující příklad kódu ukazuje, DtsTaskAttribute jak by vypadal, kódovaný nad definicí třídy.

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  

Návrhář SSIS používá UITypeName vlastnost atributu, který obsahuje název sestavení, název typu, verzi, jazykovou verzi a token veřejného klíče, k vyhledání sestavení v globální mezipaměti sestavení (GAC) a načtení pro použití návrhářem.

Po umístění sestavení použije aplikace SSIS Designer další vlastnosti v atributu k zobrazení dalších informací o úkolu v nástroji SSIS Designer, jako je název, ikona a popis úlohy.

Parametr DisplayName, Descriptiona IconResource vlastnosti určují, jak je úkol prezentován uživateli. Vlastnost IconResource obsahuje ID prostředku ikony vložené do sestavení uživatelského rozhraní. Návrhář načte prostředek ikony podle ID ze sestavení a zobrazí ho vedle názvu úkolu v sadě nástrojů a na ploše návrháře, když je úkol přidán do balíčku. Pokud úkol neobsahuje zdroj ikony, návrhář pro úkol použije výchozí ikonu.

Rozhraní IDTSTaskUI

Rozhraní IDtsTaskUI definuje kolekci metod a vlastností volaných návrhářem SSIS k inicializaci a zobrazení uživatelského rozhraní přidruženého k úloze. Při vyvolání uživatelského rozhraní pro úlohu návrhář volá Initialize metodu, implementované uživatelským rozhraním úkolu při jeho psaní, a pak poskytuje TaskHost a Connections kolekce úlohy a balíčku, v uvedeném pořadí, jako parametry. Tyto kolekce se ukládají místně a následně se používají v GetView metodě.

Návrhář volá metodu GetView k vyžádání okna, které se zobrazí v nástroji SSIS Designer. Úloha vytvoří instanci okna, které obsahuje uživatelské rozhraní úkolu, a vrátí uživatelské rozhraní návrháři pro zobrazení. Obvykle se objekty TaskHostConnections a objekty zadají do okna prostřednictvím přetížené konstruktoru, aby je bylo možné použít ke konfiguraci úlohy.

Návrhář SSIS volá GetView metodu uživatelského rozhraní úlohy k zobrazení uživatelského rozhraní úkolu. Uživatelské rozhraní úkolu vrátí formulář systému Windows z této metody a aplikace SSIS Designer zobrazí tento formulář jako modální dialogové okno. Když je formulář zavřený, SSIS Designer zkontroluje hodnotu DialogResult vlastnost formuláře určit, zda byl úkol změněn a zda by tyto úpravy měly být uloženy. Pokud je hodnota DialogResult vlastnost OK, SSIS Designer volá metody trvalosti úlohy k uložení změn; jinak se změny zahodí.

Následující ukázka kódu implementuje IDtsTaskUI rozhraní a předpokládá existenci třídy formuláře Windows s názvem SampleTaskForm.

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  

Viz také

Vytvoření vlastní úlohy
Kódování vlastní úlohy
Vývoj uživatelského rozhraní pro vlastní úlohu