Sviluppo di un'interfaccia utente per un'attività personalizzata

Si applica a: SQL Server SSIS Integration Runtime in Azure Data Factory

Il modello a oggetti di Integration Services offre agli sviluppatori di attività la possibilità di creare facilmente un'interfaccia utente personalizzata per un'attività da integrare e visualizzare in SQL Server Data Tools (SSDT). L'interfaccia utente può fornire informazioni utili all'utente in Progettazione SSIS oltre a indicazioni su come configurare correttamente le proprietà e le impostazioni dell'attività personalizzata.

Per sviluppare un'interfaccia utente personalizzata per un'attività, è necessario utilizzare due classi importanti, descritte nella tabella seguente.

Classe Descrizione
DtsTaskAttribute Attributo che identifica un'attività gestita e fornisce informazioni della fase di progettazione tramite le proprietà per controllare le modalità di visualizzazione e di interazione di Progettazione SSIS con l'oggetto.
IDtsTaskUI Interfaccia utilizzata dall'attività per associare l'attività alla relativa interfaccia utente personalizzata.

In questa sezione viene descritto il ruolo dell'attributo DtsTaskAttribute e dell'interfaccia IDtsTaskUI durante lo sviluppo di un'interfaccia utente per un'attività personalizzata e vengono fornite informazioni su come creare, integrare, distribuire e sottoporre a debug l'attività all'interno di Progettazione SSIS.

Progettazione SSIS fornisce più punti di ingresso all'interfaccia utente dell'attività. L'utente può scegliere Modifica dal menu di scelta rapida, fare doppio clic sull'attività o fare clic sul collegamento Visualizza editor nella parte inferiore della finestra delle proprietà. Quando l'utente accede a uno di questi punti di ingresso, Progettazione SSIS trova e carica l'assembly che contiene l'interfaccia utente per l'attività. L'interfaccia utente per l'attività è responsabile della creazione della finestra di dialogo delle proprietà che l'utente visualizza in SQL Server Data Tools (SSDT).

L'attività e la relativa interfaccia utente sono entità separate che devono essere implementate in assembly distinti per ridurre gli interventi di localizzazione, distribuzione e manutenzione. La DLL dell'attività non carica, chiama né in genere contiene informazioni sulla relativa interfaccia utente, ad eccezione delle informazioni contenute nei valori dell'attributo DtsTaskAttribute codificati nell'attività. Questo è l'unico modo in cui un'attività è associata alla propria interfaccia utente.

Attributo DtsTask

L'attributo DtsTaskAttribute è incluso nel codice della classe dell'attività per associare un'attività alla relativa interfaccia utente. Progettazione SSIS usa le proprietà dell'attributo per determinare la modalità di visualizzazione dell'attività nella finestra di progettazione. Queste proprietà includono il nome da visualizzare e l'icona, se presente.

Nella tabella seguente sono descritte le proprietà dell'attributo DtsTaskAttribute.

Proprietà Descrizione
DisplayName Visualizza il nome dell'attività nella casella degli strumenti del Flusso di controllo.
Description Descrizione dell'attività (ereditata da DtsLocalizableAttribute). Questa proprietà è visualizzata nelle descrizioni comandi.
IconResource Icona visualizzata in Progettazione SSIS.
RequiredProductLevel Se utilizzata, impostarla su uno dei valori dell'enumerazione DTSProductLevel. Ad esempio: RequiredProductLevel = DTSProductLevel.None.
TaskContact Contiene informazioni di contatto per i casi in cui l'attività richiede supporto tecnico.
TaskType Assegna un tipo all'attività.
Attribute.TypeId Se implementata in una classe derivata, ottiene un identificatore univoco per questo attributo. Per altre informazioni, vedere la proprietà Attribute.TypeID nella libreria di classi .NET Framework.
UITypeName Nome di tipo dell'assembly usato da Progettazione SSIS per caricare l'assembly. Questa proprietà viene utilizzata per trovare l'assembly dell'interfaccia utente per l'attività.

Nell'esempio di codice seguente è illustrato l'aspetto di DtsTaskAttribute codificato sopra la definizione della classe.

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  

Progettazione SSIS usa la proprietà UITypeName dell'attributo che include il nome dell'assembly, il nome del tipo, la versione, le impostazioni cultura e il token di chiave pubblica per individuare l'assembly nella Global Assembly Cache (GAC) e caricarlo per l'uso nella finestra di progettazione.

Dopo l'individuazione dell'assembly, Progettazione SSIS usa le altre proprietà dell'attributo per visualizzare informazioni aggiuntive sull'attività in Progettazione SSIS, ad esempio il nome, l'icona e la descrizione dell'attività.

Le proprietà DisplayName, Description e IconResource specificano la modalità con cui l'attività viene presentata all'utente. La proprietà IconResource contiene l'ID di risorsa dell'icona incorporata nell'assembly dell'interfaccia utente. La finestra di progettazione carica la risorsa dell'icona in base all'ID dall'assembly e la visualizza accanto al nome dell'attività nella casella degli strumenti e nell'area di progettazione quando l'attività viene aggiunta al pacchetto. Se un'attività non prevede una risorsa di icona, la finestra di progettazione utilizza un'icona predefinita per l'attività.

Interfaccia IDTSTaskUI

L'interfaccia IDtsTaskUI definisce la raccolta di metodi e proprietà chiamati da Progettazione SSIS per inizializzare e visualizzare l'interfaccia utente associata all'attività. Quando viene richiamata l'interfaccia utente per un'attività, la finestra di progettazione chiama il metodo Initialize, implementato dall'interfaccia utente dell'attività quando è stata scritta, quindi fornisce le raccolte TaskHost e Connections rispettivamente dell'attività e del pacchetto come parametri. Queste raccolte vengono archiviate in locale e utilizzate successivamente nel metodo GetView.

La finestra di progettazione chiama il metodo GetView per richiedere la finestra visualizzata in Progettazione SSIS. L'attività crea un'istanza della finestra che contiene l'interfaccia utente per l'attività e restituisce l'interfaccia utente alla finestra di progettazione per la visualizzazione. In genere, gli oggetti TaskHost e Connections vengono forniti alla finestra tramite un costruttore di overload, in modo che possano essere utilizzati per configurare l'attività.

Progettazione SSIS chiama il metodo GetView dell'interfaccia utente dell'attività per visualizzare l'interfaccia utente per l'attività. L'interfaccia utente dell'attività restituisce il form Windows da questo metodo e Progettazione SSIS visualizza questo form come finestra di dialogo modale. Quando il form viene chiuso, Progettazione SSIS esamina il valore della proprietà DialogResult del form per determinare se l'attività è stata modificata e se queste modifiche devono essere salvate. Se il valore della proprietà DialogResult è OK, Progettazione SSIS chiama i metodi di persistenza dell'attività per salvare le modifiche. In caso contrario, le modifiche vengono ignorate.

Nell'esempio di codice seguente viene implementata l'interfaccia IDtsTaskUI e si presuppone l'esistenza di una classe di Windows Form denominata 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  

Vedi anche

Creazione di un'attività personalizzata
Scrittura del codice di un'attività personalizzata
Sviluppo di un'interfaccia utente per un'attività personalizzata