mynamespace.myproduct :Products.CMFCore.interfaces.IActionSucceededEvent가 실행되는 동안 상승을 수행하면 워크 플로에 대한 ZODB 트랜잭션이 중단됩니까?
<subscriber for="..interfaces.myinterface.IMyInterface
Products.CMFCore.interfaces.IActionSucceededEvent"
handler=".handlers.actionSucceeded"
/>
및 mynamespace.myproduct2 :
<subscriber for="..interfaces.myinterface.IMyInterface
Products.CMFCore.interfaces.IActionSucceededEvent"
handler=".handlers.actionSucceeded"
/>
(핸들러는 각 제품마다 동일한 이름을 사용하더라도 서로 다른 작업을 수행합니다. 이 예제)
사용자 지정 워크 플로가있는 사용자 지정 형식이 있습니다. doActionFor
를 사용하여 파이썬에서 워크 플로를 전환하고 IActionSucceededEvent
가 실행될 때 여러 가지 작업을 수행 할 것입니다.
내 질문 : 오류가 발생하면 .handlers.actionSucceeded
중 하나에 대한 예외를 발생 시키면 doActionFor
호출을 되돌릴 수 있습니까? 그렇지 않다면 IActionWillBeInvokedEvent
를 사용하면 목표를 달성 할 수 있습니까? 동일한 ..interfaces.myinterface.IMyInterface
인터페이스에 대해 Products.CMFCore.interfaces.IActionSucceededEvent
을 사용하는 두 가지 제품에 대한 문제가 있습니까?
디버그 로깅에 대한 흥미, 내가 년후 : 그래서 당신의 가장 좋은 방법은 당신이 용납하고 가입자, log the exception에 그 예외를 포착하고 있으므로 트랜잭션이 여전히 최선을 다하고됩니다에 이동하려는 어떤 오류를 발견하는 것입니다 트랜잭션 경계를 인식하지 못합니다. 나는 이벤트 핸들러에서'raise '를 호출하는 testet을 호출하고 실제로 트랜잭션이 중단되었지만, 나는 정말로 hackish하고 잘못된 것을하고있는 것이 두려웠다. : / –