Webcenter sites 11.1.1.8.0 新特性

友好的URL访问:

再也不用去写复杂的URL封装器解装器了

Mobile的支持

Segment界面的美化

与Webcenter Content的集成


安装论坛模块与gadgets更简单的安装

Webcenter sites URL Assembler

前言:

一个站点完美的用户体验往往体现在各种细节当,友好的URL也是增强用户体验的一个小细节,Webcenter sites也提供了URL美化的解决方案。

解决方案:

跟其它sites中的功能一样,URL美化的解决方案也在FirstSiteII站点中给出了相应的例子,

在webcenter sites安装CD(即安装包)中的如下目录下找到FSIIAssembler.java文件:

/ContentServer/FirstSiteII/PrettyURL/src/com/
fatwire/firstsite/uri/FSIIAssembler.java

默认此URL装配器是配制上的,如果你访问FirstSiteII站点的话,则会调用此过滤器,当然需要满足过滤器条件规则的URL才能够正常触发。在domainCSWEB-INFclasses目录下找到ServletRequest.properties文件,使用propeditor打开文件:

你自己定制的装配器配制在红框中的两个属性中。当然,FirstSiteII站点默认的装配器就是配制在这里的。

 

我们如果在firestSiteII站点中,使用如下规则访问站点:

…ContentServer/[site]/[sitepfx]/[cid]

则会触发FSIIAssembler.java java类,你可以通过远程debug的方式来跟踪此类来具体了解URL装配器是如何工作的。

 

原理举例说明:

下面以用户通过 URL 访问站点页面来说明下sites的封装器。

用户输入URL访问站点页面

调用解装方法,将URI path进行解析,然后将解析后得到的参数放入sites的上下文中

在页面渲染的时候,对页面中使用render:getpageurl标签的地方则会调用装配器的装配方法,根据我们定制的规则将页面上的链接装配好给用户点击使用。

 

主要工作的方法有两个,即解装跟装配两个方法:

解装方法:protected DisassemblyContext getDisassemblyContext(URI uri)

装配方法:getAssemblyContext(Definition def)

Webcenter sites Approved and Publish Problem—发布失败

问题描述:

在使用sites Mirror to server发布内容方式时,发现有一些资产处于暂挂状态,于是点进资产去重新批准,一般出现这种情况是因为当前资产有相关联的子资产未进行审批造成的,此时只要将相关的子资产审批通过后,就可以将当前资产脱离暂挂状态,则可批准成功。

 

但是,我在使用发布过程中遇到如下问题,明明已经将关联的资产全部发布过去了,但是需要发布的资产还是暂挂状态,并且如下图显示的详细信息。


英文版:

Approved, but approval for publish to destination was based on versions of the child assets that no longer exist

点击批准,却得出批准失败状态。

 

知识背景:

在flex asset中,一般以Attribute结尾的表中存的是此种flex asset中定义的所有Attribute,_Mungo结尾的表中存放的则是一个flex asset资产实例中对应flex asset Attribute 的值。

 

造成原因:

原PageDefinition中引用了一个PageAttribute,PageAttribute为asset类型,后因种种原因,将此PageAttribute从PageDefinition移除并将它删除。

并且发现,批准失败的资产都是基于曾经对被删除的PageAttribute引用过的PageDefinition。

 

在sites中,flex asset都是多表关联的结构,所以,一个flex asset的实例是存放在多个表中的,如果我们删除了flex asset引用的Attribute,sites只会删除相应资产以Attribute结尾的表中的记录,并不会去删除以_Mungo结尾的表中实例对该属性的引用,而审批系统则会去根据这里的信息去查找需要被审批的资产,所以会造成如上发布失败的情况。

 

解决方案:

找到相应flex assets的_Mungo表:


点击cs_attrid属性,将数据排序,这里存放的是当前flex asset实例引用的flex attribute的ID,如果这里的ID值不存在在该资产以Attribute(例:PageAttribute)表中,则将该数据删除,这样,之前不能批准的资产就可以批准成功了。


 

开发Webcenter sites AttributeEditer

背景:

AttributeEditer同样也是资产,当给一个Attribute赋予相应的AttributeEditer时,则会将默认的Attribute输入机制替换(即输入风格替换)。

AE(属性编辑器)相关:

presentationobject.dtd 在webcenter sites安装目录下,文件定义了flex attribute资产的几种输入风格,内置9种。

attribute editor asset 持有一个xml,
如果输入格式为check boxes,radio options, pull-down lists等类型的话,xml的代码则是提供相应的选项值。Xml代码中所用到的标签,则都是在presentationobject.dtd中定义的。

样例:

首先我们来看个样例代码,attribute editor asset所持有的xml的样例代码(此处则以下拉列表为例):

Demo1:

<?XML VERSION=”1.0″?>

