Oracle BPEL에서 보상의 목적은 비즈니스 롤백입니다. 그러나 catch는 거의 유사한 작업을 수행 할 수 있습니다 (완료 역순의 롤백 제외). 왜 우리에게 여전히 보상이 필요한지 이해가 안 되나요?
오류 처리기에서 수동으로 코딩 된 보상은 작성이 불가능하지는 않지만 매우 어렵고 많은 중복 코드를 포함하는 시나리오가 많이 있습니다.
다음과 같은 프로세스가 있다고 상상해보십시오.
<flow>
<sequence>
<invoke name="I1"/>
<invoke name="I2"/>
</sequence>
<sequence>
<invoke name="I3"/>
<invoke name="I4"/>
</sequence>
</flow>
보상 처리를 수행하려면 모든 호출에 보상 핸들러를 추가하기 만하면됩니다.
오류 처리기를 사용하면 어떤 활동이 이미 실행되었는지 확인해야합니다. I4가 결함을 던진다 고 상상해보십시오. I3가 완료되었으며 보상이 필요하다는 것을 알고 있습니다. 그러나 I1 또는 I2가 아직 시작되었는지 또는 완료되었는지는 알 수 없습니다. 격리 된 활동 등에 대해 설정해야하는 변수로 플래그를 조작해야합니다. 또한 I2, I3 및 I4에 대한 오류 처리기에는 I1에 대한 보상 논리가 포함되어야합니다. 보상 핸들러를 사용하는 것은 그들을 재발 명하는 것보다 훨씬 깨끗하고 쉽습니다. :)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다