Megosztás:


Felhasználói felület fejlesztése egyéni feladathoz

A következőkre vonatkozik:SQL Server SSIS integrációs futtatókörnyezet az Azure Data Factory-ban

Az Integration Services-objektummodell lehetővé teszi az egyéni feladatfejlesztők számára, hogy könnyen létrehozzák az egyéni felhasználói felületet egy feladathoz, amely ezután integrálható és megjeleníthető az SQL Server Data Toolsban (SSDT). A felhasználói felület hasznos információkat nyújthat a felhasználónak az SSIS Designerben, és útmutatást nyújthat a felhasználóknak az egyéni feladat tulajdonságainak és beállításainak helyes konfigurálásához.

Egy feladat egyéni felhasználói felületének fejlesztése két fontos osztály használatát foglalja magában. Az alábbi táblázat ezeket az osztályokat ismerteti.

Osztály Leírás
DtsTaskAttribute Egy olyan attribútum, amely azonosít egy felügyelt feladatot, és a tulajdonságokon keresztül biztosítja a tervezési idő adatait annak szabályozásához, hogy az SSIS Designer hogyan jeleníti meg és használja az objektumot.
IDtsTaskUI A tevékenység által a feladat egyéni felhasználói felületéhez való társításához használt felület.

Ez a szakasz az attribútum és a DtsTaskAttributeIDtsTaskUI felület szerepkörét ismerteti, amikor egyéni feladathoz fejleszt felhasználói felületet, és részletesen ismerteti, hogyan hozhatja létre, integrálhatja, helyezheti üzembe és hibakereséssel végezheti el a feladatot az SSIS Designerben.

Az SSIS Designer több belépési pontot is biztosít a feladat felhasználói felületéhez: a felhasználó kiválaszthatja a Szerkesztés lehetőséget a helyi menüben, duplán kattintva a feladatra, vagy kattintson a tulajdonságlap alján található Szerkesztő megjelenítése hivatkozásra. Amikor a felhasználó hozzáfér ezen belépési pontok egyikéhez, az SSIS Designer megkeresi és betölti a feladat felhasználói felületét tartalmazó szerelvényt. A feladat felhasználói felülete felelős a felhasználó számára az SQL Server Data Tools (SSDT) szolgáltatásban megjelenő tulajdonságok párbeszédpaneljének létrehozásáért.

A feladat és a felhasználói felülete különálló entitások. Ezeket külön szerelvényekben kell megvalósítani a honosítási, üzembe helyezési és karbantartási munka csökkentése érdekében. A tevékenység DLL-je nem tölt be, nem hív meg vagy általában nem tartalmaz semmilyen ismeretet a felhasználói felületéről, kivéve a tevékenységben DtsTaskAttribute kódolt attribútumértékekben található információkat. Ez az egyetlen módja annak, hogy egy tevékenység és annak felhasználói felülete társítva legyen.

A DtsTask attribútum

Az DtsTaskAttribute attribútum szerepel a feladatosztály kódjában, hogy hozzárendeljen egy feladatot a felhasználói felületéhez. Az SSIS Designer az attribútum tulajdonságaival határozza meg, hogyan jelenjen meg a feladat a tervezőben. Ezek a tulajdonságok tartalmazzák a megjelenítendő nevet és az ikont, ha vannak ilyenek.

Az alábbi táblázat az attribútum tulajdonságait DtsTaskAttribute ismerteti.

Ingatlan Leírás
DisplayName Megjeleníti a tevékenység nevét a Control Flow eszközkészletben.
Description A tevékenység leírása (öröklődve innen DtsLocalizableAttribute). Ez a tulajdonság az elemleírásokban jelenik meg.
IconResource Az SSIS Designerben megjelenő ikon.
RequiredProductLevel Ha használja, állítsa be az enumerálás egyik értékére DTSProductLevel . Például: RequiredProductLevel = DTSProductLevel.None.
TaskContact Kapcsolattartási adatokat tárol olyan esetekről, amikor a feladat technikai támogatást igényel.
TaskType Típust rendel a tevékenységhez.
Attribútum.TypeId Származtatott osztályban való implementáláskor az attribútum egyedi azonosítót kap. További információ: Attribute.TypeID tulajdonság a .NET keretrendszerosztálytárában.
UITypeName Az SSIS Designer által a szerelvény betöltéséhez használt szerelvény típusneve. Ez a tulajdonság a feladat felhasználói felületi szerelvényének megkeresésére szolgál.

