Я работаю над плагином Nuxeo, который реализует операцию. Поэтому я использую @Operation
, @OperationMethod
и @Context
аннотации. Цель плагина - получить ссылку LiveEdit, и проблема в том, что я не могу получить queryId, который необходим для создания URL-адреса nxedit:. Исходный код Nuxeo использует Manager.instance().getCurrentConversationId()
, но я не могу получить экземпляр диспетчера в моем плагине. И, кажется, невозможно добавить экземпляр диспетчера через @Context, он возвращает только нулевое значение. Спасибо заранее.Как получить talkId в плагине nuxeo
1
A
ответ
0
Вы посмотрели Seam.InitContext
и Seam.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();
Да, я сделал. Оба метода требуют параметра 'talkId' как String, и моя проблема заключается в том, что я не могу его получить. Они используют 'talkId = (String) context.get (" talkId ") ;, но похоже, что такого ключа в контексте плагина нет. – user3523475
Вы можете передать null. Но если вы выполняете свою операцию в цепочке после одной из вышеперечисленных операций, то контекст шва должен быть инициализирован. –
Когда я пытаюсь вызвать операцию 'Seam.InitContext', я получаю' Can not init Seam context: не найдено HttpServletRequest'. Я называю это следующим образом: \t \t 'OperationContext operationContext = new OperationContext (session); \t \t operationContext.setInput (doc); \t \t OperationChain chain = new OperationChain («цепочка»); \t \t chain.add ("Seam.InitContext"); \t \t AutomationService automationService = Framework.getService (AutomationService.class); \t \t automationService.run (operationContext, chain); ' – user3523475