Udostępnij za pośrednictwem


Sequence.PrecedenceConstraints Property

Returns a collection of PrecedenceConstraint objects that describe the precedence constraints that link container-level containers and tasks into an ordered control flow

Namespace: Microsoft.SqlServer.Dts.Runtime
Assembly: Microsoft.SqlServer.ManagedDTS (in microsoft.sqlserver.manageddts.dll)

Syntax

'Declaration
Public ReadOnly Property PrecedenceConstraints As PrecedenceConstraints
public PrecedenceConstraints PrecedenceConstraints { get; }
public:
virtual property PrecedenceConstraints^ PrecedenceConstraints {
    PrecedenceConstraints^ get () sealed;
}
/** @property */
public final PrecedenceConstraints get_PrecedenceConstraints ()
public final function get PrecedenceConstraints () : PrecedenceConstraints

Property Value

A PrecedenceConstraints collection.

Remarks

Precedence constraints link containers and tasks into an ordered workflow. You can implement precedence constraints between all types of containers and tasks except packages. For more information, see Precedence Constraints.

Example

The following code example creates a Sequence object, and creates three tasks, placing precedence constraints between them. Using the PrecedenceConstraints collection, it iterates over the constraints in the Sequence, printing information about each constraint.

using System;
using System.Collections.Generic;
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks. FileSystemTask;

