2012-03-27 5 views
3

게시 또는 해결 중에 어떤 이유로 오류가 발생하여 try/catch 블록을 사용하여 건너 뛸 수 있도록 일부 기능을 구현하고 싶습니다. 뭔가를 건너 뛴 것을 사용자에게 알리고 싶습니다.SDL Tridion 2011 게시 중 "경고"상태 제기하기

SDL Tridion 2011 게시 큐는 상태별로 필터링 할 수 있습니다. 이러한 상태 중 하나는 "경고"입니다. 템플릿 코드 또는 사용자 정의 해결 프로그램에서 API를 사용하여 게시 트랜잭션을 "경고"상태로 만들 수 있습니까?

+0

Chris. PublishTransaction 클래스에는 설정 가능한 상태 속성이 있습니다. 그걸 사용해 보셨나요? 결과는 무엇입니까? –

+0

템플릿에서이 작업을 시도하지 않았습니다. 현재 해결해야 할 과제는 리졸버 (Resolver)에서 시도하는 것이며, 거기에서 PublishTransaction을 사용할 수 있다고 생각하지 않습니다. –

답변

1

나는 이것이 가능하지 않다고 생각하지만, 위의 답변을 통해 대안을 찾을 수 있습니다.

+1

불행히도 나는 네가 옳다고 생각한다. –

4

게시하는 동안 경고가 필요하면 (게시 트랜잭션 상태 경고가 표시됨) PublishInstruction.MaximumNumberOfRenderFailures을 0보다 큰 값으로 설정해야합니다. 렌더링 오류 수가 최대를 지정하면 게시 상태가 경고가됩니다.

렌더링 외부에서 오류가 발생하면 명령이 실패로 표시됩니다.

한편 '경고'와 함께 GUI (MessageCenter)의 메시지를 잘못 표시하려는 경우보다 복잡한 아키텍처가 필요합니다. 프랭크는 잠시 동안이 일을했습니다. 아이디어 (IIRC)는 GUI 조각을 가지고 있습니다. 해당 사용자의 게시 작업에 대한 상태를 반환하는 서비스를 폴링하는 iframe 이벤트 시스템은 PublishInstruction을 모니터링하여 이러한 상태를 생성하고 서비스가 폴링 할 어떤 종류의 저장소 (파일, 데이터베이스, 메모리)에 이벤트 시스템을 씁니다.

+0

그래서 어떻게 잡을 때 오류가 발생합니까? 이 작업은 템플릿 코드에서만 수행 할 수 있습니까? 이 문제가 맞춤 리졸버에서 해결 될 수 있는지 여부에 대한 의견이 있으십니까? –

+0

템플릿 코드에서 전혀 잡을 수 없습니다. 그것이 던져지면 1 렌더링 실패로 계산됩니다. 그러나 고객 리졸버 (Resolver)에서 예외를 catch하는 것은 어렵습니다. 템플릿 코드에 오류를 던지는 것을 '연기'해야합니다. 템플릿 코드가 예외를 throw해야한다는 것을 알려주는 메커니즘이 필요합니다. 어쩌면 구성 요소 또는 페이지에서 AppData를 사용할 수 있습니까? 예 : 사용자 지정 리졸버는 예외를 catch하고 AppData를 작성한 다음 계속 진행하고 템플릿 코드를 실행하고 첫 번째 작업은 해당 플래그를 찾는 AppData를 읽는 것입니다. 발견되면 템플릿 코드에서 예외를 throw합니다. –

+0

감사합니다. @Mihai - 유감스럽게도, 내 결의자와 함께 작동하지 않을 것입니다. 레졸 버에서 항목이 실패 할 경우 패키지에 추가되지 않으므로 렌더링되지 않습니다 (이러한 템플릿은 실행되지 않습니다). 게시자 큐에있는 사용자에게 알리는 동안 사용자 지정 리졸버가 정상적으로 실패 할 수는 없습니다. –

관련 문제