Condividi tramite


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

Il modello a oggetti di Integration Services offre agli sviluppatori di attività la possibilità di creare facilmente un'interfaccia utente personalizzata per un'attività che è possibile integrare e visualizzare in Business Intelligence Development Studio. 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.

In Progettazione SSIS sono disponibili più punti di ingresso per l'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 Business Intelligence Development Studio.

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 utilizza 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 ulteriori informazioni, vedere la proprietà Attribute.TypeID nella libreria di classi di Microsoft .NET Framework.

UITypeName

Nome di tipo dell'assembly utilizzato 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 utilizza la proprietà UITypeName dell'attributo che include il nome dell'assembly, il nome del tipo, la versione, la lingua e il token di chiave pubblica per individuare l'assembly nella Global Assembly Cache (GAC) e caricarlo per l'utilizzo nella finestra di progettazione.

Dopo l'individuazione dell'assembly, Progettazione SSIS utilizza 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 Windows Form 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
Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.