- A+
目录
什么是企业内容管理
根据Association for Information and Image Management (AIIM)–企业内容管理方面的专业研究机构,非赢利性组织–的定义,企业内容管理是根据组织流程,捕获,管理,存储,保护和发布企业内容及文档的一组策略,方法和工具的集合。企业内容管理系统使用包括一个数据仓库,一组应用程序和相应的应用程序开发平台来控制,存取和发布内容。内容可以是为任何非结构化信息,例如文档,网页,图片,视频,记录或简单文件。(非结构化信息指的是没有数据模型的计算机信息,区别于按一定逻辑结构存储于数据库表或被语义标记的文件中的数据)。企业内容管理系统使用跟数据库相似的方法来管理内容及内容生命周期。
企业内容管理系统管理实际的二进制内容,内容的元数据以及查找内容的索引,其中元数据包括内容的位置,在数据仓库中的分类,上下文关系,与其它内容的关联等信息。更为重要的是,内容管理系统将管理内容的流程和生命周期并保证其正确性。内容管理系统管理内容工作流,包括捕获,存储和分发内容,同时伴随内容生命周期管理,如内容保存的时间长短,保存后将对内容进行如何处理。
根据 Forrester 研究组织的报告,企业内容管理包括五大应用领域:文档管理,网页内容管理,记录管理,图片管理和数字资产管理,它们有相同的存储,组织,存取和处理流程,不同之处在于组织的关注目标和最终用户。
- 文档管理关注于对办公文档文件的获取,编辑和分类处理。
- 网页内容管理关注于对公司网站,页面的组织以及网页内容发布流程程管理。
- 记录管理是根据相应的法律法规,对重要文档和记录进行长期归档或配置管理。
- 图像管理可以对文档或者记录进行管理,主要是对扫描图片进行操作,涉及到扫描流程管理,图片质量控制,元数据抓取以及图片存储。
- 数字资产管理主要面向创意和营销部门,包括对照片,视频,插图的捕获,创作和编辑。
- 通过使用企业内容管理系统来进行内容管理可以有效减少人工操作所产生的损耗,增强信息的准确性,更高效的进行信息检索,查找重要的文件及信息。以下列出企业内容管理系统的部分优点:
- 减少纸质管理以及人工操作导致的疏忽
- 减少纸张的消耗
- 降低文件丢失的可能性
- 高效查找信息
- 增进用户在线体验
- 以网络在线服务取代传统的通过纸张,胶卷,幻灯片等方式访问信息
- 提高文档监控能力并制定致力于提高面向文档的处理流程
- 简化耗时严重的业务流程
- 增强访问和修改文档的安全性
- 增进追踪和监控能力,快速明确系统瓶颈,达到更有效的系统改进
Alfresco公司简介
Alfresco由John Newton,Documentum创始人之一,John Powell,BusinessObjects前任COO,创立于2005年。投资公司包括AccelPartners, Mayfield Fund 和SAP Ventures。
Alfresco是开源领域的企业内容管理(ECM)领导厂商。它致力于使用开源软件创建一个稳定的企业级平台。
开源模式允许Alfresco利用开源社区的最佳开源技术和贡献者,用较小的成本开发出高质量的软件产品。
Alfresco的目标不仅仅是提供一个开源的解决方案,更是要在特性,功能和效益上超过传统的商业ECM提供商,从而使最终用户获益。
为何选用Alfresco
Alfresco被设计为解决最普遍和最困难的内容管理问题。Alfresco极其适合于开发企业或部门的门户,遵从法律法规协议的应用,以及取代难以控制的共享文件存储设备。Alfresco的架构基于最现代的标准,这使得你可以使用标准的工具去定制你的应用,或根据需求增加新的功能模块。Alfresco的模块化设计和实现方式提供了强大的性能和可扩展性。
使用简单
Alfresco采用以用户为中心的设计,封装了一个易于使用的门户组件来组织和管理内容。Alfresco集成了文件和内容管理标准使得创作内容简单得如同“另存为…”
基于内容创造者的设计
我们有丰富的经验去实现伸缩性极强的内容管理系统。我们的计算机科学家和工程师创造了90年代最先进的Java内容管理系统,现在,软件开源运动将会帮助他们实现梦想,让内容管理成为为大众服务的工具。
开源,开放标准
Alfresco使用开源代码和开放标准,这意味着你可以免费使用它。开放标准意味着你不需要绑定在某几家供应商,包括Alfresco上。我们的目标是使一切透明和开放。
比传统的内容仓库更快
基于最初的客户使用经验和第一代网络内容管理应用程序,我们设计出了全新的架构,使用面向方面的编程技术,我们极大的缩短了系统响应时间(编程术语),当你添加新的用户,系统处理速度将超过传统应用的10倍以上。
全面的内容管理能力和应用
通过开放标准的内容仓库,开放源代码,自由创建内容管理应用程序,对于软件开发商和企业程序员,Alfresco开发者网络将会快速成为他们最流利的内容管理应用开发平台。
极低的开发成本
开源降低了Alfresco的销售和营销成本,从而使Alfresco专注于产品开发,技术和质量,相较于非开源公司,提供成本更低,设计更优秀的解决方案
适应不断变化的需求
Alfresco分布式,面向方面的架构,使得你可以以即插即用的方式增加新的安全模块,存储选择,工作流引擎等,它可以全面的进行定制化。根据客户公司的时间安排,IT支持,业务需求,Alfresco可以提供不同的布署实施方案。
质量和经验
Alfresco提供了一种快速的,基于门户的开箱即用的应用程序,只需要数分钟的程序下载时间,你就可以从中获益。它的使用方式和“另存为”一样直观,在极短的时间内容创建者和最终用户即可实现合作。
Alfresco架构
尽管有很多方式去裁剪和部署Alfresco, 但是都必须遵循一个统一的模式,而最终实现一个完整的ECM解决方案,包括文档管理,网页内容管理,记录管理和数字资产管理,而合作和搜索功能将横跨所有的解决方案(如下图所示)。这些解决方案通常包括客户端和服务器端应用,在客户端为用户提供一个用户界面,服务器端则提供内容管理服务和存储。这是一种很常见的解决方案,多客户端访问一个共享服务器,每个客户端根据不同的应用环境进行相应的剪裁。
Alfresco 提供了两个主要的基于Web的客户端:Alfresco Explorer 和 Alfresco Share。Alfresco Explorer 是最原始一个超级用户客户端,通过它可以管理Alfresco应用服务器的所有功能。Alfresco Explorer使用高度定制化的Java Server Faces (JSF)技术实现,并被部署为Alfresco应用服务器的一个组件。
Alfresco Share是一个新的应用组件,关注于内容合作方面的应用,提供网页预测,标记,社会网络等功能来简化用户体验。Alfresco Share 本质上是一个网站的概念,用户在其中进行合作,提供产品内容,最终发布内容。 Alfresco Share 没有使用JSF,而是使用定制化的Spring Surf技术实现。Alfresco Share 可以脱离Alfresco应用服务器而独立部署,并通过Alfresco 网页内容管理解决方案来进行管理。接下来,Alfresco将会实现Alfresco Explorer的所有功能。
当然,Alfresco的应用并不仅仅可以通过网络客户端实现,为了推动用户使用,客户端可以部署为门户组件(使用JSR-168 portlet),移动平台(如苹果的iPhone),Microsoft Office ,以及桌面程序(例如使用Flex或.Net)。
客户经常忽视操作系统本身的文件存储设备。一种最常用的ECM解决方案是通过网络硬盘来共享文档。使用Alfresco收购的JLAN技术,Alfresco客户端可以视为一个本地的文件存储设备。JLAN是一种使用CIFS协议的JAVA服务器端实现,通过这项技术,用户可以像使用本地的普通文件存储设备一样使用Alfresco,不同之外仅仅在于是Alfresco应用服务器来管理和存储这些内容。
Alfresco应用服务器集成了一个内容仓库和其它增值服务来创建ECM解决方案。在最近几年来,几项标准定义了内容仓库的实现:
- CMIS(内容管理交互性服务)
- CR (Java 内容仓库 / JSR-170/286)
这些标准提供了内容仓库的规范,内容的定义,存储,检索,版本控制,权限管理。Alfresco 的内容仓库遵从这两个标准,提供了一个高度可靠,易于扩展,高效运行的应用。在Alfresco中,内容默认存储于关系数据库和文件系统内,通过实现标准的接口,锁定内容仓库没有任何其它风险。
尽管经历了漫长的努力来定义ECM核心和基础规范,内容仓库所能提供的功能和最终的ECM解决方案之间然后有巨大的差异,而Alfresco应用服务器正在内容仓库的基础上提供了如下几种服务:
1. 内容服务(例如,格式转换,标签,原数据捕获)
2. 管理服务(例如,流程,记录管理,更改集合)
3. 合作服务(例如,社会图,活动,维基)
客户端通过各种协议和Alfresco应用服务器及其服务进行交互。编程访问一般通过HTTP和SOAP协议,应用访问则可以通过CIFS,FTP,WebDAV,IMAP和Microsoft SharePoint协议进行访问。
Alfresco安装程序提供了一个完整的开箱即用的布署包,其中包括Alfresco应用服务器(嵌入Alfresco Explorer),布署在Apache Tomcat里的一个独立的Web安装包,以及一个勿须配置即可使用的MySQL。
Alfresco内容管理服务器
作为ECM应用服务器,最主要的任务就是提供一套完整的服务,用来构建ECM解决方案。某种意义上讲,应用服务器相当于一个黑盒用来存储和管理服务。如果关系型数据库一样,Alfresco应用服务器提供一套远程公共接口,供客户端调用和交互。(如下图所示)
对于应用服务器来说,远程公共接口是客户端唯一可见的部分。Alfresco提供了两种应用程序接口,远程应用接口允许编写程序来访问服务,而协议绑定则使用兼容协议的客户端来映射服务器端的服务。
应用服务器的内部被划分为多个层次,而位于底层的基础架构包括配置,认证,权限和事务管理,它们将会横跨所有的上层功能。
这些底层的基础架构被封闭在应用服务器内部,提供了跨平台的实现,例如事务管理功能和缓存机制。
Alfresco内容仓库在标准的基础上,实现了以上的基础架构,形成了内容,管理,协作等服务的基本组件。每个内容仓库或内容服务的功能被单独设计为有一个独立进程的接口和实现模块,模块问通过接口的基础架构进行联系。
你可以使用内容仓库和内容服务提供的服务接口实现应用服务器的扩展程序,将其部署到Alfresco的应用服务器上延伸或覆盖它原有的功能。
Alfresco 内容仓库
如前文所述,两大标准(CMIS和JCR)定义了内容仓库必须提供的基本服务(如图所示):
- 定义内容结构(建模)
- 创建,修改,删除内容,与原数据之间协作,内容之间协作
- 查询内容
- 内容访问控制(权限管理)
- 内容版本控制
- 内容展示
- 锁机制
- 事件管理
- 内容审计
- 导入/导出
- 多国语言化
- 规则/执行
Alfresco内容仓库提供了对以上所有服务的全面实现,我们可以通过Alfresco提供的应用程序接口,CMIS协议绑定和JSR-170 Java应用程序接口来引用这些服务。
Alfresco内容仓库的核心是一个存储引擎,负责存储和检索内容,原数据及内容间的相互关系。存储引擎在以下结构中运行:
- 结点–提供内容的原数据和结构。一个结点可以支持多个属性值,例如作者,与其它结点(如果文件夹和注释)间的联系。父结点和子结点间的关系则使用了特殊的处理方式。
- 内容–记录的内容本身,例如Word文档或一个XML片断。
- 定义在内容仓库里的内容模型,包括了结点的结构,相互关系,以及属性值的限制。
- 存储引擎使用了一个基于Apache Lucene的自定义查询引擎,支持以下查询功能:
- 源数据过滤
- 路径匹配
- 全文查询
- 以上功能的综合查询
查询引擎和存储引擎与事务管理和权限管理等基础服务联系起来,可以提供一致性的视图和权限访问。查询方式支持原生的Lucene查询,XPath查询,Alfresco FTS(全文查询),以及CMIS查询语言(嵌入在Alfresco FTS之内),如下图所示:
默认情况下,Alfresco将结点存储在关系型数据库中,同时将内容存储在文件系统里。使用数据库可以快速直接利用数据库本身的技术来提高功能和益处,例如事务支持,缩放和管理功能等。Alfresco使用了一个数据库抽象层与数据库进行交互,从而使存储引擎可以从复杂的SQL连接语句中独立出来,简化了数据库移植工作,使得Alfresco可以轻松应用于各种主流数据库实现。
内容管理服务则完全是建在存储和查询引擎之上的。通过这些引擎基础服务可以达到共享。用户和组的概念被引入到这些基础服务中,比如记录内容的作者,谁锁定了内容,谁有权限访问内容等。这些根据标准定义的服务实现已经全部在Alfresco内容仓库中被模块化。同时,有两个服务还值得专门提一下:
- 多国语言化–支持内容属性可以按地区存储多个不同的值并被索引,以及支持文档翻译
- 规则/执行–支持在文件夹中增加或更新内容来触发内容管理流程,就如同邮件规则一样。这在这客户端使用CIFS或FTP协议与服务器进行交互时会相当有用。
你可以捆绑和部署Alfresco的内容仓库本身,或者做为一个组件将其绑定到更大的应用环境中,例如Alfresco应用服务器平台。
Alfresco内容服务
Alfresco应用服务器不仅仅是一个内容的仓库,它还包括一组高附加值的扩展内容服务,主要分为以下几类:(如下图所示)
- 内容–高级内容管理功能
- 控制–对过程的封装
- 协作–将内容与社会网络集成
内容仓库提供了一套水平的管理服务功能,这些服务的目的是推供一些类似于积木式的基础模块,来满足各种不同的内容管理需求,包括文档管理,网站内容管理,记录管理等。这些服务都建立在内容仓库之上,使用模块化组件的形式,同时共享同样的基础架构。
很显然,Alfresco可以提供一套统一的综合性内容管理服务,但Alfresco并不推荐这么做。通常情况下ECM系统架构的成长是通过收购和合并其它一些独立的系统,甚至这些系统有它们自己的内容仓库,Alfresco却反其道而行之,通过使用一组独立的服务搭配来达到系统架构的扩展。
尽管表面上看来内容管理是一个分散的概念,但事实上一个完整的需求和ECM解决方案通常正是这些分散概念的集合。
总体上来看,高级内容服务包括以下几点:
- 生命周期–管理内容的不同阶段
- 格式转换–将内容从一种格式转换到另一种格式
- 原数据提取–同步文档和结点的原数据
- 标签–对用户随机生成的标签进行正式的分类
内容管理服务封闭了内容运行的流程,包括以下几个方面:
- 工作流–将一组连续的步骤组织到一起,通常会包括在不同员工间分配工作。
- 记录–文件计划,纪录类型,保留和存档的政策,分配,报告,达到DOD 5015.2标准认证
- 更改设置–安全修改内容的工作区
- 预览–在发布内容之前查看内容
- 部署–将内容从一个环境发布到别一个环境
协作服务将产品和发布内容整合到了社会网络当中:
- 社会图–直接或间接的以小组或团队的方式展示人际间的关系。
- 活动–使用Alfresco或其他协作工作,进行持续的人际间交互活动
- 维基–一种基于网络,易于创建和修改的页面
- 博客–一种日志用来定期维护评论,事件和包括文档和视频在内的其它材料。
- 讨论–有特定主题的交流谈话
Alfresco一直持续在新的版本中增加服务,当然,这种开箱即用的服务不可能完全满足所有需求,所以根据模块化的设计以及应用服务器提供的开放的编程接口,最终你总是可以定制化出适合自己的服务。
Alfresco支持协议
为了易于外部协作,简化使用,Alfresco支持多数基于文档管理的协议。这样你可以使用原有的客户端进行工作,以熟悉的方式来访问存储在内容仓库里的内容。事实上,很多使用者都不并知道他们正在使用Alfresco,而他们创建或使用的内容却都是通过Alfresco进行流程管理的。
所有的绑定协议将会暴露存储在Alfresco内容仓库的文档及结构(下图所示),这意味着客户端软件使用这些协议来访问内容仓库时可以进行导航,检查属性,查看内容等操作。大多数协议还支持权限更新,允许客户端工具文件夹结构,创建和更新内容,编写内容。某些协议更是强大到支持版本控制,查询,任务等功能。
从Alfresco内部看来,绑定协议可以与封闭了文档及结构的内容仓库服务进行交互,保证了所有客户一致性的视图,统一了所有客户端工具与Alfresco内容应用服务器的交互方法。
Alfresco的文件服务器子系统通过属性配置文件或JMX为所有协议提供了配置管理和生命周期管理。
以下是Alfresco支持的协议类型:
- CIFS(普通互联网文件系统)是一种将Alfresco映射成一个本地共享磁盘驱动的协议。任何可以读写磁盘驱动器内文件的客户端工具都可以对Alfresco进行读写,用户不需要了解Alfresco的情况下即可使用共享文件夹。Alfresco通过收购了一个基于Java的CIFS服务器来实现此协议。
- WebDAV(基于网络的分布式创作和版本控制)是对HTTP协议的一组扩展,允许用户在网络服务器上合作管理文档。它强化了创作文件的功能包括锁机制,原数据,版本控制。包括Microsoft Office,越来越多的内容创建工具都在支持WebDAV,同时已经有很多工具支持将WebDAV服务器挂载成一个网络磁盘。
- FTP(文件传输协议)是一个标准的网络协议,支持通过网络进行文件交换和执行。该协议尤其适合在Alfresco内容仓库中进行大批量文档导入导出工作。
- IMAP(互联网消息访问协议)是一个流行的允许远程访问邮件服务器上电子邮件的协议。Alfresco可以作为一个邮件服务器端,允许Micosoft Outlook, AppleMail和Thunderbird直接连接和访问Alfresco内容仓库里的文档内容。协议提供三种模式:
归档:允许使用简单的拖拽,复制剪切的方式从IMAP客户端上直接将电子邮件存储到Alfresco内容仓库。
虚拟化:IMAP客户端可以以电子邮件的方式导出Alfresco内容仓库里的内容,可以查看内容的原数据,点击电子邮件上的链接来触发某些动作。
集成:以上两种方式的集合。 - Microsoft SharePoint 协议支持将Alfresco设置为Sharepoint服务器,与Microsoft Office套件进行紧密协作,使得那些熟悉使用Microsof 任务管理的用户可以快速查看和使用Alfresco内容仓库中的文档,其中Microsoft SharePoint 的合作服务,例如Shared Workspace将会映射为Alfresco Share Site功能。
Alfresco 内容建模
Alfresco内容仓库提供了一个极其简易的方式来展示内容和相互间的关系,通过定义少量的可复用数据结构,来构建复杂的内容模型。同时它还支持在不同的读写性能需求情况下,在不同类型的物理存储引擎里建立内容仓库。
内容建模的核心是支持分层的节点。节点代表着任何你需要存储在仓库里的内容。每个节点有唯一标识符,同时可以包含任意多的属性值,属性值可以是任何数据类型,可以为单个或多个值。结点间通过关系结构组织在一起。父子关系是其中的一种特殊类型,它的子节点将依附于父节点,不能脱离父节点而单独存在。你可以自己创建节点间的其它关系,定义不同类型的节点的关系。
从逻辑上看,内容仓库被划分成多个存储空间,每个存储空间包括自己的结点结构。结点可以代表任意形式的内容,但在企业内容管理领域里,它一般被视为文件夹,文档,XML片段,展示类型,合作站点和用户(如图所示)。
Alfresco内容仓库提供了读,查询和维护节点等服务。事件由变更产生,从而触发流程。特别的,内容存储库提供基于事件的以下功能:
- 政策:事件处理器可以注册到所有节点或特定类型节点上,用来处理某种类型的事件。
- 规则:基于增加,更新或删除节点的步骤,声明定义相应的流程(例如电子邮件规则)。
内容模型定义了内容库节点的限制条件。每个内容模型定义了一或多个类型,而每个类型枚举了对应的节点必须支持的属性和关系。(如下图所示)经常地,我们要要求模型的定义支持跨多类型的节点,Alfresco通过面向方面的方法来解决了这个问题,尽管一个节点只能是某一种类型,但它可以同时应用多个方面,从而为内容建模提供了更有弹性的方式。
模型同时还定义了各种关系,属性数据类型和值约束。内容就是数据类型的一个特殊实现,它允许属性值为任意长度的二进制数据。在企业内容管理里,许多模型已经被成为内容管理的标准,Alfresco内容应用服务器提供了大量预定义的模型,包括:
- 内容/文档 层次
- 都柏林核心
- 维基
- 博客
- 讨论
- 合作站点
- DOD 5015.2
这些模型表现在内容的元模型里(如下图所示),与CMIS域模型和JCR结点类型模型有机的结合在一起。
与此同时你还可以根据不同的用例定义新的模型,无论是从新建立还是继承现有的模型。
Alfresco 应用编程接口
Alfresco内容应用服务器根据不同类型的客户开放出两种类型的应用编程接口:
- 远程应用编程接口:客户端使用远程通讯协议来访问Alfresco内容应用服务器,具体来说就是将它视为一个黑盒
- 嵌入式应用编程接口:使用在Alfresco内容应用服务器内部注册的扩展来访问Alfresco内容应用服务器
远程应用编程接口
Alfresco内容应用服务器主要使用远程应用编程接口来创建企业内容管理解决方案。事实上,Alfresco开放了两种类型的远程接口:
- 网络服务(Web services):基于 SOAP 的面向服务型接口
- RESTful:基于HTTP的面积资源型接口
Alfresco率先在其产品1.0版本中推出了网络服务 API,它涵盖了Alfresco内容应用服务器的许多核心服务。然而,基于SOAP接口的需求已经逐步减弱,Alfresco也在降低对其关注度。而基于网络服务的编程接口,它的优点能找到大量用来构建客户端绑定的工具,这些工具涵盖了常见的环境和所有的编程语言。你可以使用包括JAVA,微软的.NET,PHP和Alfresco的Flex等不同语言,通过这些接口,从任何地方远程的访问Alfresco内容应用服务器。同时为了保证兼容性,Alfresco使用集成的Apache CXF 引擎进行了彻底全面的整合测试。网络服务API也同样适用于业务流程管理,通过引入第三方的业务流程管理引擎,我们可以将更加广泛的业务流程管理整合进内容管理服务体系。
那么当Alfresco不再关注网络服务型API后,谁将会取而代之呢?Alfresco在它的2.1版本引入了RESTful API,并在此后迅速将其扩展到所有的应用服务器端服务中去。开发人员青睐它更与网络本身工作方式的整合。在任何环境下,用任何编程语言,你都可以扩展HTTP客户端与Alfresco交互。此外另一个亮点是,简化了面向AJAX网络客户端的使用。基于Spring Surf的Alfresco Share即通过它来远程访问Alfresco应用服务器。除此之外,Alfresco还集成了Spring Web scripts(由Alfresco创建)用来开发RESTful API。
Alfresco提供的Web services 和 RESTful APIs尽管是基于公用接口,但却专属Alfresco应用。这意思着基于这两种接口开发的客户端应用程序只能适用于Alfresco,这将会限制使用存储在其它类型内容仓库里的内容。这个问题困扰了企业内容管理领域很多年,这也就为什么会引入CMIS的原因。
CMIS提供了针对于内容仓库的一组标准服务,CMIS并不针对编程语言,它并没有规定内容仓库是如何工作的,它也并不期望共用内容仓库的所有功能。事实上,它的目标是定义一组内容仓库的标准服务,同时基于Web Service(SOAP)和RESTful.
CMIS的重要性体现在,它提供了在开发者合作的重点应该关注于工具的成长,功能,以及企业内容管理解决方案,而避免被绑定在某个特定的内容仓库上。
嵌入式编程接口
嵌入式编程接口被用来开发Alfresco内容应用服务器的扩展。这些扩展基于以有的服务器服务开发,将被部署到服务器端。因此可以这么说,通过嵌入式编程接口我们可以深入服务器提供的服务本身来开始其扩展应用。
嵌入式编程接口有多种类型,用来处理不同结构或类型的扩展(如图所示):
- Alfresco JAVA 基础编程接口:由Alfresco应用服务器提供的服务开放出来的一组公共JAVA接口
- JCR:对内容仓库进行交互的标准接口集(JSC_170)
- JAavaScript API:一个面向对象的视图,被JAVA基础编程接口裁剪后适用于JavaScript应用
- FreeMarker API:一个面向对象的视图,被JAVA基础编程接口裁剪后适用于FreeMarker应用
- 内容定义:创建和编辑内容模型的编程接口
- 工作流定义:定义业务流程的编程接口
我们可以开发出下列类型的服务扩展,有一些需要java知识,还有一些需要脚本的知识:
- Web脚本:定义和实现一个RESTful API
- 转换:将内容从一种类型转换成另一种类型
- 政策:对一个事件处理事件注册
- 服务:封闭一系列相关的功能
- 内容模型:定义类型,方面和相互间关系
- 流程:一个业务流程
Web脚本是一个很有趣的扩展,它允许你开发出自定义的RESTful API:这意味着你的可以定义出自己的远程接口来供客户端访问Alfresco内容应用服务器。一个Web脚本会根据它的实现使用多种嵌入式接口,例如JAVA基础编程接口,JCR,JavaScript和FreeMarker。开发自定义的远程接口下列应用情况:
- 定义部署在Alfresco应用服务器端新的扩展服务,开放出接口给远程客户端。
- 开发出一个门面用来集成第三方工具,如Forms engine。
事实上,Web脚本被用在很多当初没有被考虑到的解决方案中,当设计出Web 脚本框架后,解决方案希望通过使用相似的脚本和MVC方式来简化脚本开发,它成为了一个流行的Alfresco扩展开发方式。另一个嵌入式接口的用例是,一个应用或客户端程序可以通过继承内容服务组件直接嵌入到Alfresco内容管理服务器中。如前文所述,服务器的基础架构意味着它可以被部署到不同的环境中,而不仅仅是做为Web应用。 本质上,Alfresco内容应用服务器被视为一个库房,在其中的服务,包括内容仓库可以被独立或组合使用,提供定制化的解决方案。服务器完全可以根据需求缩小或扩大。
Alfresco部署
Alfresco模块化的设计和及其基础架构提供的平台,提供给Alfresco多种部署方式和拓扑结构。特别地,Alfresco的基础架构将Alfresco从它执行的环境中隔离开来,允许其使用不同的操作系统,数据库,应用服务器,网络浏览器以及权限系统。现在是时候来研究不同的部署方式,采用Alfresco富于弹性的设计,从最简单的部署方式到最大最复杂的部署方式,应用于最小规模的系统到最大的集成环境,
嵌入式Alfresco
嵌入式Alfresco直接安装在一台主机上,主机通过嵌入式接口直接访问Alfresco,这意味着主机与Alfresco共享相同的进程(如右图所示)。典型的主机需要以内容为导向的存储,同时包括内容丰富的客户端应用程序,检索和服务,以及管理着诸如测试工具和样例。客户端视Alfresco为第三方类库,被嵌入到Alfresco网络应用框架和应用服务器当中。在任何时候,客户可以挑选和组合不同的服务嵌入到Alfresco,允许非常小的Alfresco版本改进。主机负责Alfresco的开启和关闭。
Alfresco内容应用服务器
Alfresco内容应用服务器是一个独立的服务器,它通过远程协议的请求提供服务。一个独立的服务器可以支持任意数量的应用和客户访问,同时新的应用也可以任意增加。客户端通过远程接口或绑定协议访问Alfresco,同时,Alfresco服务器可以通过配置关闭或忽略某些特定的接入点。这种方式下Alfresco被绑定为一个网络应用服务器,而应用服务器的诸多功能,如事务管理和资源池,将被注入到Alfresco的基础架构,使Alfresco可以充分利用这些优势。例如,你可以将Alfresco应用服务器作为一个轻量级的Java EE应用部署到ApacheTomcat下(当然也可以部署到JBss,Oracle,IBM的服务器上),而充分利用到这些服务器的高级应用能力,比方说分布式事务管理。
Alfresco集群
Alfresco采用集群的方式支持大型系统,多个Alfresco服务器协同工作,跨多处理器处理用户请求(如图所示)。Alfresco网络应用框架和内容应用服务器都支持集群,从而可以让不同的层独立进行扩展。在集群环境中的Alfresco内容应用服务器的每个结点都可以共享同样的内容仓库存储,尽管存储本身可能根据需要在不同的结点上进行复制。缓存和查询索引也同样是分布式的,这意味着集群内的应用服务器看上去就像一台服务器。特别地,一个负载均衡器配置在集群的前端来分发请求到不同的结点上。
这种部署方式同样支持云部署。事实上,Alfresco提供的图形工具可以简单的将集群内的Alfresco应用服务器部署在多个亚马逊EC2虚拟结点上。
备份服务器
备份服务器是集群部署的一个特例,当服务器失效后,一个应用服务程序可以切换到备份版本的部署栈上去。根据配置,备份版本可以立即应用到失败的服务器上(称为热备份),或者短暂的停机后,按照配置进行变更(称为温备份)。在集群内的某一个结点设计为主结点,支持实时应用,而另一个设计为从结点,持续从主结点上复制(如图所示)。从结点保持只读状态直到触发了切换点。
多用户
多用户模式请允许单个Alfresco应用服务器(或者集群)可以同时支持多个用户,用户可以为某个客户,公司或组织,用户像访问独立的逻辑分区一样使用Alfresco,而感觉不到其它用户的存在。而在物理上,所有用户共享同样的基础架构,包括集群内的结点,内容,仓库存储。当然,某个用户维护的数据不可能被其它用户查看或使用。
这种类型的部署简化了管理并降低了维护多种不同的应用和用户基础相关的成本,尤其是在升级核心服务或执行备份,因为这只需要为所有住户做一次即可。
Alfresco同时还提供了管理多用户的工具,可以实时创建新用户。在同集群结合的同时,多用户模式提供了云计算选择。
2020年3月14日 上午2:11 沙发
谢谢分享!