<!DOCTYPE PRESENTATIONOBJECT SYSTEM “presentationobject.dtd”>

<PRESENTATIONOBJECT NAME=”PulldownTest”>

<PULLDOWN>

<ITEM>Red</ITEM>

<ITEM>Green</ITEM>

<ITEM>Blue</ITEM>

</PULLDOWN>

Demo2:

<?XML VERSION=”1.0″?>

<!DOCTYPE PRESENTATIONOBJECT SYSTEM “presentationobject.dtd”>

<PRESENTATIONOBJECT NAME=”PulldownTest”>

<PULLDOWN>

<QUERYASSETNAME>A Prods</QUERYASSETNAME>

</PULLDOWN>

 

说明:

从上面提供的attribute editor asset所持有xml代码样例中可看出,我们可以在xml文件中直接指定下拉列表所需要的值,或者指定一个QUERYASSETNAME属性(即指定query资产的名称)。

 

Demo1比较简单,只需要把代码copy至任一xml文件中,再去webcenter sites的content server 中创建相应的attribute editor asset,并上传此xml文件,则可以供flex attribute使用。

注:在编辑flex attribute界面中,编辑Attribute Editor属性来选择属性的编辑器

 

在Demo2中我们可看到使用了<QUERYASSETNAME>标签,那么我们则需要提供相应的Query资产。

通常情况下,我们会在项目中遇到许多表单中的下拉列表,而且这些值通常都是固定的,我们通常的做法是将他们放在同一样字典表中来使用。所以,此处我们也使用一张表来存放我们下拉列表中的数据。

 

Demo2:

1、创建table

在Admin视图中,打开左边admin tab,展开Management Tools,双击Sites Database,在右边操作表单中,选择add table

 



 

 

2、创建table 中的row,双击Content,选项Add New Content



 

3、创建query资产

在Contributor视图下创建Query资产


注:查询结果选择Collection,

用于属性编辑器的查询语句应符合如下格式:

select name as value, id as assetid from Product where…

 

4、创建AttributeEditor

首先创建demo2的xml文件

<?XML VERSION=”1.0″?>

<!DOCTYPE PRESENTATIONOBJECT SYSTEM “presentationobject.dtd”>

<PRESENTATIONOBJECT NAME=”PulldownTest”>

<PULLDOWN>

<QUERYASSETNAME>此处填写指定Query资产的Name</QUERYASSETNAME>

</PULLDOWN>

将此xml文件在创建AttributeEditer表单中上传,完成创建。

Webcenter sites请求序列图(request sequence diagram)

学习sites一段时间了,发现理论知识严重不足,前些日子恶补developer’s 中之前跳过的章节。
想起之前在网上看到的sites请求序列图,仔细看后又有了新的理解,但还是感觉之前在网上看到请求序列图是手工画的,看起来怪怪的,就用viso重新画了个,分享给大家:
参考链接: Oracle WebCenter (Sites)概述笔记

webcenter sites配制CAS认证跳转地址

最近项目中遇到了这样的情况,需要将Sites的编辑环境绑定域名外网访问,由于之前安装时配制好编辑环境中content server 端口号已经配制完端口号为8001,所以在配制域名时将端口号8001也一半放入域名中。这样则会导致访问WEM应用时跳转链接出现问题:

环境描述:

原编辑环境地址:http://host:8001/servlet/

现编辑环境地址:http://host/servlet/

原CAS 地址:http://host:8001/cas/

现CAS 地址:http://host/cas/

 

配制前,如果访问原编辑环境地址sites则会跳转至

原CAS地址:http://host:8001/cas/

 

配制后发现,如果访问http://host/servlet/,URL依旧还是跳转至原CAS地址。

 

遇到这种情况时就应该去sites部署应用的目录下:

CS/WEB-INFO/找到文件SSOConfig.xml,将如下两个属性做相应修改:

我们此处只需要将casUrl属性改成无端口号的则可。

Webcenter sites11G开发问题记录

产生场景:

当使用CSDT编辑Template时,如果我们指定了合法参数(Argument)属性,新增了几个参数及参数所允许的合法值,当我们在填入合法参数或者值时,如果输入中文:


这时候如果在CSDT中编辑该Template,再次(注:是保存了两次)保存后,则会导致该Template所对应的元数据描述文件(xxx.main.xml)就会出现乱码。

解决办法,将合法参数中的所写的中文全部改成英文。

 

CSDT Session 失效问题(严重影响开发效率)

产生场景:

当开启CSDT一段时间后,如果去创建Template及CsElements有的时候会出现如下问题:

解决思路:

之前一直以为是CSDT的BUG,但是后面发现UserBean是sites中存放用户信息的java类,于是尝试改了sites的Session失效时间,改成-1,这个问题再也没有出现过了。

 

解决办法:

到sites安装目录找到futuretense.ini文件,将如下键值对修改:

