プログラムによるタスクの接続
適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム
優先順位制約は、PrecedenceConstraint クラスとしてオブジェクト モデル内に表されるもので、パッケージ内での Executable オブジェクトの実行順序を確立します。 優先順位制約を使用すると、パッケージ内のコンテナーやタスクを、直前のコンテナーやタスクの実行結果に依存して実行させることができます。 2 つの Executable オブジェクト間の優先順位制約は、コンテナー オブジェクトの Add コレクションにある PrecedenceConstraints メソッドを呼び出すことによって確立されます。 2 つの実行可能オブジェクト間の制約を作成したら、Value プロパティを設定して、制約で定義されている 2 番目の実行可能オブジェクトを実行する条件を設定します。
次の表で説明するように、EvalOp プロパティに指定する値に応じて、1 つの優先順位制約内で制約と式の両方を使用できます。
EvalOp プロパティの値 | 説明 |
---|---|
Constraint | 制約付きコンテナーまたは制約付きタスクを実行するかどうかを実行結果が決定するように指定します。 Value の PrecedenceConstraint プロパティを DTSExecResult 列挙の目的の値に設定します。 |
Expression | 制約付きコンテナーまたは制約付きタスクを実行するかどうかを式の値で決定するように指定します。 Expression の PrecedenceConstraint プロパティを設定します。 |
ExpressionAndConstraint | 実行する制約付きコンテナーまたは制約付きタスクに対して、制約結果が発生し、式が評価するように指定します。 PrecedenceConstraint の Value プロパティおよび Expression プロパティの両方を設定し、その LogicalAnd プロパティを true に設定します。 |
ExpressionOrConstraint | 実行する制約付きコンテナーまたは制約付きタスクに対して、制約結果が発生するか、または式が評価するように指定します。 PrecedenceConstraint の Value プロパティおよび Expression プロパティの両方を設定し、その LogicalAnd プロパティを false に設定します。 |
次のコード例では、パッケージにタスクを 2 つ追加します。 次に、タスクの間に PrecedenceConstraint を作成し、第 1 のタスクが終了するまで第 2 のタスクは実行しないように設定します。
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