Az alábbi példakód az DtsTaskAttribute osztálydefiníció fölött kódolt, a kinézetét szemlélteti.

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  

Az SSIS Designer a UITypeName szerelvény nevét, típusnevét, verzióját, kulturális környezetét és nyilvánoskulcs-jogkivonatát tartalmazó attribútum tulajdonságát használja a szerelvény globális szerelvénygyorsítótárban (GAC) való megkereséséhez és a tervező általi használatra való betöltéséhez.

A szerelvény létrehozása után az SSIS Designer az attribútum többi tulajdonságával további információkat jelenít meg a tevékenységről az SSIS Designerben, például a feladat nevét, ikonját és leírását.

A DisplayName, Descriptionés IconResource a tulajdonságok határozzák meg, hogyan jelenik meg a feladat a felhasználó számára. A IconResource tulajdonság a felhasználói felület szerelvényébe beágyazott ikon erőforrás-azonosítóját tartalmazza. A tervező betölti az ikonerőforrást azonosító alapján a szerelvényből, és megjeleníti azt az eszközkészletben és a tervezőfelületen a feladat neve mellett, amikor a feladatot hozzáadják egy csomaghoz. Ha egy tevékenység nem biztosít ikonerőforrást, a tervező egy alapértelmezett ikont használ a tevékenységhez.

Az IDTSTaskUI interfész

Az IDtsTaskUI interfész meghatározza az SSIS Designer által a feladathoz társított felhasználói felület inicializálásához és megjelenítéséhez hívott metódusok és tulajdonságok gyűjteményét. Amikor meghívja egy tevékenység felhasználói felületét, a tervező meghívja a Initialize metódust, amelyet a tevékenység felhasználói felülete implementál, amikor megírta, majd paraméterként adja meg TaskHost a feladat és Connections a csomag gyűjteményeit. Ezek a gyűjtemények helyileg vannak tárolva, és később használatosak a GetView metódusban.

A tervező meghívja a metódust, GetView hogy kérje le az SSIS Designerben megjelenő ablakot. A feladat létrehozza az ablak egy példányát, amely tartalmazza a feladat felhasználói felületét, és visszaadja a felhasználói felületet a tervezőnek megjelenítésre. A rendszer általában egy TaskHostConnections túlterhelt konstruktoron keresztül adhatja meg az ablaknak az objektumokat, hogy azok a feladat konfigurálásához használhatók legyenek.

Az SSIS Designer meghívja a GetView feladat felhasználói felületének metódusát a feladat felhasználói felületének megjelenítéséhez. A feladat felhasználói felülete ebből a metódusból adja vissza a Windows-űrlapot, az SSIS Designer pedig modális párbeszédpanelként jeleníti meg ezt az űrlapot. Az űrlap bezárásakor az SSIS Designer megvizsgálja az űrlap DialogResult tulajdonságának értékét annak megállapításához, hogy a tevékenység módosult-e, és hogy a módosításokat menteni kell-e. Ha a DialogResult tulajdonság értéke rendben van, az SSIS Designer meghívja a feladat adatmegőrzési módszereit a módosítások mentéséhez; ellenkező esetben a rendszer elveti a módosításokat.

Az alábbi kódminta implementálja az IDtsTaskUI interfészt, és feltételezi, hogy létezik egy SampleTaskForm nevű Windows-űrlaposztály.

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  

Lásd még:

Egyéni feladat létrehozása
Egyéni feladat kódolása
Felhasználói felület fejlesztése egyéni feladathoz