Programmgesteuertes Verbinden von Tasks
Eine Rangfolgeneinschränkung, die in dem Objektmodell durch die PrecedenceConstraint-Klasse dargestellt wird, legt die Reihenfolge, in der die Executable-Objekte in einem Paket ausgeführt werden, fest. Durch die Rangfolgeneinschränkung kann die Ausführung der Container und Tasks in einem Paket von dem Ergebnis der Ausführung eines vorherigen Tasks oder Containers abhängig gemacht werden. Rangfolgeneinschränkungen werden zwischen Executable-Objektpaaren durch Aufrufen der Add-Methode der PrecedenceConstraints-Auflistung für das Containerobjekt eingerichtet. Nachdem Sie eine Einschränkung zwischen zwei ausführbaren Objekten erstellt haben, legen Sie die Value-Eigenschaft fest, um die Kriterien für die Ausführung des zweiten ausführbaren in der Einschränkung definierten Objekts festzulegen.
Abhängig von dem Wert, den Sie, wie in der folgenden Tabelle beschrieben, für die EvalOp-Eigenschaft festlegen, können Sie in einer einzigen Rangfolgeneinschränkung sowohl eine Einschränkung als auch einen Ausdruck verwenden:
Wert der EvalOp-Eigenschaft |
Beschreibung |
---|---|
Gibt an, dass das Ausführungsergebnis bestimmt, ob der eingeschränkte Container oder Task ausgeführt wird. Legen Sie für die Value-Eigenschaft von PrecedenceConstraint den gewünschten Wert aus der DTSExecResult-Enumeration fest. |
|
Gibt an, dass der Wert eines Ausdrucks bestimmt, ob der eingeschränkte Container oder Task ausgeführt wird. Legen Sie die Expression-Eigenschaft von PrecedenceConstraint fest. |
|
Gibt an, dass das Einschränkungsergebnis auftreten und der Ausdruck ausgewertet werden muss, damit der eingeschränkte Container oder Task ausgeführt wird. Legen Sie sowohl die Value- als auch die Expression-Eigenschaften von PrecedenceConstraint fest, und legen Sie die LogicalAnd-Eigenschaft als true fest. |
|
Gibt an, dass entweder das Einschränkungsergebnis auftreten oder der Ausdruck ausgewertet werden muss, damit der eingeschränkte Container oder Task ausgeführt wird. Legen Sie sowohl die Value- als auch die Expression-Eigenschaften von PrecedenceConstraint fest, und legen Sie die LogicalAnd-Eigenschaft als false fest. |
Im folgenden Codebeispiel wird das Hinzufügen von zwei Tasks zu einem Paket veranschaulicht. Zwischen ihnen wird eine PrecedenceConstraint erstellt, die verhindert, dass der zweite Task vor Beendung des ersten Tasks ausgeführt wird.
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
|