Входящие сообщения рабочего процесса 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, так и для папки. Заранее спасибо.


person GaganB    schedule 06.04.2015    source источник


Ответы (1)


Проблема решена.
Я использую CQ 5.5.

Делюсь своим опытом.

Нам не нужно менять полезную нагрузку. Полезная нагрузка может оставаться в виде jcr:content

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

  1. Убедитесь, что folder-path/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, если узел является папкой.



B=>Заменить

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/>
person GaganB    schedule 13.04.2015