cs.timeout=-1

 

 

Webcenter sites insite:calltemplate 标签之slotname 属性

在使用Webcenter sites在线编辑功能时,我们会常用到insite编辑页面中某一区块的内容布局(选择Pagelet Templates),如下图所示:



但是保存后,不知道大家有没有留意,Pagelet Templates与Page Templates之间,是如何保存起了关联关系呢?

经过实践发现,关联关系在slotname属性指定后,则是通过slotname属性关联起来的,如果没有指定slotname属性,则需要指定tname属性。

灵活运用:如果有多个页面的小区块的Pagelet Templates模板是需要同步的,我们则指定slotname属性为同一值,这样的话就可以做到,编辑一处,全局改变。提高工作效率。

Webcenter content批量下载组件

安装组件

下载地址

访问webcenter content管理服务器界面

http://127.0.0.1:16200/cs/idcplg/cs-admin/pxs?IdcService=GET_ROOT_IDC_ADMIN_PAGE

注:此组件依赖于ContentBasket组件,所以在安装装先启用ContentBasket组件。

进入组件管理器,勾选ContentBasket组件。


 

在安装之前,需要修改组件的一个环境变量配制文件:可以使用winRAR等压缩软件打开组件压缩包,修改下图文件:


改成你UCM所在domain的路径:修改完成后替换掉zip包该文件,

第二个环境变量23的意思是,每天晚上的23点,会将批量下载所产生的临时文件清空,为服务器节省空间。


 

选择组件管理器à高级组件管理器


选择组件zip包,然后点击安装


安装成功后启用组件,再重启UCM所在的weblogic server


重启完成后进入管理操作
à[发布静态, 字符串和动态文件] 



 

使用效果:

在搜索结果页面则会出现下载菜单:


 

下载的zip文件中则会只包含选择过的文件:


 

RIDC调用:

服务名称:BATCH_DOWNLOAD_AS_ZIP

传入参数:SelectedDocs(文档dDocName属性,多个则以逗号分开)

返回结果:在返回DataBinder实例中拿Local参数zipFilePath的值,会返回一个zip文件的相对路径。

Jdeveloper 11G 使用

  1. Edit菜单栏中的复制路径及增强粘贴


    1. 我们会发现有一个Copy Path功能,为什么会有这个功能呢。因为在Jdeveloper中是不支持在项目结构视图中对文件进行复制、拖动等操作的,如果你需要将项目中某个文件进行复制操作的话,应该是先将其文件的路径拷贝出来,然后我们可以进入相应的文件夹下进行复制等操作
    2. 还有一个功能是Extended Paste加强粘贴功能,他允许你同时复制多块区域,然后在使用Extended Paster 的时候进行选择粘贴。
  2. Build菜单栏中的一些编译操作


    1. 通过Make All 可以将应用程序进行重新编译
    2. Clean All则反之,是清除上次编译的class文件
  3. Tools菜单栏最下端的偏好设置


    1. 设置编码格式


    2. 设置文件类型打开方式,以此来加快文件打开方式


    3. 快捷键的修改


 

  1. 将页面恢复出场设置


  2. 帮助文档查看


  3. 查看组件API文档


  4. 查看Java类API文档


     

  5. 搜索相关(将图片放大看)

Jdeveloper 11G 常用快捷键

  1. 代码的自动提示(ctrl+shift+space),效果如下图所示:


  2. 自动导包(Alt+Enter),效果图如下:


  3. 代码的跟踪导航(按住ctrl键不放直到如下图所示)则可跟踪进如下方法中


    再按(Alt+向左方向键)则可返回,按(Alt+向右方向键)则又可进入所跟踪的方法里

  4. 代码对齐(Alt+Shift+f)
  5. 跟踪文件在项目结构视图中的位置(Alt+Home)
  6. Java类搜索(ctrl+减号)


  7. Java类方法结构图示(ctrl+shift+`)


  8. 设置文档标记(按Alt+Shift+1~9进行标记),然后再通过ctrl+1~9来定位


    注:帮助文档上说是alt+1~9来定位,但是实际上不是。

  9. 复制路径(ctrl+shift+c)
  10. 增加粘贴(ctrl+shift+v)
  11. 运行项目(正常运行F11,DEBUGctrl+F9)
  12. 代码自动补全
    1. 自动补全方法(ctrl+shift+enter)

      在代码区中输入if或者for,然后按快捷键,刚会出现下图所示效果



    2. 自动实例实例

      默认为ctrl+space,但与windows系统中切换中英文输入法相冲突,可以将其在偏好设置中修改。

    3. 自动包含代码(alt+shift+z)



  13. 弹出当前打开文件列表(ctrl+等号)


  14. 打开文件之间的切换
    1. 向上(alt+shift+Tab)
    2. 向下(alt+Tab)