友好的URL访问:

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

Mobile的支持

Segment界面的美化

与Webcenter Content的集成


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

前言:

一个站点完美的用户体验往往体现在各种细节当,友好的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)

0 评论/通过:

问题描述:

在使用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)表中,则将该数据删除,这样,之前不能批准的资产就可以批准成功了。


 

背景:

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表单中上传,完成创建。

0 评论/通过:

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

最近项目中遇到了这样的情况,需要将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属性改成无端口号的则可。

产生场景:

当使用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属性为同一值,这样的话就可以做到,编辑一处,全局改变。提高工作效率。

0 评论/通过:

最完整的在OEL上安装Oracle Database的文章,装OEL为了什么,不就为了方便么。

ORACLE-发布帖子BASE – Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6