상속된 트랜잭션
패키지 실행 태스크를 사용하면 패키지가 다른 패키지를 실행할 수 있습니다. 패키지 실행 태스크에서 실행하는 패키지인 자식 패키지는 자체의 패키지 트랜잭션을 만들거나 부모 패키지 트랜잭션을 상속할 수 있습니다.
다음 두 가지 조건에 모두 해당하면 자식 패키지는 부모 패키지의 트랜잭션을 상속할 수 있습니다.
부모 패키지의 패키지 실행 태스크가 자식 패키지를 호출합니다.
자식 패키지를 호출한 패키지 실행 태스크가 부모 패키지의 트랜잭션에도 참여했습니다.
자식 패키지 자체가 트랜잭션에 참여하지 않으면 자식 패키지 내의 컨테이너 및 태스크가 부모 패키지에서 상속되는 트랜잭션에 참여할 수 없습니다.
다음 다이어그램에서 트랜잭션을 사용하는 3개의 패키지가 있습니다. 각 패키지는 여러 태스크를 포함합니다. 트랜잭션 동작을 강조하기 위해 패키지 실행 태스크만 표시했습니다. 패키지 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 태스크의 TransactionOption 속성이 NotSupported로 설정되기 때문에 패키지 C는 패키지 A에서 시작한 트랜잭션을 상속하지 않습니다.
패키지 E는 트랜잭션을 사용하지 않습니다.
|