Conectando tarefas programaticamente

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

Uma restrição de precedência, representada no modelo de objetos pela PrecedenceConstraint classe, estabelece a ordem em que Executable os objetos são executados num pacote. A restrição de precedência permite que a execução dos contentores e tarefas num pacote dependa do resultado da execução de uma tarefa ou contentor anterior. As restrições de precedência são estabelecidas entre pares de Executable objetos chamando o Add método da PrecedenceConstraints coleção no objeto contentor. Depois de criar uma restrição entre dois objetos executáveis, define a Value propriedade para estabelecer os critérios para executar o segundo executável definido na restrição.

Pode usar tanto uma restrição como uma expressão numa única restrição de precedência, dependendo do valor que especifica para a EvalOp propriedade, conforme descrito na tabela seguinte:

Valor da propriedade EvalOp Description
Constraint Especifica que o resultado da execução determina se o contentor restrito ou a tarefa é executado. Defina a Value propriedade de para PrecedenceConstraint o valor desejado da DTSExecResult enumeração.
Expression Especifica que o valor de uma expressão determina se o contentor ou a tarefa restrita é executada. Defina a Expression propriedade do PrecedenceConstraint.
ExpressionAndConstraint Especifica que o resultado da restrição deve ocorrer e a expressão deve avaliar para que o contentor ou tarefa restrita seja executado. Defina tanto as propriedades como Value as Expression de PrecedenceConstraint, e defina a sua LogicalAnd propriedade como verdadeira.
ExpressionOrConstraint Especifica que ou o resultado da restrição deve ocorrer, ou a expressão deve ser avaliada, para que o contentor ou tarefa restrita seja executado. Defina tanto as propriedades como Value as Expression de PrecedenceConstraint, e defina a sua LogicalAnd propriedade como falso.

O exemplo de código seguinte demonstra como adicionar duas tarefas a um pacote. É criado um PrecedenceConstraint A entre eles que impede que a segunda tarefa seja executada até a primeira tarefa terminar.

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