トランザクションの継承
パッケージでパッケージ実行タスクを使用して、別のパッケージを実行できます。パッケージ実行タスクで実行される子パッケージでは、独自のパッケージ トランザクションを作成する場合もあれば、親パッケージのトランザクションを継承する場合もあります。
次の 2 つの条件に該当する場合、子パッケージは親パッケージのトランザクションを継承できます。
子パッケージが親パッケージのパッケージ実行タスクによって呼び出される。
子パッケージを呼び出すパッケージ実行タスクも、親パッケージのトランザクションに参加している。
子パッケージ自身がトランザクションに参加していなければ、子パッケージのコンテナやタスクは、親パッケージから継承されるトランザクションに参加できません。
次のダイアグラムには、3 個のパッケージがあり、すべてトランザクションを使用します。各パッケージには、複数のタスクが含まれています。トランザクションの動作がわかりやすいように、パッケージ実行タスクは 1 つだけ示されています。パッケージ A がパッケージ B および C を実行します。次に、パッケージ B がパッケージ D および E を実行し、パッケージ C がパッケージ F を実行します。
パッケージとタスクのトランザクション属性は次のとおりです。
パッケージ A および C の TransactionOption プロパティは Required に設定されています。
パッケージ B、D、および F と、パッケージ実行タスク B、パッケージ実行タスク D、およびパッケージ実行タスク F の TransactionOption プロパティは Supported に設定されています。
パッケージ E、およびパッケージ実行タスク C、パッケージ実行タスク E の TransactionOption プロパティは NotSupported に設定されています。
TransactionOption プロパティが Supported に設定されているのは子パッケージ B、D、および F だけなので、親パッケージのトランザクションを継承できるのはこれらのパッケージだけです。パッケージ B および D は、パッケージ A が開始したトランザクションを継承します。パッケージ F は、パッケージ C が開始したトランザクションを継承します。
パッケージ A および C は、TransactionOption プロパティが Required に設定されているため、独自のトランザクションを制御します。さらに、パッケージ実行タスク C の TransactionOption プロパティが NotSupported に設定されているため、パッケージ C は、パッケージ A が開始したトランザクションを継承しません。
パッケージ E はトランザクションを使用しません。
|