如何在Liferay 6中创建默认文档类型和元数据集?

时间:2013-05-24 12:06:24

标签: java liferay liferay-6

我想在 Liferay 6.1.20 EE 中创建我自己的默认文档类型和元数据集。

目前,Liferay实现创建了自己的默认文档类型和元数据集,例如合同,在线培训等,在AddDefaultDocumentLibraryStructuresAction类中创建,该类是从AddDefaultDataAction类调用的,这是一个启动操作。

Liferay Forum post中所述,如果我们要关闭此创建过程,我们需要在AddDefaultDataAction中注释相关行,或者我们可以在其中添加自定义AddDefaultDataAction application.startup.events 覆盖默认值。

可以使用 hook 来覆盖application.startup.events吗?如果是,我们如何覆盖AddDefaultDataAction类,因为它是 portal-impl.jar 类,我们无法从钩子访问它?如果没有,是否应该使用 ext插件来达到此目的?或者是否有更直接的方式来实现我自己的默认文档类型和元数据集?

1 个答案:

答案 0 :(得分:6)

如果您查看portal.properties中的默认配置,则会显示

#
# Application startup event that runs once for every web site instance of
# the portal that initializes.
#
application.startup.events=com.liferay.portal.events.AddDefaultDataAction,\
     com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

因此,只需在com.liferay.portal.events.AddDefaultDataAction中说明其他内容,即可从此列表中删除默认portal-ext.properties

application.startup.events=com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

如果要对所有新安装执行此操作,则必须在第一次启动实例之前添加此更改。或者你应该编写一个开箱即用的ext插件。你为什么需要分机?一个钩子只能添加另一个StartupAction,不能改变现有的。 ext 可以更改或删除现有的启动操作或覆盖其代码。

在ext插件中,您还可以实现

application.startup.events=com.mariaioannidou.MyCustomAddDefaultDataAction,\
     com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

并实现MyCustomAddDefaultDataAction做与默认操作相同的操作,无法创建文档类型。

另一方面,钩子可以找到您不想要的所有标准文档类型,检查它们是否确实未使用,然后删除它们。如您所见,AddDefaultDataAction不仅仅是添加文档类型,因此您可能希望操作中的其余代码能够运行。

另一个替代方法是编写一个实际更改com.liferay.portal.events.AddDefaultDataAction实现的ext插件,但是你再次使用ext - 如果你在第一次启动之前没有在每个安装中部署它,你将会无论如何最终得到默认内容,你可能想要一些代码自动删除它。

我的个人建议是使用钩子,删除不需要的文档类型(如果它们未被使用) - 原因是:

  1. 易于部署(可以进行热部署),
  2. 如果您在第一次运行之前未部署插件,则最终还是需要删除不需要的文档类型,
  3. 可维护性:维护钩子比使用ext插件更容易。