Входящие содержимого рабочего процесса CQ5 | Утвердить содержимое папки неправильно URL
Мы создали рабочий процесс для отправки письма с подтверждением утверждающему. Полезная нагрузка: jcr: содержимое папки или PDF.
После кодирования поведение относится к:
PDF: он генерирует правильный URL-адрес как http: ///damadmin.html#/content/ab/cd/abc.pdf
Папка: она генерирует неправильный URL-адрес как http: ///damadmin.html#/content/folder-name/jcr: content
Итак, для папки мы обновили код, чтобы изменить полезную нагрузку как путь к папке, а не путь к папке / jcr: content
для этого мы использовали,
WorkflowData wfData = wfSession.newWorkflowData("JCR_PATH", folder_node_path);
wfSession.updateWorkflowData(workItem.getWorkflow(), wfData);
После изменения кода
Когда пользователь изменяет любое содержимое дамбы, например, в формате PDF, URL-адрес корректен как http: ///damadmin.html#/
но когда пользователь изменяет свойства папки, письмо, отправленное утверждающему, имеет неправильный URL-адрес, например http: ///
означает, что /damadmin.html# отсутствует.
Нам нужно, чтобы правильная ссылка была добавлена как для PDF, так и для папки. Заранее спасибо.
1 ответ
Проблема решена.
Я использую CQ 5.5.
Делюсь своим опытом
Нам не нужно менять полезную нагрузку. Полезная нагрузка может оставаться как jcr:content
Нам нужно сделать две вещи:
Убедитесь, что путь к папке /jcr:content имеет значение в свойстве jcr: title. Он будет показан в столбце содержимого на странице входящих сообщений.
Для ссылки на папку на странице входящих сообщений она должна иметь вид / content //jcr:content. Проблема в том, что /damadmin.html# не добавляется перед URL.
Эта проблема не подходит ни для какого Актива или Страницы.
Решение:
Вам нужно добавить следующий код в /libs/cq/workflow/components/inbox/list/json.jsp
A => Добавить приватный метод
private String handleDamPathForFolder(Logger log, String payloadUrl, Session session, WorkItem wi)
{
try
{
if(isFolderNode(session, wi))
{
return ("/damadmin.html#"+payloadUrl);
}
}catch (Exception e)
{
log.error("Unable to handle path creation for work item: " + wi.getId(), e);
}
return payloadUrl;
}
Мы должны написать метод isFolderNode, который будет возвращать true, если узел является папкой.
В => Заменить
JSONWriterUtil.write(writer, "payload", pathBuilder.getPath(wi),JSONWriterUtil.WriteMode.BOTH, xss);
по следующим
JSONWriterUtil.write(writer,"payload",handleDamPathForFolder(log,pathBuilder.getPath(wi), session, wi), JSONWriterUtil.WriteMode.BOTH, xss);
<br/>