如何在以编程方式将文件添加到liferay中的文档和媒体文件夹时向订阅者发送电子邮件通知

如何在以编程方式将文件添加到liferay中的文档和媒体文件夹时向订阅者发送电子邮件通知,liferay,liferay-7,Liferay,Liferay 7,我有不止一个拥有管理员角色的用户,他们订阅了一个公共文件夹,该文件夹存储某种图像和文档。当一个用户在文件夹中添加一些图像时,将向具有查看权限的订阅用户发送通知电子邮件。 我的问题从这里开始,当我通过门户上传图像时,电子邮件通知成功发送。但是,当我尝试使用以下代码保存图像时,电子邮件通知不会发送 ** ** 进一步解释:-此特定代码在调度程序内部触发,因此我将创建ServiceContext,如下所示:- long companyId = _portal.getDefaultCompanyId()

我有不止一个拥有管理员角色的用户,他们订阅了一个公共文件夹,该文件夹存储某种图像和文档。当一个用户在文件夹中添加一些图像时,将向具有查看权限的订阅用户发送通知电子邮件。 我的问题从这里开始,当我通过门户上传图像时,电子邮件通知成功发送。但是,当我尝试使用以下代码保存图像时,电子邮件通知不会发送

**

**

进一步解释:-此特定代码在调度程序内部触发,因此我将创建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);
然后在上述方法中传递服务上下文。 我发现请求和主题显示在com.liferay.portlet.documentlibrary.util.DLImpl.startWorkflowInstance(long,DLFileVersion,String,ServiceContext)中是空的,这导致blankEntryURL和com.liferay.portlet.documentlibrary.service.impl.DLAppHelperLocalServiceImpl.notifySubscribers(long、FileVersion、String、ServiceContext)方法无法执行


有人能帮忙吗?.如何在没有主题显示和请求对象的情况下获取文件entryURL?

您可以避免在调用
addFileEntry()之前添加空白
entryURL

但是,仅将方法
notifySubscribers()
运行到底是不够的。您需要添加另一行代码:

serviceContext.setCommand(Constants.ADD);

除非命令值正确,否则通知将被中止。

Hi Sébastien Le Marchand感谢您的回复。我只做了这件事。Hi@KratiyagGupta。如果您认为我的答案是正确的,请告诉我好吗?
serviceContext.setAttribute("entryURL", "anyNotEmptyURL");
serviceContext.setCommand(Constants.ADD);