Alfresco开发文档(转载)

转载自 http://chooli.iteye.com/blog/636689

这里简单地对Alfresco项目进行一下介绍吧,很多人可能对于Alfresco能做什么,对比别的开源产品,有什么特点可能不是很了解。 

产品的定位 

  • Alfresco是面向企业级应用的内容管理系统,它的基础是一个Document Management,为用户提供了面向企业文档管理的一系列软件工具,用户可以通过Alfresco对文档进行存储、共享、版本控制、工作流程处理、讨论等操作;用国内通俗的话来说,是一个OA方面的产品;
  • 但Alfresco的应用范围决不仅仅是一个文档管理工具,随着Alfresco的社区开发人员的不断努力,Alfresco在文档管理的基础上,扩展出了WCM即网站内容管理功能;Alfresco WCM支持分布式发布,由于使用了Spring框架开发,web开发可以直接在Alfresco WCM里使用Spring框架的好处,如定义spring bean,或直接重用spring开发的bean;
  • 因为Alfresco支持许多接口,如REST, Web services, CIFS/WebDAV, JCR, JavaScript API, Freemaker API等,开发者可以在Alfresco基础上开发出各种Web应用
  • Alfresco Share是一个协同办公的扩展功能,可以为团队工作提供一个集合了博客、wiki、日历、文档共享、相册、讨论等功能的协同知识管理平台;
  • Alfrseco Surf是一个新的应用,是基于Spring Surf的扩展,主要是用于Web开发的组合视图框架(包括template, page, component 等),据说可以让Spring的开发者使用script来轻易而举地开发Web应用程序的界面;



可以看到,Alfresco与Spring的关系十分紧密,对于开发人员特别是熟悉Spring框架的开发者,Alfresco可以让你更容易开发各种企业级的web应用,不过即使不了解Spring,由于Alfresco支持了许多标准接口,开发者也可以根据自己的技术来做Web开发。 

为什么选择Alfresco 

现在,大概没有Web项目开发是完全从头开始,而不去使用框架的,当然,如果自己的团队确实是存在许多技术牛人,或者时间和金钱充裕,使用自己的框架开发也是可以的。不过,考虑到需要不断扩展功能,并善加利用第三方的资源,那么,一个广泛被接受的框架就是必然的选择。 

对于Java的开发者,我们可以找到一大堆的web开源开发框架,看一看以下的内容就知道 

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks 

由于web开发,特别是面向互联网用户的企业网站开发,日渐成为愈来愈开放的市场下的一个强劲需求,许多项目开发者希望有一个功能完善、界面友好、开发容易的CMS框架,这样,既可以不断地增加网页内容,又可以开发五花八门的功能,扩展更可以不受限制。 

Alfresco的基础功能是repository service,它可以为企业文档管理提供完善的功能,并照顾到企业多种用户角色的需求,与Window文件系统及文字处理软件word等进行无缝连接。你完全可以用它作为一个高级的文件共享服务器,并使用Alfresco中的工作流、讨论、权限管理等功能,为企业办公提供完善的公文管理服务。 

当你使用Alfresco的文档管理服务,你就有了向Alfresco WCM发布内容的能力了,Alfresco的接口可以方便地读取文档的内容,并通过模版来产生页面。由于Alfresco WCM支持标准的JSP/Servlet开发,你可以使用任何一种熟悉的技术来开发网站的页面。 

Alfresco与Spring的关系十分紧密,后者是目前J2EE开发中使用最广泛、功能最完善的框架之一,这就意味着可以直接调用spring开发的系统功能,如:重用一些spring bean;所以,使用Alfresco开发的网站与其他Java开发的系统进行整合是很容易做到的事

要使用Alfresco做开发,首先了解一下Alfresco的整个系统架构,在此之前,最好了解一下Java开发的基本知识和Spring框架。当然,你不必是这方面的高手,只要了解一下就行,以免这里介绍的内容你理解不了。

