Как получить идентификатор разговора в плагине nuxeo

Я работаю над плагином Nuxeo, который реализует операцию. Поэтому я использую аннотации @Operation, @OperationMethod и @Context. Целью плагина является получение ссылки LiveEdit, а проблема в том, что я не могу получить идентификатор разговора, который необходим для создания URL-адреса nxedit:. Исходный код Nuxeo использует Manager.instance().getCurrentConversationId(), но я также не могу получить экземпляр Manager в своем плагине. И кажется невозможным внедрить экземпляр Manager через @Context, он возвращает просто нулевое значение. Заранее спасибо.


person chernish2    schedule 16.01.2015    source источник


Ответы (1)


Вы смотрели операции 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). Затем должен быть доступен разговорId:

ConversationPropagation.instance().setConversationId(conversationId);
Manager.instance().restoreConversation();
person Julien Carsique    schedule 19.01.2015
comment
Да. Для обоих методов требуется параметр conversationId as String, и моя проблема в том, что я не могу его получить. Они используют conversationId = (String) context.get("conversationId");, но кажется, что в контексте плагина такого ключа нет. - person chernish2; 19.01.2015
comment
Вы все еще можете передать null. Но если вы запускаете свою операцию в цепочке после одной из вышеперечисленных операций, то контекст шва должен был быть инициализирован. - person Julien Carsique; 19.01.2015
comment
Когда я пытаюсь вызвать операцию Seam.InitContext, я получаю Can not init Seam context: no HttpServletRequest was found. Я называю это так: OperationContext operationContext = new OperationContext(session); operationContext.setInput(doc); OperationChain chain = new OperationChain("chain"); chain.add("Seam.InitContext"); AutomationService automationService = Framework.getService(AutomationService.class); automationService.run(operationContext, chain); - person chernish2; 19.01.2015