在过去的两年里,我一直在使用Liferay,但是我从来不需要任何广泛的文档管理。
现在我有了一个portlet,用户可以上传文档(MS office OLE2文档、ODS文档、PDF等)。我必须用所有可用的元数据来保存它们。
我知道如果不使用Liferay,我可能会在Apache中使用Apache (UpdateRichDocuments和ExtractingRequestHandler),或者在引擎盖下使用Apache (org.apache.Jackrabbit.提取器.*)。
问题是,如果我看一下Liferay的主干,有一些关键的类:
Hooks (JCRHook, FileSystemHook, CMISHook, s3Hook)是直接从DLLocalServiceImpl内部雇用的
另一种选择是使用DLAppLocalServiceImpl,它使用DLRepositoryLocalServiceImpl,文件也通过钩子持久化到存储库中,但是还有很多额外的工作要做。
1. I think I'd have to avoid using DL services and JCR hook and access Jackrabbit directly... But I would loose the compatibility and possibility migrate my repository etc.
能请任何人在这个问题上合作吗?谢谢
发布于 2011-03-21 14:18:51
我认为,这两个服务DLLocalServiceImpl和DLAppLocalServiceImpl都很重要,而且将来也是如此。前者用于直接访问存储库。注意,当通过此服务添加文件时,需要将相应的DlFileEntry持久化到数据库中,而不是引用addFile(.,fileEntryId,.)。
后一种服务是为您做额外的事情,主要是资产管理和工作流。
关于您的用例,我将避免使用文档库,因为没有元数据可以进入JCR存储库。实际上,只有可以存储的元数据/自定义属性才是Liferay的custom properties AKA Expando特性。
对于您来说,最好的方法是实现自己的Jack兔子钩子,将数据存储到存储库中,并让Liferay文档库使用该存储库。
发布于 2011-02-28 03:55:13
SOLR用于索引,Jack兔子用于文档存储。在代码中管理Liferay文档库相当容易,只需查看DL*LocalServiceUtil类,即DLFolderLocalServiceUtil和DLFileLocalServiceUtil。默认情况下,Liferay只是在硬盘上创建一个匹配的文件夹/文件结构(更改了名称),因此如果您需要的话,只需要编写代码或使用Jack兔子,因为Liferay允许通过控制面板和各种portlet从盒子中向上/下载和查看。
我没有在Liferay中使用JackRabbit,但是一旦配置完毕,一切都应该在封面下进行管理,您不需要在前端担心它。
当您说“使用所有可用的元数据”时,我不确定保留了什么,但是除了重命名文件以便于跟踪之外,不应该进行任何其他更改。通过上传每种类型的文件并检查LIFERAY/data/document_library目录和子目录中的条目,测试应该是快速和容易的。同样,如果使用杰克-兔子,这将是不同的。
发布于 2011-03-17 06:50:45
认为埃德加是对的。如果您通过http://svn.liferay.com/repos/public/portal/trunk/portal-service/src/com/liferay/documentlibrary/service/DLLocalService.java (以来宾身份登录而不使用密码)检查当前主干,您将无法再找到类DLFolderLocalServiceUtil。我们也在使用现有的DLFolderLocalServiceUtil类。谢谢你的提醒。我们将重构我们的代码,所以当6.1出现时,我们仍然可以使用DocumentLibrary服务。
https://stackoverflow.com/questions/5136564
复制相似问题