다음을 통해 공유


범위

범위는 작업을 그룹화하기 위한 프레임워크입니다. 주로 트랜잭션 실행 및 예외 처리에 사용됩니다.

범위에는 하나 이상의 블록이 포함됩니다. 본문이 있으며 필요에 따라 임의 개수의 예외 처리 블록을 추가할 수 있습니다. 범위의 특성에 따라 선택적 보정 블록도 있을 수 있습니다. 일부 범위는 전적으로 예외 처리를 위한 것이며 보정이 필요하지 않습니다. 다른 범위는 명시적으로 트랜잭션 방식으로 설정되며, 기본 보정 처리기와 함께 사용자가 생성할 수 있는 선택적 보정 처리기를 가질 수 있습니다. 트랜잭션 범위에는 기본 예외 처리기가 있으며, 이를 위해 생성한 여러 추가 예외 처리기가 포함될 수 있습니다.

동기화된 범위

범위가 동기화되거나 동기화되지 않도록 지정할 수 있습니다. 범위를 동기화하면 범위 내에서 액세스하는 공유 데이터가 오케스트레이션에서 하나 이상의 병렬 작업에 의해 기록되지 않으며 다른 작업에서 데이터를 읽는 동안에도 기록되지 않도록 합니다.

원자성 트랜잭션 범위는 항상 동기화됩니다. 동기화된 범위 내의 모든 작업은 예외 처리기의 모든 작업과 마찬가지로 동기화된 것으로 간주됩니다. 트랜잭션 범위에 대한 보정 처리기의 작업은 동기화되지 않습니다.

주의

프로세스를 신중하게 디자인하지 않으면 교착 상태가 계속 발생할 수 있습니다. 예를 들어 오케스트레이션에서 병렬의 두 분기 A는 동일한 메시지에 액세스합니다. 하나는 메시지를 보내고 다른 하나는 메시지를 수신하므로 둘 다 동기화된 범위가 있어야 합니다. 두 번째 오케스트레이션은 메시지를 수신하고 다시 보냅니다. 오케스트레이션 A의 송신 분기는 수신 분기 전에 잠금을 받게 되며 교착 상태가 발생할 수 있습니다.

스코프 중첩

범위 셰이프를 다른 범위 셰이프 내에 중첩할 수 있습니다. 중첩 범위에 대한 규칙은 다음과 같습니다.

  • 트랜잭션 및/또는 동기화된 범위는 동기화된 범위의 예외 처리기를 포함하여 동기화된 범위 내에 중첩될 수 없습니다.

  • 원자성 트랜잭션 범위는 내부에 중첩된 다른 트랜잭션 범위를 가질 수 없습니다.

  • 트랜잭션 범위는 비트랜잭션 범위 또는 오케스트레이션 내에 중첩될 수 없습니다.

  • 범위를 최대 21 단계까지 중첩할 수 있습니다.

  • 호출 오케스트레이션 셰이프는 범위 내에 포함될 수 있지만 호출된 오케스트레이션은 다른 중첩 트랜잭션과 동일하게 처리되며 동일한 규칙이 적용됩니다.

  • Start Orchestration 도형은 범위 내에 포함할 수 있습니다. 중첩 제한은 이미 시작된 오케스트레이션에 적용되지 않습니다.

범위 변수

범위 수준에서 메시지 및 상관 관계 집합과 같은 변수를 선언할 수 있습니다. 그러나 오케스트레이션 변수와 범위 변수에 대해 동일한 이름을 사용할 수는 없습니다. 이름 숨기기는 허용되지 않습니다.

또한 참조하십시오

트랜잭션 사용 및 예외 처리
원자성 트랜잭션