Sviluppo di un'interfaccia utente per un'attività personalizzata
Il modello di 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 |
---|---|
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. |
|
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 |
---|---|
Visualizza il nome dell'attività nella casella degli strumenti del Flusso di controllo. |
|
Descrizione dell'attività (ereditata da DtsLocalizableAttribute). Questa proprietà è visualizzata nelle descrizioni comandi. |
|
Icona visualizzata in Progettazione SSIS. |
|
Se utilizzata, impostarla su uno dei valori dell'enumerazione DTSProductLevel. Ad esempio, RequiredProductLevel = DTSProductLevel.None. |
|
Contiene informazioni di contatto per i casi in cui l'attività richiede supporto tecnico. |
|
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. |
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 modulo 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
|