次の方法で共有


トランザクションの継承

パッケージでパッケージ実行タスクを使用して、別のパッケージを実行できます。パッケージ実行タスクで実行される子パッケージでは、独自のパッケージ トランザクションを作成する場合もあれば、親パッケージのトランザクションを継承する場合もあります。

次の 2 つの条件に該当する場合、パッケージは親パッケージのトランザクションを継承します。

  • パッケージがパッケージ実行タスクによって呼び出される。

  • パッケージを呼び出すパッケージ実行タスクも、親パッケージのトランザクションに参加している。

子パッケージ自身がトランザクションに参加していなければ、子パッケージのコンテナやタスクは親パッケージのトランザクションに参加できません。

次のダイアグラムには、3 個のパッケージがあり、すべてトランザクションを使用します。各パッケージには、複数のタスクが含まれています。トランザクションの動作がわかりやすいように、パッケージ実行タスクは 1 つだけ示されています。パッケージ A がパッケージ B および C を実行します。次に、パッケージ B がパッケージ D および E を実行し、パッケージ C がパッケージ F を実行します。

パッケージとタスクのトランザクション属性は次のとおりです。

  • パッケージ A および C の TransactionOptionRequired に設定されています。

  • パッケージ B と D、およびパッケージ実行タスク B、パッケージ実行タスク D、パッケージ実行タスク F の TransactionOptionSupported に設定されています。

  • パッケージ E、およびパッケージ実行タスク C、パッケージ実行タスク E の TransactionOptionNotSupported に設定されています。

トランザクションの継承フロー

パッケージ B、D、および F のみが親パッケージのトランザクションを継承できます。

パッケージ B および D は、パッケージ A が開始したトランザクションを継承します。

パッケージ F はパッケージ C が開始したトランザクションを継承します。

パッケージ A および C は独自のトランザクションを制御します。

パッケージ E はトランザクションを使用しません。