继承的事务
包可以使用执行包任务运行另一个包。子包也就是执行包任务所运行的包,它可以创建自己的包事务,也可以继承父包事务。
如果同时满足下面这两个条件,则子包可继承父包的事务:
该子包由父包中执行包任务调用。
调用该子包的执行包任务同时还联接父包的事务。
子包中的容器和任务无法联接从父包继承的事务,除非子包本身联接该事务。
在下面的关系图中,三个包都使用事务。每个包包含多项任务。为了强调事务的行为,只显示了执行包任务。包 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。
只有子包 B、D 和 F 可从其父包继承事务,因为这些包将其 TransactionOption 属性设置为 Supported。包 B 和 D 继承包 A 已开始的事务,而包 F 继承包 C 已开始的事务。
包 A 和 C 控制其自己的事务,因为这些包将其 TransactionOption 属性设置为 Required。此外,包 C 不继承包 A 开始的事务,因为执行包 C 任务的 TransactionOption 属性设置为 NotSupported。
包 E 不使用事务。
|