Partilhar via


Desenvolvendo uma interface de usuário para uma tarefa personalizada

Aplica-se a:SQL Server SSIS Integration Runtime em Azure Data Factory

O modelo de objeto do Integration Services fornece aos desenvolvedores de tarefas personalizadas a capacidade de criar facilmente uma interface de usuário personalizada para uma tarefa que pode ser integrada e exibida no SSDT (SQL Server Data Tools). A interface do usuário pode fornecer informações úteis ao usuário no Designer SSIS e orientar os usuários a configurar corretamente as propriedades e configurações da tarefa personalizada.

O desenvolvimento de uma interface de usuário personalizada para uma tarefa envolve o uso de duas classes importantes. A tabela a seguir descreve essas classes.

Classe Descrição
DtsTaskAttribute Um atributo que identifica uma tarefa gerenciada e fornece informações de tempo de design por meio de suas propriedades para controlar como o Designer SSIS exibe e interage com o objeto.
IDtsTaskUI Uma interface usada pela tarefa para associá-la à sua interface de usuário personalizada.

Esta seção descreve a função do atributo e da DtsTaskAttribute interface quando você está desenvolvendo uma interface do IDtsTaskUI usuário para uma tarefa personalizada e fornece detalhes sobre como criar, integrar, implantar e depurar a tarefa no Designer SSIS.

O Designer SSIS fornece vários pontos de entrada para a interface do usuário para a tarefa: o usuário pode selecionar Editar no menu de atalho, clicar duas vezes na tarefa ou clicar no link Mostrar Editor na parte inferior da folha de propriedades. Quando o usuário acessa um desses pontos de entrada, o Designer SSIS localiza e carrega o assembly que contém a interface do usuário para a tarefa. A interface do usuário para a tarefa é responsável por criar a caixa de diálogo de propriedades que é exibida para o usuário no SSDT (SQL Server Data Tools).

Uma tarefa e sua interface de usuário são entidades separadas. Eles devem ser implementados em assemblies separados para reduzir o trabalho de localização, implantação e manutenção. A DLL da tarefa não carrega, chama ou geralmente contém qualquer conhecimento de sua interface do usuário, exceto para as informações contidas nos valores de DtsTaskAttribute atributo codificados na tarefa. Esta é a única maneira que uma tarefa e sua interface de usuário são associados.

O atributo DtsTask

O DtsTaskAttribute atributo é incluído no código da classe de tarefa para associar uma tarefa à sua interface do usuário. O Designer SSIS usa as propriedades do atributo para determinar como exibir a tarefa no designer. Essas propriedades incluem o nome a ser exibido e o ícone, se houver.

A tabela a seguir descreve as propriedades do DtsTaskAttribute atributo.

Propriedade Descrição
DisplayName Exibe o nome da tarefa na caixa de ferramentas Fluxo de Controle.
Description A descrição da tarefa (herdada de DtsLocalizableAttribute). Esta propriedade é mostrada em Dicas de Ferramentas.
IconResource O ícone exibido no SSIS Designer.
RequiredProductLevel Se usado, defina-o como um dos valores na DTSProductLevel enumeração. Por exemplo, RequiredProductLevel = DTSProductLevel.None.
TaskContact Contém informações de contato para ocasiões em que a tarefa requer suporte técnico.
TaskType Atribui um tipo à tarefa.
Atributo.TypeId Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse atributo. Para obter mais informações, consulte a propriedade Attribute.TypeID na Biblioteca de Classes do .NET Framework.
UITypeName O nome do tipo do assembly que é usado pelo SSIS Designer para carregar o assembly. Essa propriedade é usada para localizar o assembly da interface do usuário para a tarefa.

O exemplo de código a seguir mostra a DtsTaskAttribute aparência, codificada acima da definição de 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  

O Designer SSIS usa a UITypeName propriedade do atributo que inclui o nome do assembly, o nome do tipo, a versão, a cultura e o token de chave pública para localizar o assembly no GAC (Global Assembly Cache) e carregá-lo para uso pelo designer.

Depois que o assembly for localizado, o Designer SSIS usará as outras propriedades no atributo para exibir informações adicionais sobre a tarefa no Designer SSIS, como o nome, o ícone e a descrição da tarefa.

As DisplayNamepropriedades , Description, e especificam IconResource como a tarefa é apresentada ao usuário. A IconResource propriedade contém a ID do recurso do ícone incorporado no assembly da interface do usuário. O designer carrega o recurso de ícone por ID do assembly e o exibe ao lado do nome da tarefa na caixa de ferramentas e na superfície do designer quando a tarefa é adicionada a um pacote. Se uma tarefa não fornecer um recurso de ícone, o designer usará um ícone padrão para a tarefa.

A interface IDTSTaskUI

A IDtsTaskUI interface define a coleção de métodos e propriedades chamados pelo SSIS Designer para inicializar e exibir a interface do usuário associada à tarefa. Quando a interface do usuário para uma tarefa é invocada, o designer chama o Initialize método, implementado pela interface do usuário da tarefa quando você a escreveu e, em seguida, fornece as TaskHost coleções e Connections da tarefa e do pacote, respectivamente, como parâmetros. Essas coleções são armazenadas localmente e usadas posteriormente no GetView método.

O designer chama o GetView método para solicitar a janela exibida no Designer SSIS. A tarefa cria uma instância da janela que contém a interface do usuário para a tarefa e retorna a interface do usuário para o designer para exibição. Normalmente, os TaskHost objetos e Connections são fornecidos à janela através de um construtor sobrecarregado para que possam ser usados para configurar a tarefa.

O Designer SSIS chama o GetView método da interface do usuário da tarefa para exibir a interface do usuário da tarefa. A interface do usuário da tarefa retorna o formulário do Windows desse método e o SSIS Designer mostra esse formulário como uma caixa de diálogo modal. Quando o formulário é fechado, o Designer SSIS examina o valor da propriedade DialogResult do formulário para determinar se a tarefa foi modificada e se essas modificações devem ser salvas. Se o valor da propriedade DialogResult for OK, o Designer SSIS chamará os métodos de persistência da tarefa para salvar as alterações; caso contrário, as alterações serão descartadas.

O exemplo de código a seguir implementa a IDtsTaskUI interface e pressupõe a existência de uma classe de formulário do Windows chamada 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  

Ver também

Criando uma tarefa personalizada
Codificando uma tarefa personalizada
Desenvolvendo uma interface de usuário para uma tarefa personalizada