2015-01-16 13 views
1

작업을 구현하는 Nuxeo 플러그인을 만들고 있습니다. 그래서 @Operation, @OperationMethod@Context 주석을 사용하고 있습니다. 플러그인의 목적은 LiveEdit 링크를 얻는 것이고 문제는 nxedit : URL을 만드는 데 필요한 대화 ID를 얻을 수 없다는 것입니다. Nuxeo 소스 코드는 Manager.instance().getCurrentConversationId() 을 사용하지만 내 플러그인에서 Manager 인스턴스를 얻을 수 없습니다. 그리고 @Context를 통해 Manager 인스턴스를 삽입하는 것이 불가능 해 보이지만 null 값만 반환합니다. 미리 감사드립니다.nuxeo 플러그인에서 conversationId를 얻는 방법

답변

0

Seam.InitContextSeam.RunOperation 작업을 보셨습니까?

모두 org.nuxeo.ecm.automation.seam.operations.SeamOperationFilter.handleBeforeRun(OperationContext, String)org.nuxeo.ecm.automation.seam.operations.SeamOperationFilter.initializeSeamContext(OperationContext, String, CoreSession)을 호출합니다. 그러면 대화를 사용할 수 있습니다.

ConversationPropagation.instance().setConversationId(conversationId); 
Manager.instance().restoreConversation(); 
+0

네, 그랬습니다. 두 가지 방법 모두 String 매개 변수로'conversationId'가 필요합니다. 문제는 그것을 얻을 수 없다는 것입니다. 그들은'conversationId = (String) context.get ("conversationId");를 사용하지만 플러그인 컨텍스트에는 그런 키가없는 것 같습니다. – user3523475

+0

null을 계속 전달할 수 있습니다. 하지만 위 작업 중 하나를 수행 한 후 체인에서 작업을 실행하면 Seam 컨텍스트가 초기화되어 있어야합니다. –

+0

'Seam.InitContext' 작업을 호출하려고 할 때'나는 Seam 컨텍스트를 초기화 할 수 없습니다 : HttpServletRequest를 찾을 수 없습니다. '라는 메시지가 나타납니다. 나는 이것을 다음과 같이 호출한다 : \t \t'OperationContext operationContext = new OperationContext (session); \t \t operationContext.setInput (doc); \t \t OperationChain chain = new OperationChain ("chain"); \t \t chain.add ("Seam.InitContext"); \t \t AutomationService automationService = Framework.getService (AutomationService.class); \t \t automationService.run (operationContext, chain);' – user3523475