Conectando tarefas programaticamente
Aplica-se a: SQL Server SSIS Integration Runtime no Azure Data Factory
Uma restrição de precedência, representada no modelo de objeto pela classe PrecedenceConstraint, estabelece a ordem na qual objetos Executable são executados em um pacote. A restrição de precedência permite que a execução dos contêineres e tarefas de um pacote dependam do resultado da execução de uma tarefa ou contêiner anterior. Restrições de precedência são estabelecidas entre pares de objetos Executable através da chamada ao método Add da coleção PrecedenceConstraints no objeto contêiner. Depois de criar uma restrição entre dois objetos executáveis, defina a propriedade Value para estabelecer os critérios para executar o segundo executável definido na restrição.
Você pode usar uma restrição e uma expressão em uma única restrição de precedência, dependendo do valor especificado para a propriedade EvalOp, conforme descrito na seguinte tabela:
Valor da propriedade EvalOp | Descrição |
---|---|
Constraint | Especifica que o resultado de execução determina se o contêiner ou tarefa restrita é executada. Defina a propriedade Value do PrecedenceConstraint com o valor desejado da enumeração DTSExecResult. |
Expression | Especifica que o valor de uma expressão determina se o contêiner ou tarefa restrita é executada. Defina a propriedade Expression do PrecedenceConstraint. |
ExpressionAndConstraint | Especifica que o resultado de restrição deve ocorrer e que a expressão deve ser avaliada para determinar se o contêiner ou tarefa restrita deve ser executada. Defina ambas as propriedades Value e Expression do PrecedenceConstraint e defina sua propriedade LogicalAnd como true. |
ExpressionOrConstraint | Especifica que o resultado de restrição deve ocorrer, ou que a expressão deve ser avaliada, para determinar se o contêiner ou tarefa restrita deve ser executada. Defina ambas as propriedades Value e Expression do PrecedenceConstraint e defina sua propriedade LogicalAnd como false. |
O exemplo de código a seguir demonstra a adição de duas tarefas a um pacote. Um PrecedenceConstraint é criado entre elas, impedindo a execução da segunda tarefa antes do término da primeira.
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