사용자 지정 태스크의 사용자 인터페이스 개발Developing a User Interface for a Custom Task

Integration ServicesIntegration Services 개체 모델을 사용하면 사용자 지정 태스크 개발자가 태스크의 사용자 지정 사용자 인터페이스를 쉽게 만들 수 있으며 이러한 태스크는 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에 통합 및 표시될 수 있습니다.The Integration ServicesIntegration Services object model provides custom task developers the ability to easily create a custom user interface for a task that can then be integrated and displayed in SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT). 사용자 인터페이스는 SSISSSIS 디자이너에서 사용자에게 유용한 정보를 제공하고 사용자 지정 태스크의 속성 및 설정을 올바르게 구성할 수 있도록 안내해 줍니다.The user interface can provide helpful information to the user in SSISSSIS Designer, and guide users to correctly configure the properties and settings of the custom task.

태스크의 사용자 지정 사용자 인터페이스를 개발할 때는 두 개의 중요한 클래스를 사용합니다.Developing a custom user interface for a task involves using two important classes. 다음 표에서는 이러한 클래스에 대해 설명합니다.The following table describes those classes.

클래스Class DescriptionDescription
DtsTaskAttribute 관리되는 태스크를 식별하고, SSISSSIS 디자이너에서 개체를 표시하고 개체와 상호 작용하는 방식을 제어하기 위해 해당 속성을 통해 디자인 타임 정보를 제공하는 특성입니다.An attribute that identifies a managed task, and supplies design-time information through its properties to control how SSISSSIS Designer displays and interacts with the object.
IDtsTaskUI 태스크에서 해당 태스크를 사용자 지정 사용자 인터페이스와 연결하는 데 사용되는 인터페이스입니다.An interface used by the task to associate the task with its custom user interface.

이 섹션에서는 사용자 지정 태스크의 사용자 인터페이스를 개발할 때 DtsTaskAttribute 특성 및 IDtsTaskUI 인터페이스가 하는 역할을 설명하고, SSISSSIS 디자이너 내에서 태스크를 만들고, 통합, 배포 및 디버깅하는 방법에 대한 세부 정보를 제공합니다.This section describes the role of the DtsTaskAttribute attribute and the IDtsTaskUI interface when you are developing a user interface for a custom task, and provides details about how to create, integrate, deploy, and debug the task within SSISSSIS Designer.

SSISSSIS 디자이너 작업에 대 한 사용자 인터페이스를 여러 진입점을 제공: 사용자가 선택할 수 편집 바로 가기 메뉴에서 해당 작업을 두 번 클릭 하거나 클릭는 편집기 표시 속성 시트의 맨 아래에 링크 합니다.The SSISSSIS Designer provides multiple entry points to the user interface for the task: the user can select Edit on the shortcut menu, double-click the task, or click the Show Editor link at the bottom of the property sheet. 사용자가 이러한 진입점 중 하나에 액세스하면 SSISSSIS 디자이너에서는 태스크의 사용자 인터페이스가 들어 있는 어셈블리를 찾아서 로드합니다.When the user accesses one of these entry points, SSISSSIS Designer locates and loads the assembly that contains the user interface for the task. 태스크의 사용자 인터페이스는 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에서 사용자에게 표시되는 속성 대화 상자를 만듭니다.The user interface for the task is responsible for creating the properties dialog box that is displayed to the user in SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT).

태스크와 태스크의 해당 사용자 인터페이스는 별개의 엔터티입니다.A task and its user interface are separate entities. 따라서 지역화, 배포 및 유지 관리 작업을 줄이려면 태스크와 태스크의 사용자 인터페이스를 별개의 어셈블리에 구현해야 합니다.They should be implemented in separate assemblies to reduce localization, deployment, and maintenance work. 태스크 DLL은 태스크에 코딩된 DtsTaskAttribute 특성 값에 들어 있는 정보를 제외하고는 사용자 인터페이스에 대한 어떤 정보도 로드하거나 호출하지 않으며 일반적으로 이러한 정보를 포함하지도 않습니다.The task DLL does not load, call, or generally contain any knowledge of its user interface, except for the information that is contained in the DtsTaskAttribute attribute values coded in the task. 태스크와 사용자 인터페이스는 이러한 방식으로만 연결됩니다.This is the only way that a task and its user interface are associated.

