使用JDeveloper扩展WebCenter Spaces
WebCenter Spaces 是一个可以高度扩展的企业应用程序。当你使用WebCenter Spaces的时候你会发现你需要修改或扩展Webcenter Spaces提供的功能。
例如,你可能需要部署一些额外的共享库,包括自定义代码或task flows(任务流);或者你可能需要在JDeveloper中修改WebCenter Spase的源码,像外观和页面导航等。
现在我们介绍如何下载一个JDeveloper workspace,是你可以在JDeveloper中扩展Webcenter Spaces共享库,定制上传Webcenter Spaces源码并返回Webcenter Spaces。
第一节,为WebCenter Spaces 扩展下载一个workspace
使用JDeveloper workspace开发Webcenter Spaces扩展,需要在oracle网站下载一个叫做
DesignWebCenterSpaces.jws的workspace。
下载扩展Webcenter Spaces的workspace:
1:确保WebCenter Spaces 安装、配置、工作正常。
2:下载并安装Oracle JDeveloper 11g的WebCenter扩展(11.1.1.4).
3:从Oracle Technology Network下载WebCenter Spaces 扩展文件:
http://download.oracle.com/otndocs/tech/webcenter/files/DesignWebCenterSpaces.zip
4:解压缩至本地
a: \DesignWebCenterSpaces 目录下有:DesignWebCenterSpaces.jws.
(在此workspace中可以配置你的共享库列表并且提供一个编辑WebCenter Spaces源码的设计环境)
b: \copy_to_common 目录下有:common文件夹它包含 WebCenter WLST 命令.
(需要直接上传自定义源码到WebCenter Spaces)
c:\SampleWebCenterSpacesExtensions 目录下有:SampleWebCenterSpacesExtension.jws.
(此workspace中是WebCenter Spaces自定义代码的示例扩展和脚本)
5:将 WebCenter WLST命令复制到JDeveloper的安装目录
a: 打开如,D:\资料\DesignWebCenterSpaces\copy_to_common(DesignWebCenterSpaces.zip解压目录)
b: 复制common文件夹.
c: 打开如,C:\Oracle\Middleware\oracle_common(JDeveloper安装目录)
d: 将common文件夹粘贴在如,C:\Oracle\Middleware\oracle_common\common文件夹
第二节,在WebCenter Spaces中添加共享库
A:WebCenter Spaces共享库的部署
WebCenter Spaces依赖于一个命名为extend.spaces.webapp.war的特殊共享库。
该extend.spaces.webapp.war共享库不是为了满足你的自定义代码。这个共享库中只包含
weblogic.xml,你可以在这里配置你的WebCenter Spaces共享库。
例如,你想把你的自定义代码或者task flows部署在多个共享库,你可以列出他们在
extend.spaces.webapp共享库。如下所示:
WebCenter Spaces
| --> weblogic.xml
| -->extend.spaces.webapp
| --> weblogic.xml
|-->custom.webcebcenter.spaces **11.1.1.3Shared Library
|-->com.acme.custom.webcenter.spaces **CustomerShared Library
|-->com.oracle.partner1.spaces.extension **Partner Shared Library
|-->com.oracle.partner2.spaces.extension **Partner Shared Library
这种开发模式为开发者(包括开发商、客户和合作伙伴)提供了一个简单的方法来添加额外的WebCenter Spaces共享库。
如果你想部署一个新的共享库其中包括WebCenter Spaces的扩展,你必须修改WebCenter共享库依赖列表并重新部署extend.spaces.webapp。如下所示:
B:在共享库中部署自定义代码和Task Flows.
开发人员可以构建WebCenter Spaces的扩展,打包放在ADF Library JARs中,然后部署到WebCenter Spaces共享库中使用他们。例如,你可以:
a:在JDeveloper中开发自定义代码提供给WebCenter Spaces使用;
b:在JDeveloper中开发Task Flow提供给WebCenter Spaces使用;
1. 创建一个自定义代码或taskflow项目
2. 创建一个ADF库的jar文件
3. 创建一个WAR或EAR的共享库文件
4. 部署WAR或EAR文件到管理服务器,其中WebCenter Spaces部署使用
Fusion Middleware Control, Enterprise Manager, or WLST scripts.
通用配置文件属性定制用例
C:重建Webcenter Spaces共享库名单
当你想部署一个新的共享库其中包括WebCenter Spaces的扩展,你必须修改WebCenter共享库依赖列表并重新部署extend.spaces.webapp.
1:编辑共享库列表
用WebCenterSpacesExtensionLibrary项目建立和部署extend.spaces.webapp.war共享库在weblogic.xml中配置WebCenter Spaces共享库的依赖关系列表。
a. 下载并解压WebCenter Spaces development workspace.
b. 用JDeveloper 打开DesignWebCenterSpaces.jws
c. 展开WebCenterSpacesExtensionLibrary项目
d. 在ApplicationSources\WebCenterSpacesExtensionLibrary\public_html\WEB-INF目录下打开weblogic.xml.
将示例Webcenter Spaces命名”com.acme.custom.spaces”,替换成你自己的共享库名称。
e. 在你的的Webcenter Spaces中为每个共享库添加<library-name>条目。
你可以包含一个条目:
<library-ref>
<library-name>com.mycompanyname.custom.webcenter.spaces</library-name>
</library-ref>
也可以包含多个条目:
<library-ref>
<library-name>com.mycompanyname.custom.webcenter.spaces</library-name>
<library-name>custom.webcenter.spaces</library-name>
<library-name>com.oracle.mypartner1.spaces.extension</library-name>
<library-name>com.oracle.mypartner2.spaces.extension</library-name>
</library-ref>
f.确保提到的每一个共享库都部署在Webcenter Spaces管理服务器上。
2:设置编译和部署选项(config.properties)
在你建立共享库列表和部署extend.spaces.webapp.war的Webcenter Spaces管理服务器之前,
你必须提供你的一些环境信息和Webcenter Spaces的安装配置文件config.properties.
为extend.spaces.webapp共享库建立和设置部署属性。
a. 打开DesignWebCenterSpaces.jws
b. 展开WebCenterSpacesExtensionLibrary项目
c. 打开config.properties.
d. 输入你的Jdeveloper环境和Webcenter Spaces安装信息
配置config.properties部署到托管服务器
属性 | 描述 |
jdeveloper.install.home.directory | Jdeveloper的安装目录;你指定的目录包含jdeveloper, wlserver_10.3,modules等 |
wlst.executable | 命名为WLST的可执行文件 wlst.cmd (on Windows) / wlst.sh (on Linux) |
extending.spaces.home.dir | 开发Webcenter Spaces的workspaces路径. 如:<path>DesignWebCenterSpaces |
oracle.jdeveloper.ojdeploy.path | ojdeploy.exe路径 |
wls.port | WLS控制台运行端口号 |
wls.host | 部署Webcenter Spaces共享库运行的主机 |
wls.userkey | config.properties介绍如何使用WLST生成该文件,该文件可以复制到任何可以访问的位置。 |
wls.userconfig | 储存管理员用户详细资料文件的位置的名称. config.properties介绍如何使用WLST生成该文件,该文件可以复制到任何可以访问的位置。 |
wls.target | 在Webcenter Spaces共享库中被部署的对象. 如:WC_Spaces and AdminServer. |
wls.webcenter.app.target | Webcenter中被部署的.Ear文件. 如:WC_Spaces. |
webcenter.app.name | webcenter |
restart.implementation.version.suffix | 递增的版本号 |
e. 保存更新好的config.properties
在JDeveloper中更新config.properties不需要重启。
3:构建和部署共享库列表(extend.spaces.webapp.war)
每当你修改共享库列表你必须重新部署extend.spaces.webapp.war。
建立和部署:
a. 在Jdeveloper中打开DesignWebCenterSpaces.jws
b. 展开WebCenterSpacesExtensionLibrary项目
c. 如果没有设置,必须设置config.properties环境信息。
d. 右键单击Application Sources\WebCenterSpacesExtensionLibrary下build.xml。
e. 选中Run Ant Target > clean-stage.
这将生成一个新版本的共享库列表extend.spaces.webapp.war.他的新版本号和war包保存如下:
<UnzipDir>/DesignWebCenterSpaces/WebCenterSpacesExtensionLibrary/META-INF/MANIFEST.MF
f. 部署WebCenter Spaces共享库列表:
a:右键单击源程序下build.xml.
b:选择 Run Ant Target > deploy-shared-lib.
一个新版本的共享库列表部署到webcenter spaces管理服务器。登录到WLS控
制台到Deployments>extend.spaces.webapp>Overview
4:恢复旧的共享库列表:
如果新的共享库列表有问题或者某些原因要恢复到老的版本,你可以使用WLS控制台取消(删
除)部署当前版本和恢复到以前版本。由于WebcenterSpace只使用最新版本的共享库,所以
你可以删掉不想要的共享库版本。(如果你通过"change-build-deploy-test",则每个版本都是保
留的。)取消部署最新版本前你必须关闭webcenter spaces管理服务器。一旦你删除了最新版
本你可以重新启动服务器。
注:Oracle建议不要删掉原始的extend.spaces.webapp版本,这样可以在必要时恢复到即时可用的版本。
a. 用下面的脚本停止webcenter spaces管理服务器部署。
UNIX: DOMAIN_HOME/bin/stopManagedWeblogic.sh
Windows: DOMAIN_HOME\bin\stopManagedWeblogic.cmd
b.登录到wls管理控制台(Deployments>extend.spaces.webapp>Overview),
删除共享库的最新版本。
c. 用下面的脚本启动webcenter spaces管理服务器部署
UNIX:DOMAIN_HOME/bin/startManagedWeblogic.sh
Windows: DOMAIN_HOME\bin\startManagedWeblogic.cmd
5:共享库部署报错问题:
a. "Security:090219" error displays:
weblogic.security.internal.encryption.EncryptionServiceException:weblogic.security.internal.encryption.EncryptionServiceException:weblogic.security.internal.encryption.EncryptionServiceException:[Security:090219]Error decrypting Secret Key com.rsa.jsafe.JSAFE_InputException:Invalid input length for decryption. Should be a multiple of the block size – 8
检查config.properties里wls.userconfig和wls.userkey配置是否正确。
b. "DeployerException:Task 9 failed" displays:
weblogic.Deployer$DeployerException:weblogic.deploy.api.tools.deployer.DeployerException:Task9failed:[Deployer:149117]deploylibrarycustom.webcenter.spaces[LibSpecVersion=11.1.1.2,LibImplVersion=11.1.1.2.5]onAdminServer,WC_Spaces.
发生此错误说明部署的新版本和实施的老版本是相同的。使用WLS控制台验证此版本,更改config.properties里restart.implementation.version.suffix的值。当你重新编译和重新部署,实施的版本因该加1.
c. "java.lang.IllegalArgumentException"displays:
d. Deploymenthangs:
如果在部署阶段遇到问题和程序挂起,你可以结束并且杀掉Jdeveloper的ant
进程并且重启WebCenter Spaces管理服务器。
e. Newlydeployed WebCenter Spaces shared library is not active
如果共享库不起作用,你可以使用WLS控制台删掉不起作用的共享库。然后重建(Run Ant Target>clean-dist)或调换(Run Ant Target > deploy-shared-lib) WebCenterSpaces共享库。
f. "Erroroccurred attempting to display the list of pages you can access. Please contactthe administrator" displays after logging in:
重启Webcenter Spaces部署管理服务器。
g. "WCS#2009.12.22.00.49.35:Fatal error occurred while getting members" displays:
h. Changesare not available after deployment even though deployment successful.
Webcenter Spaces总是使用最新的版本库,在WLS控制台中检查与实施相匹配的版本的MANIFEST.MF。
DesignWebCenterSpaces/WebCenterSpacesExtensionLibrary/META-INF/MANIFEST.MF是否与WSL控制台概述 extend.spaces.webapp一样。
第三节,WebCenterSpaces资源开发
这里介绍WebCenterSpacesResources项目,Webcenter Spaces的开发设计环境。通过这个项目可以上传,可以用Jdeveloper开发或定制Webcenter Spaces资源。
A:使用WebCenterSpacesResourcesproject做Round-TripDevelopment
Webcenter’s Round-Trip Development 是一个简单方便的方法来修改整个应用程序,无需重新部署WebCenter Spaces。Round-trip development是指功能和技术,让你部署的应用程序上传和下载资源,到Jdeveloper来维护和增强应用程序。一旦上传改变你的应用程序,你可以返回到WebCenter Spaces立即使用或测试。
WebCenter Spaces提供了一些默认的皮肤和页面模板以供使用和修改。为了保持Webcenter Spaces的易用性,WebCenter Spaces对创建和修改资源做了一定的限制。如果你对资源的需求超出了Webcenter Spaces的编辑功能,你可以使用Jdeveloper开发新的功能,WebCenterSpacesResources项目专门用来设计和开发新的功能。
Oracle建议你使用此项目建设和管理自定义外观、页面模板、页面风格、导航、内容显示模板和资源目录。该项目提供了一些示例资源,像你可能需要的一些文件或文件夹。你不必从头开发,你可以用JDeveloper编辑WebCenter Spaces的现有资源,或者使用一个样本作为开始起点。
当你要部署新的资源,你可以直接从JDeveloper上传资源到WebCenter Spaces,只需提供JDeveloper主机访问端口和Webcenter Spaces运行的名称。
Note:你不需要部署定制资源共享库。
另外你可以登录到Webcenter Spaces通过资源管理器上传资源。如果你决定用此方法,你必须做好资源备份。
B:研究 WebCenterSpacesResourcesProject
1. 下载并解压到WebCenter Spaces workspace。
2. 在Jdeveloper中打开DesignWebCenterSpaces\DesignWebCenterSpaces.jws。
3. 展开WebCenterSpacesResources project
WebCenterSpacesResourcesproject下文件和文件夹介绍
配置属性 | 描述 |
\Application Sources | 支持文件 |
\Web Content | WebCenter Spaces资源 |
\oracle\webcenter\siteresources | 包含可以开发管理此文件夹下所有资源 |
\scopedMD | 包含应用程序级和spaces级的资源 Application-level resources are stored under the"defaultscope"directory s8bba98ff_4cbb_40b8_beee_296c916a23ed 包含示例程序应用资源. Space-level resources are stored under Space-specific directories with the same name as the Space's internal ID. 不是spaces级的资源可以即装即用。 |
\<Default Scope ID> | 包含应用程序级的示例程序和资源。 |
\contenttemplates | 包含一个示例显示模板(single1.jsff). |
\navigation | 包含一个示例导航(Navigation.xml) |
\pagestyles | 包含一个示例空白页面样式(SampleBlank.jspx and SampleBlankPageDef.xml) |
\resourceCatalog | 包含一个示例空白目录(ResourceCatalog.xml) |
\site Template | 包含4个页面示例模板(Template.jspx): SampleSideNavigation-Flow,SampleTopNavigation-Flow, SampleTopNavigation-Stretch, SampleSideNavigation-Stretch |
\skin | 包含一个示例皮肤(Skin.css) |
\shared | 使用资源的目录 |
\Page Flows | 支持文件 |
C:实现直接上传到WebCenterSpaces
如果你要更新Webcenter Spaces应用,新建或修改页面外观或模板,你可以在JDeveloper中直接上传更新程序。要在JDeveloper直接更新WebCenterSpacesResources project必须:
a:在Webcenter Spaces的config.properties指定主机和端口(host and port)。
b:有WebCenter Spaces的上传权限的角色。
1. WebLogic Server role - monitor
2. WebCenter Spaces permissions - Create,Edit, Delete <resourcetype>
在上传门户的资源在你的项目中选择配置WebCenter Spaces的主机名和端口。当你第一次登录这个选项必须先输入Webcenter Spaces的用户名和密码。为了安全,你的登陆信息不会保存在session中,但是会将session保存在缓存中。
当你登录Webcenter Spaces,只要你拥有管理权限,你就可以上传提供资源。
注:Out-of-the-box,只有oracle中间件预设的管理员(weblogic)拥有所有必要的权限。、
在config.properties里设置连接属性和授予权限:
1. 打开..\DesignWebCenterSpaces\config.properties.
2. 输入Jdeveloper和WebCenter Spaces的详细安装信息。
设置config.properties 启动上传下载
配置属性 | 描述 |
jdeveloper.install.home.directory | JDeveloper安装目录,指定目录必须包括n \wlserver_10.3, \modules等。 |
wls.host | 主机名 |
wls.port | 端口 |
3. 保存更新好的config.properties
4. 如果需要,请求验证权限。
通过JDeveloper设置上传和验证权限
Type | 角色和权限 | 描述 |
WebLogic Server | Monitor(监听) | 这个角色可以运行WLST脚本,从JDeveloper上传资源到Webcenter Spaces |
WebCenter Spaces |
|
|
Application-level | Create,Edit,Delete <resourcetype> | 此权限可以建立和管理Webcenter Spaces资源的应用级别。 |
Manage Configuration | 此权限可以访问Webcenter Spaces资源管理页面 | |
Space-level Standard Space-level Advanced | Create, Edit, Delete Resources Create,Edit,Delete <resourcetype> | 此权限可以创建和管理一个特定的空间资源。 根据不同的应用访问标准或高级的权限 |
Manage Configuration | 此权限可以访问Webcenter Spaces资源管理页面 |
5. 上传示例资源,已测试连接并验证该资源在Webcenter Spaces可用。
D:在Jdeveloper中编辑Webcenter Spaces资源
Oracle建议使用JDeveloper扩展Webcenter Spaces。WebCenterSpacesResources这个项目提供了一切上传、下载、修改WebCenter Spaces的资源。
Application-Level VS Space-LevelResources:
a:Application-level resources提供给所有Spaces.
你必须开发WebCenterSpacesResources project目录下所有的application-level资源
oracle/webcenter/siteresources/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed.
要上传资源到Webcenter Spaces必须有Webcenter Spaces的权限:
更多的应用程序管理配置Create, Edit, Delete <Resource_Type>.
b:Space-level resources仅提供给一个特定Spaces.
你必须给特定的空间资源设定一个适当的命名空间,以便他可以上传到该Spaces:
oracle/webcenter/siteresources/scopedMD/<space_internal_id>
同样你必须下载资源从现有的空间并导入到JDeveloper,你不能上传这些资源到不同Spaces,
只能上传到同一个Spaces。
要上传资源到一个特定Spaces你必须配置Space的管理权限
Create, Edit, Delete Resources (standardpermission model)标准权限模型
Create, Edit, Delete <Resource_Type>(advanced permission model)高级权限模型
如果你想直接在JDeveloper中上传资源,必须有WLS的监听角色。
1:如何导入WebCenter Spaces资源到JDeveloper
导入Webcenter Spaces资源文件(.ear)到WebCenterSpacesResources project的相应目录
a:Application-level resources are importedto:
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\application_ID\resource_type\resource_ID
Forexample, anapplication-level skin with the resource IDgsr5a8c2fcc_bc7f_4cba_9254_36df58d66e60 is created
under the application directorys8bba98ff_4cbb_40b8_beee_296c916a23ed:
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\s8bba98ff_4cbb_40b8_beee_296c916a23ed\skin\gsr5a
8c2fcc_bc7f_4cba_9254_36df58d66e60
b:Space-level resources are imported to:
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\Space_ID\resource_type\resource_ID
Forexample, a Space-level skinwith the resource ID gsre9cbef77_28b2_4f46_a69a_25beac543382 is created underthe Space
directorysc48d77f4_ca06_4fa9_8d51_0e23bed74eac:
WebCenterSpacesResources\oracle\webcenter\siteresources\scopedMD\sc48d77f4_ca06_4fa9_8d51_0e23bed74eac\skin\gsre9c
bef77_28b2_4f46_a69a_25beac543382
在WebCenterSpaces检查资源ID
在Jdeveloper检查资源名称
将存档导入WebCenter Spaces资源:
1.在 Application Navigator, 右键单击 WebCenterSpacesResources project, 选择Import Portal Resource.
2.在对话框填写资源名称或浏览存档文件(.EAR)导入你需要的的资源。
3.如果存档不存在,登陆Webcenter Spaces下载一个.EAR文件。
4.点击OK.
2:如何使用 WebCenter Spaces 示例程序(请阅读相关章节)
Page Templates - Working with Page Templates
Page Styles - Working with Page Styles
Skins - Creating and Managing Skins
Navigations –
Content Display Templates - Creating Content PresenterDisplay Templates
Resource Catalogs - Creating and Managing ResourceCatalogs
Mashup Styles - Working with Mashup Styles
Task Flows - Adding Custom Task Flows to Your Portal
E:上传资源到WebCenterSpaces
如果Webcenter Spaces已经启动并运行,你可以在Jdeveloper直接更新或部署新的资源。
上传资源必须有Webcenter Spaces的管理权限。
1. 在config.properties配置Webcenter Spaces的相关管理权限。
2. 在JDeveloper中打开WebCenterSpacesResources project,找到你要上传的资源.
3. 右键单击你想要上传的资源并选择Upload Portal Resource.
如果菜单选项不显示,请检查Webcenter Spaces主机名、端口是否设置正确。
4. 如果出现提示请输入Webcenter Spaces的用户名密码点击确定。
5. 检查上传日志文件。出现以下信息表明上传成功。
Imported<temp_log_directory>\<resource_type_id>.ear
6. 登陆Webcenter Spaces,检查上传资源是否可用。
a. 登陆Webcenter Spaces
b. 验证application-level资源的地址:
http://host:port/webcenter/spaces/admin/resources
验证Space-level资源的地址:
http://host:port/webcenter/spaces/spaceName/admin/resources
c. 在左侧面板选择相应的资源,确认上传资源可用。
F:WebcenterSpaces导出资源存档
当你确认上传资源是可用的,你可以导出一个.EAR文件;在任何时候上传到Webcenter Spaces使用。
导出一个Webcenter Spaces资源:
1.找到要导出的文件,右击菜单选择Update Resource。
2.在对话框中数额如文件名选择存放路径,如:C:\myskin.ear
3.点击ok
第四节,集成到OracleWebCenter Spaces
本章介绍使用Webcenter API展示Webcenter 门户的功能。通过这些API你可以在你的Webcenter门户中创建新的空间,管理空间成员,空间信息检索以及更多。
注:定制的taskflow可以部署在Webcenter门户应用里不可以部署在Webcenter Spaces里。
A: WebCenter Spaces 介绍:
WebCenterSpaces是一个基于Oracle Webcenter 框架、Webcenter服务和Oracle 服务的web 应
用。它配备所有的工具,为你快速创建门户网站、社区和可以容纳数以千计的不同语言和不同人
群的用户的社交网站。
WebCenter Spaces提供一个可配置的环境,可以使个人和团体更有效协同的工作。这个应用程序是一个管理个体和团体互动的自动化解决方案。它还提供了一些诸如,文档、图表、报表、组件、业务应用、服务和ADF源码等工具使企业用户可以直观的共享信息。
WebCenter Spaces提供两个工作环境在一个应用程序:Home Space 和 Group Spaces.Home Spaces为每个用户提供私人工作区用来储存个人信息、查看和响应业务流程、维护一个好友列表和执行许多其他有关的任务或者专属工作。Group Spaces支持将无关联的工作区域关联在一起。
Spaces 支持项目团队和社团的协同工作,Spaces使人们在一个虚拟的社交网络进行协同工作和资源共享。
从结构上说Spaces包括页面,其中有许多事用于特定的服务。如:一个列表页提供了创建和发布多列清单的方法。一个文件上传页面提供了一个中心库上传、组织和管理内容。一个搜索页用于保存搜索结果的搜索和管理功能。除了这些和其他默认页还支持创建自定义页面。有一个预定义布局制作网页是很容易的制作适合你们需求的网页。
Webcenter提供了各种服务,你的团队在Spaces可以使用他提供的各种功能。Documents服务提供上传和管理内容。Discussions论坛服务提供了创建、管理和参与论坛讨论。其他的服务包括列表、公告和搜索。这些服务提供了一个协同高效的工作环境。通过taskflow服务展现他们的子功能。Taskflow是一个可以重复使用的公开的或提供特定服务的子功能。
可以在基于out-of-the-box的模板上快速启动和运行Spaces。此外,Webcenter Spaces允许用户去改变任何一个模板,这样就可以使用户设计Spaces,以适应特定需求,以便供他人使用。
B:在WebCenterPortal Applications使用APIs展示Webcenter Spaces
1. WebCenter Spaces APIs简介
当用户使用Webcenter 门户的时候,用户可能会通过一个专用的Spaces完成特定的任务。在这种情况下,留在当前应用程序的上下文不会造成逻辑混乱,而不必切换到Webcenter Space应用程序。为此Webcenter Spaces提供了几个访问Spaces子集的APIs,使用这些API可以集成强大的Spaces功能到你的Webcenter 门户应用。
使用Webcenter APIs可以:
A:Create and manage Spaces and Space templates:可以创建和删除Spaces和添加自定义属性。
B: ManageSpace membership:可以增加删除Spaces成员。
C: Retrieveinformation about Spaces and Space templates:可以检索Webcenter Spaces的URL或
特定Spaces的URL。还可以retrieve Space and Space template metadata。
Spaces可以有许多种不同的应用。作为一个Webcenter 门户应用的开发者,这有几个案例
a:采购程序,采购经理可以新建一个Spaces评估新的供应商。
b:客户支持中心应用程序,分析师可以新建一个支持Spaces,与其他用户协作客户关系升级。
2:案例1:采购应用程序,使用一个Spaces评估供应商
用Webcenter Framework构建一个采购应用程序。这个应用程序跟踪供应商、价格、交货时间要
求、预计交货时间和历史表现。
供应商评价是一个协作的过程,采购程序必须可以选择和评估供应商候选人;他要求公司各区域
的人协作完成。如,一个设计工程师和制造代表必须确定所购买的产品必须符合要求和技术规格;
采购代理可以议价、确定物流和合同问题;并且经理或行政部批准采购。如何才能启动一个采购
系统对供应商的评价。
通常,采购经理收到制造部门的申请。有时因为无法交付导致订单无法完成,通常由供应商给定
交货时间范围。因此一个新的供应商必须满足可以确定交货时间和定价的要求。采购经理可以添
加一个候选供应商到系统中,但是采购经理需要一种方式来组织和共享信息,并在他的团队成员
可以协作评价供应商。
Space可以提供这种环境,因此采购系统包括一个createGroupSpace API。直接从采购申请“创建
Spaces”的对话框中点击创建一个新的Spaces连接。
当采购经理点击连接弹出提示对话框,采购经理填写Spaces名称和描述并选择一个模板,在Spaces
快速建立了采购模板并可以立即使用。如:该模板定义了服务的要要(事件、文档库等)以及任何可
能需要的自定义页面。
这种情况下,采购经理在模板列表中选择采购项目模板。另一种方法是选择默认的采购项目模板。增
加了这个默认,采购经理将思考使用哪一个模板。你甚至可以将生成的Space名称为供应商ID。这样
采购经理就不必要每个都查看。创建Spaces只需要点击一个创建连接。
当采购经理点击OK。Webcenter Spaces将生成新的供应商评价Spaces。
上图是一个供应商评价Spaces主页,里面包括一个日历组件,一个文档组件,一个公告区等。每个区域都确定一个采购项目模板。此外,也支持添加一个连接到采购应用程序创建Spaces.点击此链接筛选供应商。
3:如何使用Webcenter APIs创建Webcenter 门户应用程序
在你使用Webcenter Spaces APIs之前,你必须确保Webcenter Spaces运行正常并且Jdeveloper设置正确。
1. 验证Webcenter Spaces是否启动并运行。
a:启动 WebCenter Spaces. URL : http://host:port/webcenter,你不需要登陆。
b: 验证Webcenter Spaces 启动并运行URL:http://host:port/webcenter/SpacesWebService?WSDL
你应该看到像下图类似的页面,如果没看到请联系中间件管理员。
2.用Webcenter SpacesAPIs创建Webcenter 门户应用
在你的Webcenter 门户应用调用Webcenter Spaces APIs之前,你必须保证你的应用程序包含正确的库
并且有Webcenter Spacves Web Services的正确连接。
a. 启动 JDeveloper.
b. 在Application Navigator中展开你要提供给Spaces 的功能应用,此应用必须基于Webcenter模板
c. 右键点击项目view-controller选择Project Properties
d. 选中Libraries and Classpath.
e. 检查你的项目中是否添加了下列必要的lib
ADF DVT Faces Runtime 、ADF Model Generic Runtime 、ADF Model Runtime
JAX-RPC Client 、JAX-WS Client 、JAXB 、Oracle JEWT、WebCenter Spaces Client
JDEV_HOME/jdeveloper/oracle_common/modules/oracle.adf.model_11.1.1/adfm.jar
JDEV_HOME/jdeveloper/oracle_common/modules/oracle.xdk_11.1.1/xml.jar
f. 点击 OK.
g. 在Application Navigator右键点击Connections选择New Connection > URL.
h. 在name段输入SpacesWebServiceEndpoint
i. 在url段输入Webcenter Spaces Web service URL:http://host:port/webcenter/SpacesWebService
j. 点击ok。
连接信息被添加到META-INF文件夹下connections.xml如:
C:\JDeveloper\mywork\mySpacesApplication\.adf\META-INF
k. 打开connections.xml
WebCenter Spaces Web ServiceEndpoint URL Connection
<Reference name="SpacesWebServiceEndpoint"
className="oracle.adf.model.connection.url.HttpURLConnection">
<FactoryclassName="oracle.adf.model.connection.url.URLConnectionFactory"/>
<RefAddresses>
<XmlRefAddraddrType="SpacesWebServiceEndpoint">
<Contents>
<urlconnection name="SpacesWebServiceEndpoint"
url="http://host:port/webcenter/SpacesWebService"/>
</Contents>
</XmlRefAddr>
</RefAddresses>
</Reference>
如果你想在运行时设置Webcenter Spaces Web service的端口,setGroupSpaceWebServiceEndpoint可以
重写并传递一个参数。
Example 47-2 Setting the WebCenter SpacesWeb Service Endpoint at Runtime
client.setGroupSpacesWebServiceEndpoint("http://myserver.example.com/webcenter/SpacesWebService")
3. 应用和Webcenter Spaces之间的固定连接
在你的webcenter门户应用Webcenter APIs之前,你必须保证应用程序(消费者)和Webcenter Spaces(生产者)之间的通信是安全的。调用API的用户身份以安全的方式传递到Webcenter Spaces,这个通信具有完整性和保密性。
要做到安全,Webcenter Spaces的消息保护基于SAML的令牌传递策略。作为管理员必须创建一
个java密钥库和一个更新凭据存储。在收到你的应用程序的请求后Webcenter Spaces可以验证令牌真
伪。然后你必须用Jdeveloper注册密钥和存储凭证。
开始前要从管理员处获取以下条件:
a:消费者密钥是一个安全的连接。 这是一个 .jks 文件 (for example, consumer.jks).
b: 消费者公共应用程序密钥存储在 密钥库 (for example, consumer).
c: 消费者公用应用程序钥匙的密码(for example, mypassword1).
d: 生产者公共应用程序密钥存储在消费者密钥库 (for example, producer).
这是由管理员导入生产者公共应用程序密钥可信任证书。
e: 消费者密钥库密码 (for example, mypassword2).
确保连接安全:
a.复制密钥库到文件系统在你的Webcenter 门户运行的时候。如:DOMAIN_HOME/config/fmwconfig
b.打开jps-config.xml配置管理员创建的密钥库
<!--KeyStore Service Instance -->
<serviceInstancename="keystore" provider="keystore.provider"location="./consumer.jks">
<description>Default JPS Keystore Service</description>
<property name="keystore.type" value="JKS"/>
<property name="keystore.csf.map" value="oracle.wsm.security"/>
<property name="keystore.pass.csf.key"value="keystore-csf-key"/>
<property name="keystore.sig.csf.key"value="enc-csf-key"/>
<property name="keystore.enc.csf.key"value="enc-csf-key"/>
</serviceInstance>
c. 备份cwallet.sso
d. 打开一个命令行
e.找到Jdeveloper安装目录C:\Jdev\jdeveloper\common\bin
f.运行以下命令In Windows: wlst.cmd 、In Linux: ./wlst.sh
g.Run: connect('admin_user', 'admin_password','host:port')
Where:
admin_user is the user name for theadministrator of the server on which the application is running
(for example, weblogic)
admin_password is the password for theadministrator
host:port is the server on which theapplication is running
h.Run the following commands:
createCred(map="oracle.wsm.security",key="enc-csf-key", user="alias",
password="key_password", desc="EncPassword")
createCred(map="oracle.wsm.security",key="sign-csf-key", user="alias",
password="key_password",desc="EncPassword")
createCred(map="oracle.wsm.security",key="keystore-csf-key",user="keystore-csf-key",
password="keystore_password",desc="Keystore password")
Where:
alias is the consumer public alias key in the keystore
key_password is the password for the public key
keystore_password is the keystore password
i.重启部署应用的服务器
4.设置WebCenter Spaces客户端上下文
a.当你部署在WLS上的应用程序调用Webcenter Spaces APIs时域范围内的配置被使用,除非你不
重写他们。使用GroupSpaceWSContext类提供的API覆盖或设置安全配置参数。
特别是,你必须为WebcenterSpaces设置SAML issuername 和public key alias,这些都需要数
据加密。如果WebCenter Spaces Web service的端口没有设置在connections.xml文件中。你也
可以像如下这样设置:
GroupSpaceWSContext context = newGroupSpaceWSContext();
context.setEndPoint("endPointUrl");
context.setSamlIssuerName("samlIssuer");
context.setRecipientKeyAlias("producer");
groupSpaceWSClient = newGroupSpaceWSClient(context);
where:
1.endPointUrl是WebCenter Spaces Web service的端口,
如:http://server.example.com:8912/webcenter/SpacesWebService).
2.samlIssuer is the issuer URI of the SAMLAuthority issuing assertions for this SAML Asserting Party (for example,http://www.example.com/webcenter)
3.producer 是WebCenter Spaces 的公共密钥程序, 如:wcspaces.
b.通过上下文初始化Webcenter Spaces客户端。
如:GroupSpaceWSClient client = newGroupSpaceWSClient(context);
c.初始化了客户端,检查设置是否正确,getWebCenterSpacesURL();
如果返回了正确的URL,就可以使用APIs。
4.如何在Webcenter门户应用提供Spaces功能
执行WebcenterSpaces常用的操作APIs:
WebCenter Spaces API | Category |
createGroupSpace | Managing Spaces and Space Templates |
setCustomAttribute | Managing Spaces and Space Templates |
deleteGroupSpace | Managing Spaces and Space Templates |
createGroupSpaceTemplate | Managing Spaces and Space Templates |
addMember | Managing Space Membership |
inviteMember | Managing Space Membership |
removeMember | Managing Space Membership |
getRoles | Managing Space Membership |
getGroupSpaces | Retrieving Information for Spaces and Space Templates |
getPublicGroupSpaces | Retrieving Information for Spaces and Space Templates |
getDiscoverableGroupSpaces | Retrieving Information for Spaces and Space Templates |
getGroupSpaceMetadata | Retrieving Information for Spaces and Space Templates |
getGroupSpaceMetadataByGuid | Retrieving Information for Spaces and Space Templates |
getGroupSpaceTemplates | Retrieving Information for Spaces and Space Templates |
getGroupSpaceTemplateMetadata | Retrieving Information for Spaces and Space Templates |
getGroupSpaceTemplateMetadataByGuid | Retrieving Information for Spaces and Space Templates |
getWebCenterSpacesURL | Retrieving Information for Spaces and Space Templates |
getGroupSpaceURL | Retrieving Information for Spaces and Space Templates |
getServiceRSSFeedURL | Retrieving Information for Spaces and Space Templates |
getServiceRSSFeedURLbyGuid | Retrieving Information for Spaces and Space Templates |
1. 管理Spaces和Spaces Template
使用createGroupSpace 、setCustomAttribute 、createGroupSpaceTemplate 、deleteGroupSpace管理
a. Creatinga Space
使用createGroupSpace API 创建一个基于现有Spaces模板的Spaces。
使用说明:
@.Spaces的内部名称. 此名称可以包含空格。
@.Spaces的现实名称。
@.Spaces描述. 这项虽然不是强制的但是建议填写以帮助用户确定Spaces的目的。
@.这个名字是要用Spaces模板的名字. 这个必须是Spaces模板的内部名称不是显示名称。
或者你可以提供一个以逗号分隔的关键字列表,帮助用户在搜索中找到Spaces。
Example : Creating a Space
//create the Space
GroupSpaceWSMetadata gsMetadata =
client.createGroupSpace("Databases","Databases" "A community for people interested in
databases", "databases,oracle", "CommunityofInterest");
//print the Space GUID to provideconfirmation of creation
System.out.println("GUID: " +gsMetadata.getGuid());
b. Creatinga Custom Attribute(自定义属性)
每个Spaces都配备了内置的属性,如:名称、描述、创建日期和图表等。此外,你可以定义自定义属性存储其他信息(元数据)。
Spaces通过setCustomAttribute API来指定一个自定义属性,使用这个API指定名称和spaces名称、描述、类型和自定义属性。
Example :Creating a Custom Attribute创建一个数据空间,并为这个空间创建自定义属性。
//create the Space
client.createGroupSpace("Databases","Databases", "A community for people interested
in databases",null,"CommunityofInterest");
//create the custom attribute
client.setCustomAttribute("Databases","Vendors", "List of vendors", "java.lang.String",
"Oracle, IBM");
c. Creatinga Space Template(空间模板)
用createGroupSpaceTemplate API创建一个基于Spaces的Space Template,使用这个APIs为Template指定名称、描述名称、模板描述和空间名称。
Example:Creatinga Space Template (creates a Space template based on the Databases Space)
GroupSpaceWSMetadatatemplMetadata =
client.createGroupSpaceTemplate("DatabasesTemplate","Databases Template",
"Atemplate based on the Databases Space", "Databases");
//print thetemplate GUID to provide confirmation of creation
System.out.println("GUID:" + templMetadata.getGuid());
d. Deletinga Space
用deleteGroupSpace API从Webcenter Spaces永久删除一个Spaces,用这个API指定要删除空间的名称,API返回一个布尔值表示是否删除成功。
Example: Deleting a Space
//delete the Space
Boolean success =client.deleteGroupSpace("Databases");
//print a messagedepending on the result of the deletion
if(success){
System.out.println("OperationSucceeded");
}else{
System.out.println(Operation Failed");
}
2. 管理空间成员
a. AddingMembers to a Space
使用addMember API给Spaces组分配新的成员,用这个API指定spaces名称、用户/组的成列表。该列表必须包含GroupSpaceWSMembers对象类型。Spaces指定的用户/组的名称和赋予该用户/组的角色。
你必须给存储在Webcenter Spacess中的用户或组指定一个有效的名称标识,为角色选择默认角色(Moderator, Participant, Viewer)或自定义角色。
注:使用setGroup(true)时,表示要添加一个用户组。
Example:Adding Members to a Space
//create the list of users
List addMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = newGroupSpaceWSMembers("pat", "Viewer");
GroupSpaceWSMembers mem2 = newGroupSpaceWSMembers("vicki", "Participant");
GroupSpaceWSMembers grp1 = newGroupSpaceWSMembers("Sales", "Viewer");
grp1.setGroup(true);
GroupSpaceWSMembers grp2 = newGroupSpaceWSMembers("Marketing", Viewer");
grp2.setGroup(true);
//add the GroupSpaceWSMembers objects to thelist of users
addMem.add(mem1);
addMem.add(mem2);
addMem.add(grp1);
addMem.add(grp2);
//add the users to the Space
client.addMember("Databases",addMem);
//print a list of members to confirm the newmembers were added
GroupSpaceWSMetadata memMetData =client.getGroupSpaceMetadata("Databases");
for (GroupSpaceWSMembers mems:memMetData.getMembers()){
System.out.println(mems.getMember());
System.out.println(mems.getRole());
}
b. InvitingUsers to Join a Space
用inviteMember API来邀请用户成为Spaces成员。
Example: Inviting Users to Join a Space
//create the list of users
List inviteMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = newGroupSpaceWSMembers("pat", "Viewer");
GroupSpaceWSMembers mem2 = newGroupSpaceWSMembers("vicki", "Participant");
//add the GroupSpaceWSMembers objects to thelist of users
inviteMem.add(mem1);
inviteMem.add(mem2);
//invite the list of users to join the Space
client.inviteMember("Databases",inviteMem);
c. removeMember
用removeMember API撤销Spaces成员,使用这个API要指定Spaces名称和成员列表。该列表必须是包含GroupSpaceWSMembers对象类型。用getGroupSpaceMetadata获取当前spaces的成员列表。
Example:Removing Members from a Space
//create the list of users
List remMem = new ArrayList();
//create the GroupSpaceWSMembers objects
GroupSpaceWSMembers mem1 = newGroupSpaceWSMembers("pat");
GroupSpaceWSMembers mem2 = newGroupSpaceWSMembers("vicki");
2 lines
//add the GroupSpaceWSMembers objects to thelist of users
remMem.add(mem1);
remMem.add(mem2);
//remove the users from the Space
client.removeMember("Databases",remMem);
//print a list of members to confirm themembers were removed
GroupSpaceWSMetadata memMetData =client.getGroupSpaceMetadata("Databases");
for (GroupSpaceWSMembers mems:memMetData.getMembers()){
System.out.println(mems.getMember());
System.out.println(mems.getRole());
}
d. RetrievingRole Information
用getRoles API获取Spaces的所有角色,当添加或邀请新成员时确定什么角色。包括默认角色(Moderator, Participant, Viewer)和自定义角色。
Example :Retrieving RoleInformation
//retrieve thelist of roles
List<String>roles = client.getRoles("Databases");
//print the listof roles
for (String role:roles){
System.out.println(role);
}
3. 检索Spaces 和 Space Templates信息
a. 检索Spaces列表
使用getGroupSpaces API获取与给定字符串匹配的Spaces集合,用这个API指定一个查询字符串。传一个空的查询,返回的空间集合当前用户都可以访问。
Example :Retrieving a List of Specific Spaces
List<String> allGroupSpaces =client.getGroupSpaces("Database");
Example :Retrieving a List of All Spaces
List<String> allGroupSpaces =client.getGroupSpaces(null)
b. 检索公共Space列表
c.