2015-01-16 105 views
1

我正在研究一個實現操作的Nuxeo插件。所以我使用@Operation,@OperationMethod@Context註釋。插件的目的是獲得LiveEdit鏈接,問題是我無法獲取構建nxedit:URL所需的conversationId。 Nuxeo源代碼使用 Manager.instance().getCurrentConversationId() 但我無法在我的插件中獲取管理器實例。並且通過@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)。然後對話Id應該可用:

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

是的,我做了。這兩種方法都需要一個'conversationId'作爲字符串參數,而我的問題是我無法獲得它。他們使用'conversationId =(String)context.get(「conversationId」);'但似乎在插件上下文中沒有這樣的關鍵字。 – user3523475

+0

您仍然可以傳遞null。但是,如果在上述操作之一後執行鏈中的操作,那麼接縫上下文應該已經初始化。 –

+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

相關問題