Как отправить уведомление по электронной почте подписчикам при программном добавлении файла в папку документов и мультимедиа в liferay - PullRequest
0 голосов
/ 11 июня 2018

У меня есть несколько пользователей с ролями администратора, которые подписаны на общую папку, в которой хранятся какие-то изображения и документы.Когда один пользователь добавляет несколько изображений в папку, подписанное электронное письмо отправляется подписанному пользователю, у которого есть разрешение на просмотр.Моя проблема начинается отсюда, когда я загружаю изображения через портал, уведомление по электронной почте отправляется успешно.Но когда я пытаюсь сохранить изображение, используя следующий код, уведомление по электронной почте не отправляется.

**

_dlAppLocalService.addFileEntry(userId, companyGroup.getGroupId(), folder.getFolderId(), fileName,
ContentTypes.TEXT_CSV_UTF8, fileContent.getBytes(), serviceContext);

**

Для дальнейшего объяснения: - Этоконкретный код запускается внутри Schedular, поэтому я создаю ServiceContext следующим образом: -

long companyId = _portal.getDefaultCompanyId();

Company company = _companyLocalService.getCompany(companyId);
Group companyGroup = _groupLocalService.getCompanyGroup(companyId);
User defaultUser = company.getDefaultUser();

long userId = defaultUser.getUserId();
ServiceContext serviceContext = new ServiceContext();
serviceContext.setCompanyId(companyId);
serviceContext.setUserId(userId);

и затем передаю контекст службы внутри вышеуказанного метода.Я обнаружил, что request и themeDisplay равны нулю в com.liferay.portlet.documentlibrary.util.DLImpl.startWorkflowInstance (long, DLFileVersion, String, ServiceContext) , что приводит к blankEntryURL и com.liferay.portlet.documentlibrary.service.impl.DLAppHelperLocalServiceImpl.notifySubscribeers (long, FileVersion, String, ServiceContext ) не удается выполнить.

Может кто-нибудь помочь ?.Как я могу получить файл entryURL, не имея объектов themeDisplay и запроса?

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете избежать пустого entryURL добавления строки ниже перед вызовом к addFileEntry():

serviceContext.setAttribute("entryURL", "anyNotEmptyURL");

Но этого недостаточно для выполнения метода notifySubscribers() до конца.Вам необходимо добавить еще одну строку кода:

serviceContext.setCommand(Constants.ADD);

Если не указано правильное значение команды, уведомление будет прервано.

...