Входящие содержимого рабочего процесса 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

Нам нужно сделать две вещи:

  1. Убедитесь, что путь к папке /jcr:content имеет значение в свойстве jcr: title. Он будет показан в столбце содержимого на странице входящих сообщений.

  2. Для ссылки на папку на странице входящих сообщений она должна иметь вид / 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/>
Другие вопросы по тегам