프로그래밍 방식으로 태스크 연결Connecting Tasks Programmatically

개체 모델에서 PrecedenceConstraint 클래스가 나타내는 선행 제약 조건은 패키지에서 Executable 개체가 실행되는 순서를 설정합니다.A precedence constraint, represented in the object model by the PrecedenceConstraint class, establishes the order in which Executable objects run in a package. 선행 제약 조건을 사용하면 패키지의 컨테이너 및 태스크 실행이 이전 태스크 또는 컨테이너의 실행 결과에 따라 결정되도록 할 수 있습니다.The precedence constraint allows the execution of the containers and tasks in a package to be dependent on the result of the execution of a previous task or container. 선행 제약 조건은 컨테이너 개체에서 Executable 컬렉션의 Add 메서드를 호출하여 PrecedenceConstraints 개체 쌍 간에 설정됩니다.Precedence constraints are established between pairs of Executable objects by calling the Add method of the PrecedenceConstraints collection on the container object. 두 개의 실행 개체 사이에 제약 조건을 만든 후 Value 속성을 설정하여 제약 조건에 정의된 두 번째 실행 파일을 실행하기 위한 조건을 지정합니다.After you create a constraint between two executable objects, you set the Value property to establish the criteria for executing the second executable defined in the constraint.

다음 표에서 설명하는 것처럼 EvalOp 속성에 지정하는 값에 따라 단일 선행 제약 조건에 제약 조건과 식을 모두 사용할 수 있습니다.You can use both a constraint and an expression in a single precedence constraint, depending on the value that you specify for the EvalOp property, as described in the following table:

EvalOp 속성 값Value of the EvalOp property DescriptionDescription
Constraint 실행 결과에 따라 제약 조건이 지정된 컨테이너 또는 태스크의 실행 여부가 결정되도록 지정합니다.Specifies that the execution outcome determines whether the constrained container or task runs. ValuePrecedenceConstraint 속성을 DTSExecResult 열거형에서 원하는 값으로 설정합니다.Set the Value property of the PrecedenceConstraint to the desired value from the DTSExecResult enumeration.
Expression 식의 값에 따라 제약 조건이 지정된 컨테이너 또는 태스크의 실행 여부가 결정되도록 지정합니다.Specifies that the value of an expression determines whether the constrained container or task runs. ExpressionPrecedenceConstraint 속성을 설정합니다.Set the Expression property of the PrecedenceConstraint.
ExpressionAndConstraint 제약 조건 결과가 발생해야 하며 식에서 제약 조건이 지정된 컨테이너 또는 태스크의 실행을 평가해야 하도록 지정합니다.Specifies that the constraint outcome must occur and the expression must evaluate for the constrained container or task to run. 모두 설정는 ValueExpression 의 속성은 PrecedenceConstraint, 설정 및 해당 LogicalAnd 속성을 true합니다.Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to true.
ExpressionOrConstraint 제약 조건 결과가 발생해야 하거나 식에서 제약 조건이 지정된 컨테이너 또는 태스크의 실행을 평가해야 하도록 지정합니다.Specifies that either the constraint outcome must occur, or the expression must evaluate, for the constrained container or task to run. 모두 설정는 ValueExpression 의 속성은 PrecedenceConstraint, 설정 및 해당 LogicalAnd 속성을 false합니다.Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to false.

다음 코드 예제에서는 패키지에 두 개의 태스크를 추가하는 방법을 보여 줍니다.The following code sample demonstrates adding two tasks to a package. 두 태스크 사이에는 PrecedenceConstraint가 만들어지므로 첫 번째 태스크가 완료될 때까지 두 번째 태스크는 실행되지 않습니다.A PrecedenceConstraint is created between them that prevents the second task from running until the first task finishes.

using System;  
using Microsoft.SqlServer.Dts.Runtime;  

namespace Microsoft.SqlServer.Dts.Samples  
{  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      Package p = new Package();  

      // Add a File System task.  
      Executable eFileTask1 = p.Executables.Add("STOCK:FileSystemTask");  
      TaskHost thFileHost1 = eFileTask1 as TaskHost;  

      // Add a second File System task.  
      Executable eFileTask2 = p.Executables.Add("STOCK:FileSystemTask");  
      TaskHost thFileHost2 = eFileTask2 as TaskHost;  

      // Put a precedence constraint between the tasks.  
      // Set the constraint to specify that the second File System task cannot run  
      // until the first File System task finishes.  
      PrecedenceConstraint pcFileTasks =   
        p.PrecedenceConstraints.Add((Executable)thFileHost1, (Executable)thFileHost2);  
      pcFileTasks.Value = DTSExecResult.Completion;  
    }  
  }  
}  
Imports Microsoft.SqlServer.Dts.Runtime  

Module Module1  

  Sub Main()  

    Dim p As Package = New Package()  
    ' Add a File System task.  
    Dim eFileTask1 As Executable = p.Executables.Add("STOCK:FileSystemTask")  
    Dim thFileHost1 As TaskHost = CType(eFileTask1, TaskHost)  

    ' Add a second File System task.  
    Dim eFileTask2 As Executable = p.Executables.Add("STOCK:FileSystemTask")  
    Dim thFileHost2 As TaskHost = CType(eFileTask2, TaskHost)  

    ' Put a precedence constraint between the tasks.  
    ' Set the constraint to specify that the second File System task cannot run  
    ' until the first File System task finishes.  
    Dim pcFileTasks As PrecedenceConstraint = _  
      p.PrecedenceConstraints.Add(CType(thFileHost1, Executable), CType(thFileHost2, Executable))  
    pcFileTasks.Value = DTSExecResult.Completion  

  End Sub  

End Module  

참고 항목See Also

데이터 흐름 태스크를 프로그래밍 방식으로 추가Adding the Data Flow Task Programmatically