Bagikan melalui


ForLoop.PrecedenceConstraints Property

Returns a PrecedenceConstraints collection. This field is read-only.

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

Syntax

'Declaration
Public ReadOnly Property PrecedenceConstraints As PrecedenceConstraints
    Get
'Usage
Dim instance As ForLoop
Dim value As PrecedenceConstraints

value = instance.PrecedenceConstraints
public PrecedenceConstraints PrecedenceConstraints { get; }
public:
virtual property PrecedenceConstraints^ PrecedenceConstraints {
    PrecedenceConstraints^ get () sealed;
}
abstract PrecedenceConstraints : PrecedenceConstraints
override PrecedenceConstraints : PrecedenceConstraints
final function get PrecedenceConstraints () : PrecedenceConstraints

Implements

IDTSSequence.PrecedenceConstraints

Remarks

Precedence constraints link executables in packages into an ordered workflow and specify conditions that determine whether executables run.

Examples

The following code example creates a ForLoop and sets the three expression properties. The ForLoop also contains two tasks with a precedence constraint that is added to the loop's PrecedenceConstraints collection.

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

namespace ForLoopAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            String varName = "MyVariable";
            int INIT_COUNT = 2;
            int MAX_COUNT = 5;

            Package pkg = new Package();
            Variable var = pkg.Variables.Add(varName, false, "", 0);
            Variable var2 = pkg.Variables.Add("Counter", false, "", 0);

            ForLoop forLoop = (ForLoop)pkg.Executables.Add("STOCK:ForLoop");
            forLoop.InitExpression = "@"+varName+" = "+INIT_COUNT;
            forLoop.EvalExpression = "@"+varName+" < "+MAX_COUNT;
            forLoop.AssignExpression = "@" + varName + " = @" + varName + " + " + INIT_COUNT;

            // Show a different syntax for setting these values.
            //forLoop.InitExpression = "@Counter = 1";
            //forLoop.AssignExpression = "@Counter = @Counter + 1";
            //forLoop.EvalExpression = "@Counter <= 10";

            // The ForLoop contains a Properties collection. 
           // Show how to set some properties using that collection.
            forLoop.Properties["Name"].SetValue(forLoop, "ForLoop Container");
            forLoop.Properties["Description"].SetValue(forLoop, "ForLoop Container");


            // Review the PackagePath of the ForLoop container.
            Console.WriteLine("PackagePath: {0}", forLoop.GetPackagePath());

            // Because the ForLoop is a container, it can contain tasks
            // that run at certain conditions.
            TaskHost thLoopMail = (TaskHost)forLoop.Executables.Add("STOCK:SendMailTask");
            TaskHost thLoopInsert = (TaskHost)forLoop.Executables.Add("STOCK:BulkInsertTask");
            Executables loopExecs = forLoop.Executables;
            Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count);

            // Like other containers, precedence constraints can be set on the
            // contained tasks.
            PrecedenceConstraint pc = forLoop.PrecedenceConstraints.Add((Executable)thLoopMail, thLoopInsert);
            PrecedenceConstraints pcs = forLoop.PrecedenceConstraints;
            Console.WriteLine("Number of precedence constraints: {0}", pcs.Count);


            // Run the package. Because required properties on the tasks are not
            //  set, current sample code will fail.
            DTSExecResult result = pkg.Execute();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.SendMailTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask

Namespace ForLoopAPI

   Class Program

      'Entry point which delegates to C-style main Private Function
      Public Overloads Shared Sub Main()
         Main(System.Environment.GetCommandLineArgs())
      End Sub
      
      Overloads Shared Sub Main(args() As String)
         Dim varName As String = "MyVariable"
         Dim INIT_COUNT As Integer = 2
         Dim MAX_COUNT As Integer = 5
         
         Dim pkg As New Package()
         Dim var As Variable = pkg.Variables.Add(varName, False, "", 0)
         Dim var2 As Variable = pkg.Variables.Add("Counter", False, "", 0)
         
         Dim forLoop As ForLoop = CType(pkg.Executables.Add("STOCK:ForLoop"), ForLoop)
         forLoop.InitExpression = "@" + varName + " = " + INIT_COUNT
         forLoop.EvalExpression = "@" + varName + " < " + MAX_COUNT
         forLoop.AssignExpression = "@" + varName + " = @" + varName + " + " + INIT_COUNT
         
         ' Show a different syntax for setting these values.
         forLoop.InitExpression = "@Counter = 1"
         forLoop.AssignExpression = "@Counter = @Counter + 1"
         forLoop.EvalExpression = "@Counter <= 10"
         ' The ForLoop contains a Properties collection. 
         ' Show how to set some properties using that collection.
         forLoop.Properties("Name").SetValue(forLoop, "ForLoop Container")
         forLoop.Properties("Description").SetValue(forLoop, "ForLoop Container")
         
         
         ' Review the PackagePath of the ForLoop container.
         Console.WriteLine("PackagePath: {0}", forLoop.GetPackagePath())
         
         ' Because the ForLoop is a container, it can contain tasks
         ' that run at certain conditions.
         Dim thLoopMail As TaskHost = CType(forLoop.Executables.Add("STOCK:SendMailTask"), TaskHost)
         Dim thLoopInsert As TaskHost = CType(forLoop.Executables.Add("STOCK:BulkInsertTask"), TaskHost)
         Dim loopExecs As Executables = forLoop.Executables
         Console.WriteLine("Number of Executables in ForLoop: {0}", loopExecs.Count)
         
         ' Like other containers, precedence constraints can be set on the
         ' contained tasks.
         Dim pc As PrecedenceConstraint = forLoop.PrecedenceConstraints.Add(CType(thLoopMail, Executable), thLoopInsert)
         Dim pcs As PrecedenceConstraints = forLoop.PrecedenceConstraints
         Console.WriteLine("Number of precedence constraints: {0}", pcs.Count)
         
         
         ' Run the package. Because required properties on the tasks are not
         '  set, current sample code will fail.
         Dim result As DTSExecResult = pkg.Execute()
      End Sub 'Main
   End Class 'Program
End Namespace 'ForLoopAPI

Sample Output:

PackagePath: \Package\{8A18B94E-1176-429E-BB3D-6F3F1E0C9070}

Number of Executables in ForLoop: 2

Number of precedence constraints: 1