DtsTask 특성The DtsTask Attribute

DtsTaskAttribute 특성은 태스크 클래스 코드에 포함되어 태스크와 해당 사용자 인터페이스를 연결합니다.The DtsTaskAttribute attribute is included in the task class code to associate a task with its user interface. SSISSSIS 디자이너에서는 이 특성의 속성을 사용하여 디자이너에 태스크를 표시하는 방법을 결정합니다.The SSISSSIS Designer uses the properties of the attribute to determine how to display the task in the designer. 이러한 속성에는 표시할 이름과 해당되는 경우 아이콘이 포함되어 있습니다.These properties include the name to display and the icon, if any.

다음 표에서는 DtsTaskAttribute 특성의 속성에 대해 설명합니다.The following table describes the properties of the DtsTaskAttribute attribute.

속성Property DescriptionDescription
DisplayName 제어 흐름 도구 상자에 태스크 이름을 표시합니다.Displays the task name in the Control Flow toolbox.
Description DtsLocalizableAttribute에서 상속된 태스크 설명입니다.The task description (inherited from DtsLocalizableAttribute). 이 속성은 도구 설명에 표시됩니다.This property is shown in ToolTips.
IconResource SSISSSIS 디자이너에 표시되는 아이콘입니다.The icon displayed in SSISSSIS Designer.
RequiredProductLevel 사용되는 경우 이 속성은 DTSProductLevel 열거형의 값 중 하나로 설정합니다.If used, set it to one of the values in the DTSProductLevel enumeration. RequiredProductLevel = DTSProductLevel.None)을 입력합니다.For example, RequiredProductLevel = DTSProductLevel.None.
TaskContact 태스크에 기술 지원이 필요한 경우를 위해 연락처 정보를 포함합니다.Holds contact information for occasions when the task requires technical support.
TaskType 태스크에 유형을 할당합니다.Assigns a type to the task.
Attribute.TypeIdAttribute.TypeId 파생 클래스에서 구현된 경우 이 특성에 대한 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute. 자세한 내용은 참조 Attribute.TypeID .NET Framework 클래스 라이브러리에서 속성입니다.For more information, see Attribute.TypeID property in the .NET Framework Class Library.
UITypeName SSISSSIS 디자이너에서 어셈블리를 로드하는 데 사용되는 어셈블리 유형 이름입니다.The type name of the assembly that is used by SSISSSIS Designer to load the assembly. 이 속성은 태스크의 사용자 인터페이스 어셈블리를 찾는 데 사용됩니다.This property is used to find the user interface assembly for the task.

다음 코드 예에서는 클래스 정의 위에 코딩된 경우의 DtsTaskAttribute를 보여 줍니다.The following code example shows the DtsTaskAttribute as it would look, coded above the class definition.

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  

SSISSSIS 디자이너에서는 어셈블리 이름, 유형 이름, 버전, culture 및 공개 키 토큰이 들어 있는 특성의 UITypeName 속성을 사용하여 GAC(전역 어셈블리 캐시)에서 어셈블리를 찾고, 디자이너에서 사용할 수 있도록 해당 어셈블리를 로드합니다.The SSISSSIS Designer uses the UITypeName property of the attribute that includes the assembly name, type name, version, culture, and public key token, to locate the assembly in the Global Assembly Cache (GAC) and load it for use by the designer.

어셈블리를 찾은 후 SSISSSIS 디자이너에서는 특성의 다른 속성을 사용하여 SSISSSIS 디자이너에 태스크의 이름, 아이콘 및 설명과 같은 추가 정보를 표시합니다.After the assembly has been located, SSISSSIS Designer uses the other properties in the attribute to display additional information about the task in SSISSSIS Designer, such as the name, icon, and description of the task.

