上一篇 | 下一篇

利用BEA WebLogic Portal 8.1进行内容管理

发布: 2008-7-01 21:27 | 作者: admin | 来源: | 查看: 12次

  WebLogic Portal 8.1版本的一个好特性就是全面的内容管理系统。当然目前尚未能与目前市场上的大型内容管理供应商竞争,但是对于很多应用而言它已经运行得相当好了。然而,使用内容管理系统时还存在一些问题。本文将解决其中的几个,并提供有关一个有助于解决这些问题的dev2dev工具的详细信息。

问题1:迁移

  当内容创建在产品系统外部时,无法通过轻松的方式来将这些内容移至产品系统。很多情况下,产品系统对于内容变更有严格的规定,不允许某些特定的更改,因此有必要进行迁移。

问题2:备份/还原

  如果使用默认储存库,内容管理系统的所有数据都存储在一个数据库中。使用标准数据库工具,可以以多种方式来备份和还原数据,但是需要足够了解数据库模式才能进行恰当的还原。通常,对整个数据库备份后,只允许还原至某个特定时间点一次。

问题3:数据类型修改

  如果有内容与定义在内容管理系统中的数据类型相关联,则该数据类型不能更改。因此,在更改数据类型之前必须删除所有数据。这样一来,当创建大量数据后需要作一个简单的属性修改时,就会很麻烦。

问题4:大批量修改

  有时需要在内容管理系统中做大批量的修改。WebLogic Portal管理用户界面很适合于内容维护和少量修改,但是很难用来进行大批量修改。

  现在,这些问题中的大多数都可以通过老练的数据库权威所编写的独特SQL脚本来解决,否则的话,这会需要大量的手工工作,而这会导致高昂的维护成本。

  当在构建一个复杂的基于内容管理的门户的过程中遭遇这些问题之后,我决定构建一些东西来帮忙。我开发了一个内容管理导入/导出(Content Management Import/Export)工具,并将它与我的一些同事分享,很快我就发现这是一个大家都需要的东西。您可以在dev2dev网站:http://cmimportexport.projects.dev2dev.bea.com找到该工具,包括源代码。

  接下来我将介绍该工具的操作,以及如何使用它来解决以上提到的问题。

安装

  您可以在此处找到安装向导:https://cmimportexport.projects.dev2dev.bea.com/ files/documents/261/192/InstallationGuide.doc。在本文中,假定CM导入/导出门户已经安装成功,不过,最常见的安装将是作为一个现有管理门户中的portlet。

  要安装CM导入/导出门户,只需从此处部署适当的EAR文件:https://cmimportexport.projects.dev2dev.bea.com/ servlets/ProjectDocumentList?folderID=96&expandFolder=96&folderID=96。完成后,可以通过如下URL访问该工具:http://host:port/cmPortal/cmImportExport.portal。您安装时只需将其中的host和port替换为您的主机和端口。

使用

  在登录门户后,您会看到四个选项(参见图1),其中的两个选项处理内容类型,另两个处理内容数据。该工具假定您对WLP内容管理已经有一定的了解,知道在添加内容数据之前必须定义数据类型。然而,工具并不强迫您按照特定的顺序进行操作。因此,可以在没有类型定义的情况下尝试导入数据。当然,这将引发错误。

内容类型导出

  我们从内容类型开始。如果您有一个包含类型定义的现有储存库,您就可以使用内容类型导出(Content Types Export)按钮将其导出到一个XML文件。一旦选定后,您可以选择使用哪一个储存库来进行导出。当按下查看导出树(View Export Tree)按钮后,您将会看到内容类型的列表和复选框。所有被选定的项都将被导出到XML文件。

  XML文件将被创建在服务器的临时目录中,最终屏幕上将显示文件的完整路径。

内容类型模式

  对于WLP内容管理类型,没有正式的模式定义。所以我创建了一个(cmTypes.xsd)。该工具使用这个模式来为导入导出操作创建XML bean。该模式是简单的文本结构,支持所有数据类型和除“explicit”标记之外的所有属性(参见清单1)。WLP内容管理API没有公开该属性。因此,如果具有设置了explicit标记的类型,该信息将不会导出,相应的内容数据也不会导出。总之,因为这是一个用户自定义的数据库表格,所以通常使用一个单独的进程来维护这些信息。

清单1

BINARY

Content binary file

false

false

true

false

false

.

. // All properties here

.

STRING

If set, render will be in popup window with this

?name

false

false

false

false

false

.

. // All datatypes here

.

字号: | 推荐给好友

41/41234>

评分:0

我来说两句