비즈니스 프로세스 관리 솔루션의 인터럽트 처리
이 섹션에서는 비즈니스 프로세스 관리 솔루션에서 사용되는 인터럽트 처리 메커니즘을 설명합니다. 인터럽트 메커니즘을 사용하면 주문이 업데이트되거나 취소된 경우 주문 처리를 중지할 수 있습니다.
인터럽트 처리
처리 단계를 구현하는 오케스트레이션은 프로세스의 다른 부분에서 인터럽트 요청을 테스트하는 오케스트레이션 CheckInterrupt를 호출합니다. CheckInterrupt 오케스트레이션은 수신 대기 셰이프로 구성됩니다. 수신 대기 셰이프의 한 분기는 현재 순서와 상관 관계 ID가 동일한 메시지를 확인합니다. 이러한 메시지가 있는 경우 CheckInterrupt 오케스트레이션은 승인 메시지를 보내고 Throw 셰이프를 실행합니다. Listen 셰이프의 분기는 왼쪽에서 오른쪽으로 실행되므로 지연이 오른쪽 분기에 나타납니다. 이 지연은 0입니다.
수신 대기 셰이프, 수신 분기 및 지연 분기의 조합을 사용하면 오케스트레이션이 메시지에 대해 검사 수 있습니다. 인터럽트 메시지가 있으면 왼쪽 분기가 실행됩니다. 메시지가 없으면 오른쪽 분기가 실행되고 호출 오케스트레이션으로 돌아갑니다. 인터럽트 메시지는 언제든지 전송할 수 있습니다. CheckInterrupt 오케스트레이션은 가끔만 실행되므로 대기 중인 인터럽트 메시지가 있을 수 있습니다.
OrderManager는 인터럽터 오케스트레이션을 호출하여 인터럽트 를 설정합니다. 인터럽터 오케스트레이션은 인터럽트 포트에 인터럽트 메시지를 보내고 응답을 기다립니다. 오케스트레이션은 바깥쪽 범위 셰이프의 Timeout 속성을 사용하여 회신을 받지 못하면 루프를 다시 시작합니다. 회신을 받기 전 범위 시간이 초과할 때까지 오케스트레이션에서 계속 인터럽트 메시지를 보냅니다. 시간 제한은 요청이 등록과 일치하지만 회신할 시간이 없었음을 나타냅니다. 회신이 있거나 인터럽트포트에 대한 구독이 없는 경우 루프가 종료됩니다.
OrderManager가 프로세스 단계에서 사용하는 요청-응답 완성 패턴은 인터럽트 처리의 중요한 부분입니다. OrderManager는 스테이지에서 응답(승인)을 기다리기 때문에 계속하기 전에 스테이지가 실행되기 시작했다는 것을 알고 있습니다. 따라서 단계가 시작 전에 인터럽트를 받을 수 없습니다. 또한 OrderManager 는 인터럽트 구독이 없는 경우 단계가 완료되었음을 알 수 있습니다.