1. OpenCms介绍
1.1 什么是内容管理系统?
隐藏在内容管理系统(CMS)之后的基本思想是分离内容的管理和设计。页面设计存储在模板里,而内容存储在数据库或独立的文件中。当一个用户请求页面时,各部分联合生成一个标准的HTML 页面。合成的Web 页面可能包含多个数据源,例如,一个描述车间的页面也许包括在选项条上其它车间列表,以及顶部的标题条。
一个内容管理系统通常有如下要素:
① 文档模板
② 脚本语言或标记语言
③ 与数据库集成
④ 内容的包含物由内嵌入页面的特殊标记控制。这些标记对于一个内容管理系统通常是唯一的。这些系统通常有对较复杂的操作的语言支持,如 Python, Perl, 或Java 等。
内容管理系统对站点管理和创造编辑都有好处。这其中最大的好处是能够使用模板和通用的设计元素以确保整个网站的协调。 作者只需在他们的文档中采用少量的模板代码,然后即可把精力集中在设计之上的内容了。要改变网站的外观,管理员只需修改模板而不是一个个单独的页面。
内容管理系统也简化了网站的内容供给和内容管理的责任委托。很多内容管理系统允许对网站的不同层面人员赋予不同等级的访问权限, 这使得他们不必研究操作系统级的权限设置,只需用浏览器接口即可完成。
其他的特性如:搜索引擎、日历、Web 邮件等也会内置于内容管理系统 CMS 内,或允许以第三方插件的形式集成进来。
内容(Content)是一切商业活动的基础,人们常常说网站建设“内容为王”,那什么是内容呢?内容是一个比数据(Data)、文档(Document)和信息(Information)更广的概念。数据通常指结构化的、由传统关系数据库管理系统(RDBMS)处理的对象,文档通常指企业和政府的非结构化信息,Lotus Domino是文档型数据库的典型代表,而信息通常包括结构化的数据和非结构化的文档。除了一般的文字、文档、多媒体、流媒体外,内容还包括Web网页,信息文字,广告,程序(如javascript),软件等一切数字资产,甚至还包括商业规则。
内容管理系统(Content Management System,简称CMS)是企业信息化建设和电子政务的新宠,也是一个相对较新的市场,对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解:
A、Gartner Group认为内容管理从内涵上应该包括企业内部内容管理、Web内容管理、电子商务交易内容管理和企业外部网(Extranet)信息共享内容管理(如CRM和SCM等),Web内容管理是当前的重点,e-business和XML是推动内容管理发展的源动力。
B、Merrill Lynch的分析师认为内容管理侧重于企业员工、企业用户、合作伙伴和供应商方便获得非结构化信息的处理过程。内容管理的目的是把非结构化信息出版到intranets, extranets和ITE(Internet Trading Exchanges), 从而使用户可以检索、使用、分析和共享。商业智能系统(BI)侧重于结构化数据的价值提取,而内容管理则侧重于企业内部和外部非结构化资源的战略价值提取。
C、Giga Group 认为作为电子商务引擎,内容管理解决方案必须和电子商务服务器紧密集成,从而形成内容生产(Production)、传递(Delivery)以及电子商务端到端系统。
我们认为内容管理系统是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容管理解决方案重点解决各种非结构化或半结构化的数字资源的采集、管理、利用、传递和增值,并能有机集成到结构化数据的商业智能环境中,如OA,CRM等。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。
国内内容管理市场分析
内容管理从2000年开始成为一个重要的应用领域,这时.COM和B2B, B2C等经历了资本和市场的考验及洗礼,人们重新回到信息技术应用的基本面-如何提高竞争能力,而内容管理恰恰能够通过对企业各种类型的数字资产的产生、管理、增值和再利用,改善组织的运行效率和企业的竞争能力,企事业单位也开始认识到内容管理的重要性。
从企事业单位信息化的观点来看,以下因素导致对内容管理软件的巨大需求:
(1) 知识是企业的财富。在Internet交互过程中,只有十分之一涉及销售,其他十分之九都和信息交互有关,员工的知识获取越来越依赖于互联网,特别是在电子商务的个性化环境中,客户为了做出购买决定,需要智能化地获取信息,不仅仅是商品的数量和价格,更重要的可能是产品的手册、安全保证、技术指标、售后服务、图片文件等等。
(2) 信息的及时性和准确性。无论在企业内网还是外网,信息的更新越来越快,企事业单位的信息生产量越来越多,且呈现成倍增长的趋势,企事业单位更需要的是一个功能强大、可扩展的、灵活的内容管理技术来满足不断的信息更新、维护,这时如何保证信息的准确性和真实性将越来越显得重要。
(3) 企业内外网统一的需求增长。随着企事业单位信息化的建设,内联网和外联网之间的信息交互越来越多,优秀的内容管理系统对企业内部来说,能够很好地做到信息的收集和重复利用以及信息的增值利用,对于外联网来说,更重要的是真正交互式和协作性的内容。
国外从事内容管理软件研发的主要厂商包括Vignette,Interwoven, BroadVision,Openmarket,ATG,Allaire,Documentum, Hummingbird等,这些公司CM产品和解决方案专业性很强,大多基于J2EE等平台,功能丰富,主要面向企业级用户,是CM市场的主要厂商。还有一些更窄的专业厂商提供内容管理某个阶段需要的功能,如Verity 提供知识检索,Micromedia 提供内容创作平台,Akamai和Inkitomi 提供内容分发管理技术等,与此相反,Microsoft, IBM, Oracle等公司提供通用平台性CM解决方案。但是目前CM市场仍有很多不完善的地方,包括:
A、在这个全新的市场中很难找到一个CMS满足用户的所有需求。
B、有些CMS只是单纯的信息发布工具而以,称不上内容的收集和再利用更谈不上知识管理的概念,最多只是一组网站建设工具软件而已。
C、所有产品的可视链接都非常差,只有极少数厂商能够提供可视软件,这些软件都不是交互式的,不能用作管理工具。
D、产品模块还未能很好地做到真正、完全简易化。
内容管理系统是一个很泛的概念:从商业门户网站的新闻系统到个人的Weblog都可以称作发布系统。
框架型:本身不包含任何应用实现,只是提供了底层框架,具体应用需要一定的二次开发,比如Cocoon,Vignette;
应用型:本身是一个面向具体类型的应用实现,已经包含了新闻/评论管理,投票,论坛,WIKI等一些子系统。比如:postNuke xoops等;
但无论如何,在发布系统选型之前,首先了解自己的实际需求是最重要的:想根据现成系统将自己的需求硬往上照搬是非常不可取的。访问量,权限控制和各种功能需求。每个模块和功能自己都比较清晰一点以后,再去网上找找类似的实现:你会发现其实每个环节到目前上都有比较成熟的实现了,而且还在不断完善和发展中,如果没有:你的需求太特殊,或者可以尝试分解成更小的系统组合实现。
内容管理系统被分离成以下几个层面:各个层面优先考虑的需求不同
后台业务子系统管理(管理优先:内容管理):新闻录入系统,BBS论坛子系统,全文检索子系统等,针对不同系统的方便管理者的内容录入:所见即所得的编辑管理界面等,清晰的业务逻辑:各种子系统的权限控制机制等;
Portal系统(表现优先:模板管理):大部分最终的输出页面:网站首页,子频道/专题页,新闻详情页一般就是各种后台子系统模块的各种组合,这种发布组合逻辑是非常丰富的,Portal系统就是负责以上这些后台子系统的组合表现管理;
前台发布(效率优先:发布管理):面向最终用户的缓存发布,和搜索引擎spider的URL设计等……
内容管理和表现的分离:很多成套的CMS系统没有把后台各种子系统和Portal分离开设计,以至于在Portal层的模板表现管理和新闻子系统的内容管理逻辑混合在一起,甚至和BBS等子系统的管理都耦合的非常高,整个系统会显得非常庞杂。而且这样的系统各个子系统捆绑的比较死,如果后台的模块很难改变。但是如果把后台各种子系统内容管理逻辑和前台的表现/发布分离后,Portal和后台各个子系统之间只是数据传递的关系:Portal只决定后台各个子系统数据的取舍和表现,而后台的各个子系统也都非常容易插拔。
内容管理和数据分发的分离:需要要Portal系统设计的时候注意可缓存性(Cache Friendly)性设计:CMS后台管理和发布机制,本身不要过多考虑“效率”问题,只要最终页面输出设计的比较Cacheable,效率问题可通过更前端专门的缓存服务器解决。
此外,就是除了面向最终浏览器用户外,还要注意面向搜索引擎友好(Search engine Friendly)的URL设计:通过URL REWRITE转向或基于PATH_INFO的参数解析使得动态网页在链接(URI)形式上更像静态的目录结构,方便网站内容被搜索引擎收录。
CMS行业研究
http://www.cmswatch.com
http://www.cmsreview.com
http://www.cmsinfo.org
CMS讨论邮件列表
http://www.cms-list.org
商业软件和开源项目列表:
http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Content_Management/
三个基本组件
问题的提出
一般网站的维护量在不断增加,远远超过了专业人士的处理能力。(要改变这一现状,需要我们付出努力)
即便您认为您已经就管理您的网站作了很好的工作,至少在预知的未来,网站仍是具挑战性的工作。让我们分析一个其中的原因:
新内容层出不穷
您的组织或公司需要在网站上处理的内容种类在不断增长,老的内容在继续使用,它只是已经归档。随着技术的不断进步,新内容(音乐、视频和老式文本)创建工具随处可见。人们总是有以新内容进行交流的需求,您的工作是新内容发布到网站上。
“但是,我的网站很小。”您说。我主认为:任何一个小网站通过努力会成为一个大网站。如果可能的话,您的组织或公司有大量的内容想发布到网站上。
有人对此会心存疑虑,让我们来计算一下。您有多少个作者?每位作者每月创建或修改多少条信息?
网站创建三四年后,有5万个页面不是什么稀奇的事情。大学网站师生们的投稿,轻而易举就会达到十万条信息。今天,所处的信息社会,企业内部信息通常会达到数百万条。
毫无疑问,这一数字继续增长,真正的问题是,您是否能以目前的工作方式完成这一重担。如果不能,那就到了开始思考和计划开发网站产品的时候了。
1.2 什么是OpenCms?
1.2.1 OpenCms概述
l OpenCms是一个WEB站点内容管理系统
l 第一个版本发布于2000年3月
l 5.0稳定版发布于2003年5月
l 6.0 alpha版发布于2004年9月
l OpenCms是真正的开放源代码软件
l OpenCms使用LGPL许可
l 无需许可费用
l OpenCms能自由从项目站点http://www.opencms.org下载
l 特别适用于生成公司Web站点和Intranet
l 适用于已有IT基础设施的中大型企业
l 大多数特性是根据实际的客户需求开发的
l 高度灵活和可定制
l 使用了许多已验证的开源Java组件
l 核心系统的开源开发由Alkacon软件牵头
l 有活力的开发团体:订阅邮件列表超过1000
l 广泛的商业支持:
超过50个官方解决方案提供者
200个以上的WEB公司提供技术
l 同等数量的可用文档:
第一本关于OpenCms的图书已由团体成员编写
交互式的文档和示例
l 软硬件需求
软件:开源,从高到低
如:Linux + Tomcat + MySQL
如:Win NT + IIS + Tomcat + MS SQL
如:Solaris + BEA + Oracle
硬件:高度灵活
运行在一笔记本电脑上
标准配置:一般的Intel PC/2Ghz CPU/1GB RAM
其它:SUN Sparc,集群配置
基于默认组件(如:Tomcat、MySQL/Oracle)的安装采用向导,只需5分钟
1.2.2 OpenCms的特点
OpenCms是一个专业水平的开放源代码WEB内容管理系统,可被任何组织或企业使用,OpenCms100%开放源码,采用该技术有如下优点:
l 直接从WEB站点的前台编辑内容
l 自动在线/离线工作流
l 灵活的内容资源
l 集成全文搜索引擎
l 所见即所得编辑非结构化内容
l 结构化内容采用易于定义的基于XML的内容项目
l 在一个应用中管理多个站点
l 全文搜索支持PDF、Word、Excel文档资源
l 为所有的存储资源均可进行配置
l 基于时间的自动内容发布和过期
l 完全支持统一编码内容
l ACL(Access Control List 访问控制表)权限控制系统
l 可选的HTML静态导出
l 基于JSP的模版机制
l 模块具有版本控制
l OpenCms的其它特性
² 先进的多语言支持
² 基于Web浏览器的应用
² 完全控制输出的布局
² 集成的用户管理
² 基于项目的工作流
² 全部XML内容均通过了模型验证
² 任务管理
² 内容版本控制
² 修改历史
² 基于XML的导入/导出
² 通过访问同胞(sibling)设置多路径资源
² 动态页面渲染
² 连接检查
² 组合静态和动态内容
² 完成数据库驱动
² 非图形用户界面工具访问文档资源
² 强大的日志文件配置
² 开放的用于扩展的模块API……
基于Java/XML,能方便地集成到现有的硬/软件环境中。
易于安装,具有集成的HTML安装向导。
资源管理快捷、方便,支持几乎所有的文件类型,在编辑器中可通过拖放快速访问资源,并可设置不同的访问权限。
集成用户权限管理系统,由OpenCms控制所有内容的访问。
基于项目的发布,提供一个在同一服务器上包括离线工作/在线实况系统的工作环境。在项目发布前,修改内容可被浏览、确认和充分地测试。
具有强大的工作流和任务管理功能,对任务可设置用户组、优先等级、期限、首选用户。任务生命周期的每一阶段都有清晰记录以确保工作流的完整。
所见即所得的编辑功能,编辑页面无需HTML知识,同时一个集成的源代码编辑器让行家操纵HTML源代码。
国际化支持,支持统一的字符编码标准(UTF-8),能用国际化字符集处理本地化地内容,支持中文。
强大的内容版本控制功能,能让您追踪何时被谁修改的痕迹。所有历史版本都被存档,能够恢复,允许您随时访问历史版本。
支持多种模板机制,易于实现统一布局的站点设计。
OpenCms的Cache机制可随意地为动态创建的页面或页面变化提供高速缓存,来减少运行时从数据库的查询次数,大大提高站点的运行性能。
安全/SSL支持,通过Https协议保护全部或站点的一部分。任何资源能被标记为https,OpenCms将只给通过Https连接的请求提供该资源。
计划任务系统,OpenCms提供一个集成计划任务系统。利用它,可周期性或某一个特定时间之后调用一个定制的动作。
应用服务器集成/EJB支持。运行OpenCms在一个J2EE环境(如BEA Weblogic)提供配置分式对象构架,特别是EJB技术。使用这些技术,Web站点后台处理可以构架为分布式组件方式。根据J2EE应用模型的四层架构,表现与事务逻辑可以严格地分开。当内容数据部署到EJB时,OpenCms关注表现数据,利用集成的JSP引擎创建通用的web站点布局。
支持负载均衡或失效恢复的集群。为了保证硬件故障时Web站点可用,或处理站点高负载,OpenCms可安装多个服务器的集群。当新的内容发布时,OpenCms将自动更新集群中的服务器。
总之,OpenCms基于标准的Java技术,支持多种数据库和操作系统,易于适应大多数现有IT系统。
1.2.3 选择OpenCms的理由
² 考验
已被遍布全球的大小机构/公司使用
² 成熟
开源开发始于2000年,目前版本为6.0
² 易于使用
所见即所得和直接编辑
² 适应标准
使用/实现成熟的API标准
² 技术支持可利用
全球超过50家企业注册为OpenCms的官方解决方案提供商
² 节省费用
与昂贵的付费商业非开源产品相比
² 开源
内容管理系统未来市场的稳固
² 适合现有IT基础设置
因为是Java,所以空间中立
能使用您现有的数据库(如Oracle)
² 适合于自主开发的要求
² 专家评论好
如 Gartner组评论OpenCms是“一个成熟的开源内容管理系统产品”
1.2.4 OpenCms社群
1.3 本书的目的
1.4 相关技术
web服务器和Java Servlet
数据库
网页、模版和JSP
合成