Connessione di attività a livello di programmazioneConnecting Tasks Programmatically

Un vincolo di precedenza, rappresentato nel modello a oggetti dalla classe PrecedenceConstraint, stabilisce l'ordine di esecuzione degli oggetti Executable in un pacchetto.A precedence constraint, represented in the object model by the PrecedenceConstraint class, establishes the order in which Executable objects run in a package. Con il vincolo di precedenza, l'esecuzione dei contenitori e delle attività di un pacchetto diventa dipendente dal risultato dell'esecuzione di un'attività o di un contenitore precedente.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. I vincoli di precedenza vengono stabiliti tra coppie di oggetti Executable chiamando il metodo Add della raccolta PrecedenceConstraints sull'oggetto contenitore.Precedence constraints are established between pairs of Executable objects by calling the Add method of the PrecedenceConstraints collection on the container object. Dopo aver creato un vincolo tra due oggetti eseguibili, impostare la proprietà Value per stabilire i criteri per l'esecuzione del secondo eseguibile definito nel vincolo.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.

È possibile utilizzare sia un vincolo che un'espressione in un singolo vincolo di precedenza, a seconda del valore specificato per la proprietà EvalOp, come descritto nella tabella seguente: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:

Valore della proprietà EvalOpValue of the EvalOp property DescriptionDescription
Constraint Specifica che il risultato dell'esecuzione determina se l'attività o il contenitore vincolato viene eseguito.Specifies that the execution outcome determines whether the constrained container or task runs. Impostare la proprietà Value di PrecedenceConstraint sul valore desiderato dell'enumerazione DTSExecResult.Set the Value property of the PrecedenceConstraint to the desired value from the DTSExecResult enumeration.
Expression Specifica che il valore di un'espressione determina se l'attività o il contenitore vincolato viene eseguito.Specifies that the value of an expression determines whether the constrained container or task runs. Impostare la proprietà Expression di PrecedenceConstraint.Set the Expression property of the PrecedenceConstraint.
ExpressionAndConstraint Specifica che, affinché l'attività o il contenitore vincolato venga eseguito, è necessario che il risultato del vincolo si verifichi e che l'espressione restituisca un valore.Specifies that the constraint outcome must occur and the expression must evaluate for the constrained container or task to run. Impostare sia il Value e Expression le proprietà del PrecedenceConstrainte impostare relativo LogicalAnd proprietà true.Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to true.
ExpressionOrConstraint Specifica che, affinché l'attività o il contenitore vincolato venga eseguito, è necessario che il risultato del vincolo si verifichi oppure che l'espressione restituisca un valore.Specifies that either the constraint outcome must occur, or the expression must evaluate, for the constrained container or task to run. Impostare sia il Value e Expression le proprietà del PrecedenceConstrainte impostare relativo LogicalAnd proprietà false.Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to false.

Nell'esempio di codice seguente è illustrata l'aggiunta di due attività a un pacchetto.The following code sample demonstrates adding two tasks to a package. Tra le attività viene creato PrecedenceConstraint che impedisce l'esecuzione della seconda attività finché non viene completata la prima.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  

Vedere ancheSee Also

Aggiunta di attività flusso di dati a livello di codiceAdding the Data Flow Task Programmatically