DisplayName, DescriptionIconResource 속성은 태스크가 사용자에게 표시되는 방식을 지정합니다.The DisplayName, Description, and IconResource properties specify how the task is presented to the user. IconResource 속성에는 사용자 인터페이스 어셈블리에 포함된 아이콘의 리소스 ID가 들어 있습니다.The IconResource property contains the resource ID of the icon embedded in the user interface assembly. 디자이너에서는 어셈블리에서 ID를 기준으로 아이콘 리소스를 로드하고, 태스크가 패키지에 추가될 때 도구 상자와 디자이너 화면의 태스크 이름 옆에 해당 아이콘을 표시합니다.The designer loads the icon resource by ID from the assembly, and displays it next to the task name in the toolbox and on the designer surface when the task is added to a package. 태스크에서 아이콘 리소스를 제공하지 않는 경우에는 태스크의 기본 아이콘을 사용합니다.If a task does not provide an icon resource, the designer uses a default icon for the task.

IDTSTaskUI 인터페이스The IDTSTaskUI Interface

IDtsTaskUI 인터페이스는 SSISSSIS 디자이너에서 태스크와 연결된 사용자 인터페이스를 초기화하고 표시하기 위해 호출하는 메서드 및 속성의 컬렉션을 정의합니다.The IDtsTaskUI interface defines the collection of methods and properties called by SSISSSIS Designer to initialize and display the user interface associated with the task. 태스크의 사용자 인터페이스가 호출되면 디자이너에서는 태스크 사용자 인터페이스를 작성할 때 해당 사용자 인터페이스에 의해 구현된 Initialize 메서드를 호출한 다음 태스크와 패키지의 TaskHostConnections 컬렉션을 각각 매개 변수로 제공합니다.When the user interface for a task is invoked, the designer calls the Initialize method, implemented by the task user interface when you wrote it, and then provides the TaskHost and Connections collections of the task and package, respectively, as parameters. 이러한 컬렉션은 로컬로 저장되었다가 나중에 GetView 메서드에서 사용됩니다.These collections are stored locally, and used subsequently in the GetView method.

디자이너에서는 GetView 메서드를 호출하여 SSISSSIS 디자이너에 표시되는 창을 요청합니다.The designer calls the GetView method to request the window that is displayed in SSISSSIS Designer. 태스크에서는 해당 태스크의 사용자 인터페이스가 들어 있는 창의 인스턴스를 만들고 표시를 위해 해당 사용자 인터페이스를 디자이너에 반환합니다.The task creates an instance of the window that contains the user interface for the task, and returns the user interface to the designer for display. 일반적으로 TaskHostConnections 개체는 오버로드된 생성자를 통해 창에 제공되므로 이들 개체를 사용하여 태스크를 구성할 수 있습니다.Typically, the TaskHost and Connections objects are provided to the window through an overloaded constructor so they can be used to configure the task.

SSISSSIS 디자이너에서는 태스크 UI의 GetView 메서드를 호출하여 태스크의 사용자 인터페이스를 표시합니다.The SSISSSIS Designer calls the GetView method of the task UI to display the user interface for the task. 태스크 사용자 인터페이스는 이 메서드에서 Windows Form을 반환하고 SSISSSIS 디자이너에서는 이 폼을 모달 대화 상자로 표시합니다.The task user interface returns the Windows form from this method, and SSISSSIS Designer shows this form as a modal dialog box. 폼을 닫을 때 SSISSSIS 디자이너의 값이 검사는 DialogResult 작업의 수정 여부 및이 수정 내용을 저장 해야 하는 경우를 확인 하려면 폼의 속성입니다.When the form is closed, SSISSSIS Designer examines the value of the DialogResult property of the form to determine whether the task has been modified and if these modifications should be saved. 하는 경우의 값은 DialogResult 속성은 확인, SSISSSIS 디자이너 변경 내용을 저장 하는 작업의 지 속성 메서드를 호출 하는 변경 내용이 삭제 되 고, 그러지 않으면 합니다.If the value of the DialogResult property is OK, the SSISSSIS Designer calls the persistence methods of the task to save the changes; otherwise, the changes are discarded.

다음 코드 예제에서는 IDtsTaskUI 인터페이스를 구현하며 SampleTaskForm이라는 Windows Form 클래스가 있다고 가정합니다.The following code sample implements the IDtsTaskUI interface, and assumes the existence of a Windows form class named 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  

관련 항목:See Also

사용자 지정 작업 만들기 Creating a Custom Task
사용자 지정 태스크 코딩 Coding a Custom Task
사용자 지정 태스크에 대 한 사용자 인터페이스 개발Developing a User Interface for a Custom Task