namespace Sequence_API
{
    class Program
    {
        static void Main(string[] args)
        {
            Package package = new Package();
            Sequence seq = (Sequence)package.Executables.Add("STOCK:SEQUENCE");

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

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

            // Add a Bulk Insert task.
            Executable eBulkInsert = seq.Executables.Add("STOCK:BulkInsertTask");
            TaskHost thBulkInsert = eBulkInsert as TaskHost;

            // Add a precedence contraint between eFileTask1 and eFileTask2.
            // Set the constraint to be that eFileTask2 cannot run 
            // until eFileTask1 completes.
            PrecedenceConstraint pcFileTasks = seq.PrecedenceConstraints.Add(eFileTask1, eFileTask2);

            // Add another precedence contraint. Add it between eFileTask2 and BulkInsert.
            // Again, set the constraint to be that BulkInsert cannot run 
            // until eFileTask2 completes.
            PrecedenceConstraint pcFiletoBulk = seq.PrecedenceConstraints.Add(eFileTask2, eBulkInsert);
            // Obtain the precedence constraint collection, and display properties.
            // Some properties are read/write and have not been set.
            PrecedenceConstraints seqPCs = seq.PrecedenceConstraints;
            int numPCs = seqPCs.Count;
            Console.WriteLine("Number of precedence constraints in Sequence: {0}", numPCs);
            Console.WriteLine("----------------------------------------");
            
            foreach (PrecedenceConstraint pc in seqPCs)
            {
                Console.WriteLine("Constrained container  {0}", pc.ConstrainedExecutable);
                Console.WriteLine("Description            {0}", pc.Description);
                Console.WriteLine("Evaluation operation   {0}", pc.EvalOp);
                Console.WriteLine("Evaluates true         {0}", pc.EvaluatesTrue);
                Console.WriteLine("ID                     {0}", pc.ID);
                Console.WriteLine("LogicalAnd             {0}", pc.LogicalAnd);
                Console.WriteLine("Name                   {0}", pc.Name);
                Console.WriteLine("Precedence Executable  {0}", pc.PrecedenceExecutable);
                Console.WriteLine("Value                  {0}", pc.Value);
                Console.WriteLine("-----------------------------------");
            }
            Executables seqExecs = seq.Executables;
            int numExecs = seqExecs.Count;
            Console.WriteLine("Number of Executables in Sequence: {0}", numExecs);
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks. FileSystemTask
 
Namespace Sequence_API
    Class Program
        Shared  Sub Main(ByVal args() As String)
            Dim package As Package =  New Package() 
            Dim seq As Sequence = CType(package.Executables.Add("STOCK:SEQUENCE"), Sequence)
 
            ' Add a File System task.
            Dim eFileTask1 As Executable =  seq.Executables.Add("STOCK:FileSystemTask") 
            Dim thFileTask1 As TaskHost =  eFileTask1 as TaskHost 
 
            ' Add a second File System task.
            Dim eFileTask2 As Executable =  seq.Executables.Add("STOCK:FileSystemTask") 
            Dim thFileTask2 As TaskHost =  eFileTask2 as TaskHost 
 
            ' Add a Bulk Insert task.
            Dim eBulkInsert As Executable =  seq.Executables.Add("STOCK:BulkInsertTask") 
            Dim thBulkInsert As TaskHost =  eBulkInsert as TaskHost 
 
            ' Add a precedence contraint between eFileTask1 and eFileTask2.
            ' Set the constraint to be that eFileTask2 cannot run 
            ' until eFileTask1 completes.
            Dim pcFileTasks As PrecedenceConstraint =  seq.PrecedenceConstraints.Add(eFileTask1,eFileTask2) 
 
            ' Add another precedence contraint. Add it between eFileTask2 and BulkInsert.
            ' Again, set the constraint to be that BulkInsert cannot run 
            ' until eFileTask2 completes.
            Dim pcFiletoBulk As PrecedenceConstraint =  seq.PrecedenceConstraints.Add(eFileTask2,eBulkInsert) 
            ' Obtain the precedence constraint collection, and display properties.
            ' Some properties are read/write and have not been set.
            Dim seqPCs As PrecedenceConstraints =  seq.PrecedenceConstraints 
            Dim numPCs As Integer =  seqPCs.Count 
            Console.WriteLine("Number of precedence constraints in Sequence: {0}", numPCs)
            Console.WriteLine("----------------------------------------")
 
            Dim pc As PrecedenceConstraint
            For Each pc In seqPCs
                Console.WriteLine("Constrained container  {0}", pc.ConstrainedExecutable)
                Console.WriteLine("Description            {0}", pc.Description)
                Console.WriteLine("Evaluation operation   {0}", pc.EvalOp)
                Console.WriteLine("Evaluates true         {0}", pc.EvaluatesTrue)
                Console.WriteLine("ID                     {0}", pc.ID)
                Console.WriteLine("LogicalAnd             {0}", pc.LogicalAnd)
                Console.WriteLine("Name                   {0}", pc.Name)
                Console.WriteLine("Precedence Executable  {0}", pc.PrecedenceExecutable)
                Console.WriteLine("Value                  {0}", pc.Value)
                Console.WriteLine("-----------------------------------")
            Next
            Dim seqExecs As Executables =  seq.Executables 
            Dim numExecs As Integer =  seqExecs.Count 
            Console.WriteLine("Number of Executables in Sequence: {0}", numExecs)
        End Sub
    End Class
End Namespace

Sample Output:

Number of precedence constraints in Sequence: 2

----------------------------------------

Constrained container Microsoft.SqlServer.Dts.Runtime.TaskHost

Description

Evaluation operation Constraint

Evaluates true True

ID {A4F5C0E6-A9A6-470D-9646-7FEAFE3B45AD}

LogicalAnd True

Name {A4F5C0E6-A9A6-470D-9646-7FEAFE3B45AD}

Precedence Executable Microsoft.SqlServer.Dts.Runtime.TaskHost

Value Success

-----------------------------------

Constrained container Microsoft.SqlServer.Dts.Runtime.TaskHost

Description

Evaluation operation Constraint

Evaluates true True

ID {665C52DE-232A-4593-ADF1-7C51949712B8}

LogicalAnd True

Name {665C52DE-232A-4593-ADF1-7C51949712B8}

Precedence Executable Microsoft.SqlServer.Dts.Runtime.TaskHost

Value Success

-----------------------------------

Number of Executables in Sequence: 3

Thread Safety

Any public static (Shared in Microsoft Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

Target Platforms

For a list of the supported platforms, see Hardware and Software Requirements for Installing SQL Server 2005.

See Also

Reference

Sequence Class
Sequence Members
Microsoft.SqlServer.Dts.Runtime Namespace