B/S结构

在安装了Alfresco后,Alfresco的运行结构是B/S式的,你可以使用Web浏览器打开应用界面并登陆进入系统里。整个系统如下图所示:


在Web应用程序服务器里(Web Application Server, 如:Tomecat, JBoss),Alfresco的应用程序(Alfresco  Applications)包括了文档管理(DM)、Web内容管理(WCM)以及记录管理(RM)。这些应用分别是面向不同的企业内容的管理服务,

  • 文档管理(DM) - 面向企业文档共享、公文流转、版本控制、讨论等的应用
  • Web内容管理(WCM) - 面向企业网站的建设、内容的采集及发布、Web应用程序开发等的应用
  • 记录管理(RM) - 面向企业的数据记录存储、查询、分析等的应用

所有的Alfresco应用程序则是基于Alfresco Repository服务之上开发的,Alfresco Repository是一个核心程序。

Repository是用于存储各种数据资源的服务,它的作用是把实际的各种不同格式的数据转化成数据库或文件系统可以存储的数据,是一种基于数据库和文件系统之上的应用。

Alfresco Repository提供了一系列可以通过不同接口调用的数据存储服务,如:内容存储、查询、版本控制、内容转换/复制/编辑等,这些基础的服务可以为不同的应用系统提供支持。Alfresco Repository的设计目标是为了能够针对不同的内容管理方案提供可以重用的组件,因此,了解Repository的基本概念以及它的开发结构、可伸缩性和灵活性,对于正确和高效地构建内容管理系统是十分重要的。

Alfresco Repository的组件及服务

Alfresco Repository是基于Java开源框架Spring开发的,并与Spring整合得很深,你可以使用Spring的配置知识来管理Alfresco Repository的运行。


在设计上,Alfresco Repository是由组件(component)和服务(service)组成的。组件的作用是把内容的对象转换成独立而不重复的功能对象,并可以根据需要方便的添加和删除;而服务的作用是可以为不同的应用提供调用接口,并实施安全管理;

服务与组件的相互耦合,是利用了Spring的框架功能,反向控制及面向切面的服务。如果你懂得如何配置Spring bean的话,你就可以容易地对Alfresco Repository的各种组件或服务进行灵活配置了。实际上,你可以在Spring的框架下为Alfresco Repository添加和修改组件及服务,这意味着你可以根据自己的需要升级这个内核或做扩展。

不过,即使不懂得Spring或Alfresco Repository的组件概念,你也可以容易地通过Alfresco的各种接口使用内容管理服务。

三个基本服务

Alfresco Repository的任务是存储和访问内容,这个任务是靠以下三个基本服务提供的:

  • 节点服务(Node Service) - 节点为内容提供元数据metadata及结构structure。一个节点包括属性(如:作者)以及与其它节点的关系(如目录上下级或注释)
  • 内容服务(Content Service)- 内容就是信息数据的载体,例如:word文档、图片或XML数据。元数据及内容都可以根据内容模型的规则定义被结构化,例如:Alfresco的文档管理应用依赖于目录(folder)和文件(file)的模型规则
  • 搜索服务(Search Service)- 通过Lucene引擎对内容进行索引,并可以对元数据或内容进行不同方式的查询
 

一般情况下,Alfresco会把元数据存储在关系型数据库里,而内容本身则存储在文件系统中。这很好理解,数据库存储提供高效的查询、事务处理及管理功能,而文件系统则保存比较大的内容数据。这些功能的实现都得益于成熟而强大的开源项目Hibernate和Lucene。通过Hibernate的数据持久化框架,Alfresco的内容存储可以支持任何基于SQL查询的关系型数据库,并实现高速访问缓存和事务处理;而Lucene的使用则可以为Alfresco提供高效的数据查询索引,并可以使用XPath来查询内容。

参考资料 http://www.ecmkit.com/zh-hans

原文地址:https://www.cnblogs.com/chenying99/p/3070358.html