为什么要扩展WebCenter Space?
我想这主要是基于以下三个方面的需求:
1. WebCenter Space本身提供的服务不足以满足客户需求
WebCenter Space基本上属于一个开箱即用的产品,随产品附带了大量的服务资源(例如:标签服务、文档服务等),但是要想满足客户的业务需求,光有这些还是不够的,还需要开发大量的业务服务资源。当然,我们可以开发基于WSRP或Oracle PDK的Portlet服务资源,但是,对于WebCenter来说,最高效的还是ADF Taskflow。那么,如何让ADF Taskflow融入WebCenter Space,这就需要对WebCenter Space进行扩展开发。
2. WebCenter Space个性化需求
WebCenter Space是一个自成一体的门户框架,她缺省就为我们提供了页面模板、样式等资源。这就意味着:工具条显示什么,登陆界面是什么外观这些都是产品提供好的。但是,往往客户需要一些个性化的要求,例如:经常有客户询问,如何在Banner上显示天气预报,如何在客户属性档案中加入“部门”字段,如何根据客户所在部门的不同显示不同的风格主题等。象这类属求也需要供助WebCenter Space扩展开发。
3. WebCenter Space内置资源服务定制
还有一种需求,就是对于WebCenter Space内置的服务资源定制化要求。例如:WebCenter Space提供了用于上传文档的Taskflow,但是有客户提出,能不能在上专文档的向导中加入其它工作流程。这种需求,也是需要Webcenter space扩展开发的。
WebCenter Space扩展依据的原理是这什么?
我们知道,WebLogic Server 9以后的版本引入了一个新的特性:共享库。这个特性产生的初忠是为了解决应用发布包轻量发布问题。举例来说:如果我们的一个WAR应用使用了ZK框架开发,那么每次打包时,我们不得不把ZK所有的依赖jar包一起打到包中,还有一个比较麻烦的就是需要将ZK相关的配置文件也打进包中。当然,如果只发布一次不会有什么问题,顶多是包比较大,发布慢一点。但是如果应用需要频繁更改,这就成问题了。那么能不能将这些共享包与配置文件分离出来,让应用包每次发布时只发布应用代码呢?这正是共享库所能提供的,也就是说将共用的Jar包也象应用一样发布出来,其它应用包只需要引用它就好了。
关于共享库详细内容请参考:Creating Shared Java EE Libraries and Optional Packages
WebCenter Space扩展正是使用了这个特性。其原理是,WebCenter Space缺省会引用共享库:extend.spaces.webapp.war。然后再在这个共享库应用中引用我们自已开发的共享库应用。这样,我们只需专注于开发我们自已的共享库应用(例如:Taskflow)即可,当我们发布我们的共享库应用后,其中的Taskflow自然会被WebCenter Space发现使用。如下图:

WebCenter Space扩展开发基本流程简述

要基于以上流程开发,首先要解决两个难题:
首先:我们要解决的是如何得到extend.spaces.webapp.war所对应的应用包,下载地址:DesignWebCenterSpaces.zip,我们所要做的就是将我们开发的共享库添加其中,如下图:

例:
<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
<library-ref>
<library-name>com.acme.custom.webcenter.spaces</library-name>
</library-ref>
</weblogic-web-app>其次:我们要解决的是如何制作一个共享应用让extend.spaces.webapp.war引用
这里有两种方式:
如果使用SampleWebCenterSpacesExtensions样例包,其开发过程变为:

参考资料:
(完)