NCV6开发平台技术红皮书文档格式.docx

上传人:b****7 文档编号:21923002 上传时间:2023-02-01 格式:DOCX 页数:53 大小:1.73MB
下载 相关 举报
NCV6开发平台技术红皮书文档格式.docx_第1页
第1页 / 共53页
NCV6开发平台技术红皮书文档格式.docx_第2页
第2页 / 共53页
NCV6开发平台技术红皮书文档格式.docx_第3页
第3页 / 共53页
NCV6开发平台技术红皮书文档格式.docx_第4页
第4页 / 共53页
NCV6开发平台技术红皮书文档格式.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

NCV6开发平台技术红皮书文档格式.docx

《NCV6开发平台技术红皮书文档格式.docx》由会员分享,可在线阅读,更多相关《NCV6开发平台技术红皮书文档格式.docx(53页珍藏版)》请在冰豆网上搜索。

NCV6开发平台技术红皮书文档格式.docx

5.6.1创建Portlet事件28

5.6.2触发Portlet事件28

5.6.3响应Portlet事件29

5.6.4Portlet事件输出29

5.7Portlet参数30

5.8Portlet参数编辑器30

5.9Portlet发布31

5.10.1发布portlet31

5.10.2更新发布的portlet32

第六章主题开发34

6.1概述35

6.2页面样式35

6.3布局样式35

6.4Portlet样式36

6.5皮肤37

第七章门户高级功能38

7.1登录前后处理,指定登录后页面39

7.2登录链39

7.3CA登录41

7.4域认证42

7.5第三方登录42

7.6门户扩展点43

7.7门户设置45

7.8门户FreeMarker扩展46

7.9门户模块配置47

7.10门户统一身份认证49

第一章Portal简介

UAPPortal是基于JSR286规范而实现的一套J2EE技术体系架构的Portal。

它构建于UAP平台之上,提供了灵活而丰富的个性化和管理定制功能。

UAPPortal允许多种安全认证方式和自选第三方系统用户来源,采取了基于角色访问控制(RBAC)的权限模型。

并提供了完善和通用的第三方系统集成框架和单点登录框架,UAPPortal发版默认集成NC、IUFO、BO、自定义查询报表应用,实施SSO比商业Portal简单易用。

它提供的Portal管理功能,允许管理员在运行态对Portal进行定制,而无需重启甚至编码。

同时,内建的换肤机制使得实现自定义皮肤非常简单。

UAPPortal提供了引入了一套开发工具,,使得Portal开发非常简单。

Portal页面元素截图介绍如下:

上图即是门户的一个布局页面,页面中红色方框区域就是组成该布局的各个portlet,每个portlet可以自由定制自己的皮肤、样式和内容。

蓝色框区域是其他布局页面。

第二章Portal架构图

第三章预制Portlet

本章内容概要:

●框架Portlet

●TriggerIframePortlet与MonitorIframePortlet

●FreeMarkerPortlet

●任务Portlet

●菜单Portlet

3.1框架Portlet

框架Portlet是一通用简单集成Portlet,可用于管理员为所有用户定制内容。

管理员可定制此Portlet完成对一现存站点的引入,可以定义任意数量。

比如:

将常用站点http:

//ufpark/PortalDefault.aspx引入Portal的一个页签中,只需要做下面几步:

1)系统管理>

应用平台管理>

门户配置>

布局管理中选择新建系统布局,选择框架Portlet并拖入,点击保存。

示意图如下:

2)在布局管理中刷新并展开刚创建的布局,找到刚刚加入的框架portlet,设置其链接地址属性,指明url地址。

对于一个布局中只有一个框架portlet的情况,设置高度为0,这样IFramePortlet的高度会自动调整来适应页面的高度,设置完成后保存。

3)需浏览此布局的用户注销重新登陆,即可看到此布局。

该Portlet可以配置的个性化信息如下:

3.1.1if_height

说明

设置ifreame的高度

可选值

0:

适应页面大小,撑满页面

-1:

适应内容高度

其它:

指定像素的高度

举例

<

preference>

name>

if_height<

/name>

<

value>

-1<

/value>

read-only>

false<

/read-only>

/preference>

3.1.2if_src

指定ifreame内容的url

取值方式

方式1:

从公共参数里取(如Url传参的形式);

方式2:

从属性里取;

注:

公共参数优先级较高

if_src<

description>

链接地址<

/description>

!

[CDATA[/portal/pages/view.jsp]]>

使用Url传参的形式,举例截图如下:

3.1.3if_width

指定iframe的宽度

百分比:

如100%

if_width<

100%<

开发过程:

在Portlet上点击右键,从模板新建Portlet,选择IframePortlet,输入id,名称及嵌入的URL即可。

在编辑器右边属性栏中可修改portlet对应的类、描述等信息。

在下方模型视图中配置此portlet的具体属性。

3.2TriggerIframePortlet与MonitorIframePortlet

TriggerIframePortlet是可以触发switchIframeContentEvent事件的框架Portlet,它继承自框架Portlet。

该portlet会触发switchIframeContentEvent事件,监听switchIframeContentEvent的portlet会响应该事件。

常见的监听Portlet有MonitorIFramePortlet及其子类。

使用举例:

通过该portlet可以设置响应switchIframeContentEvent事件的url。

示例代码如下:

document.getContainer().doAction(url)

MonitorIframePortlet是监听switchIframeContentEvent事件的IframePortlet,常与TriggerIframePortlet共同使用。

当是自定义触发的Portlet时应将switchIframeContentEvent加入support-publish-event,不建议在一个Page中引用两个MonitorIframePortlet。

3.3FreeMarkerPortlet

套用FreeMarker模板的Portlet,该portlet主要用于解析FTL文件路径并把ftl文件内容渲染成Html。

3.3.1继承Portlet

(1)创建一个类继承自FreeMarkerPortlet,代码示例如:

(2)在该类所在包(nc.test)下创建一个同名的ftl文件FreeMarkerPortlet.ftl

3.3.2编辑Portlet

(1)在Portlets节点上点击鼠标右键,可新建portlet分类或直接新建portlet。

(2)输入Portlet的id及name,点击OK按钮。

新建并打开portlet编辑器。

(3)在编辑器右边属性栏中可修改portlet对应的类设置为刚才新建的类nc.test.FreeMarkerPortlet即可。

3.4任务Portlet

任务portlet主要包括任务列表的查询、单据类型、任务处理的URL、显示字段的获取、和指令的执行。

3.4.1查询任务列表

查询任务列表:

/**

*查询任务列表.

*/

WfmTaskVO[]qryTaskList(TaskQryParamparam,PaginationInfopinfo);

参数说明:

param任务查询参数,包括状态、系统、单据类型、关键字、当前用户等。

Pinfo:

分页信息

返回:

任务列表

3.4.2获取单据类型

获得单据类型:

*获得单据类型

WfmFlwTypeVO[]getBillTypes();

3.4.3获取任务处理URL

获得任务处理的URL:

*获得任务处理URL

TaskProcessUIgetTaskProcessUrl(Stringpk_task);

pk_task任务的主键

任务UI界面

3.4.4批量任务更新

批量任务更新:

*批量任务执行

StringdoMutiTaskProcess(String[]pk_task);

通过多个任务的id进行多个任务更新操作。

3.4.5显示获取字段

显示字段的获取:

*获取显示的字段

Map<

String,String>

getVisableColumn(Stringbilltype);

通过单据类型查询需要显示的字段。

3.4.6执行命令

执行命令:

*执行命令

voiddoCmd(Stringcmd,Stringpk);

根据不同的指令走相应的url,如根据是“便签”或是“催办”,分别执行“/portal/pt/task/scratchpad”和“/portal/app/mockapp/urgencyView”的链接。

3.5菜单Portlet

3.5.1我的功能Portlet

该portlet主要功能是显示菜单组,分为绑定菜单和动态集成菜单。

3.5.1.1绑定菜单

绑定菜单即为布局绑定一个菜单,有“系统管理”权限的用户登录,在“门户配置”的“布局管理”模块,选择一个布局,点击“高级设置”即可打开布局菜单绑定页面,选择一个“绑定连接组”即可完成菜单绑定,示意图如下:

3.5.1.2动态集成菜单

动态集成菜单主要是通过虚菜单接口在页面的绑定,具体实现类去完成菜单的动态的生成。

如NC系统的消息通过虚菜单的实现进行动态抓取,并在我的功能区进行显示。

虚菜单接口IVirtualMenuProvider说明如下:

//获取菜单项

List<

MenuItemAdapterVO>

getMenuItems();

//消息状态数目

IntegergetStat();

3.5.2浮动菜单

浮动菜单Portlet主要是显示界面上Portal页面绑定的菜单。

开发方式:

(1)系统管理>

应用平台管理>

布局管理中打开布局设计器。

拖放一个浮动菜单Portlet.选中该Portlet.设置样式为浮动。

(2)选中步骤1创建的布局.点高级设置.选择一个绑定菜单。

3.5.3页签Portlet

页签Portlet是门户提供的一种菜单展现样式.以Tab页的形式来展示菜单的内容。

布局管理中打开布局设计器.拖放一个页签Portlet。

(2)展开步骤1创建的布局,选择页签Portlet,点高级设置.选择一个菜单。

页签Portlet可以设置高度宽度。

3.5.4OutLook导航Portlet

Outlook导航Portlet是门户提供的一种菜单展现样式。

以OutLook导航的形式来展示菜单的内容。

拖放一个OutLook导航Portlet。

(2)拖入一个布局,选中;

点击样式下拉框,选择”框架布局”并保存。

(3)展开步骤1创建的布局,选择页签Portlet,点高级设置.选择一个菜单;

也可以在此设置OutLook导航Portlet的高度与宽度。

注意:

为了实现在页签内打开OutLook导航Portlet选中的菜单项,需要在当前页面中的一个布局样式设置为框架布局。

该布局与正常布局一样,可以容纳Portlet。

但是在收到OutLook的请求时会将布局内容切换到菜单项界面。

第四章Portal界面

●概念

●创建Portal界面

●布局设计

●布局分配

●多级布局

●绑定菜单

4.1概念

UAPPortal使用Pml界面组件结构标记语言对页面进行描述。

Pml包括布局(Layout)对象及Portlet对象。

布局可嵌套布局和Portlet,从而组成相对复杂的界面。

一个页面中的portlet不能重复。

4.2创建Portal界面

在“Portal页面”节点上点击鼠标右键新建page页面。

输入id及tilte,点击ok按钮,新建Page完成,并打开page编辑器。

在page编辑器中进行page布局配置。

4.3布局设计

1

2

3

4.3.1布局排序

布局排序是指在布局列表中“是否主页”的那一列,是主页的分组会按照优先级排序,不是主页的分组也会按照优先级进行排序。

4.3.2布局Icon

4.3.2.1设置布局Icon

布局Icon是为已创建的布局设置绑定的图标,示意图如下:

4.3.2.2获取图标

通过步骤1设定好布局的菜单和图标后,可以通过导航栏菜单项获取其图标。

示意代码如下:

获取页签

Page[]myPages=PortalPageDataWrap.getUserPages();

PageMenumenu=PortalPageDataWrap.getUserMenu(myPages);

String,Object>

root=newHashMap<

();

Root.put(“USER_MENU”,MENU);

Ftl文件

#assignmenuitems=USER_MENU.items>

获取图标

imgsrc="

${menuitem.icon}"

/>

4.3.3布局禁用

布局禁用是停止用户使用该布局,通过“布局管理”的“高级设置”,把“是否启用”开关关闭即可。

4.3.4布局复制粘贴

布局的复制和粘贴是方便布局快速高效的重用,通过选中要重用的布局点击“复制”按钮即可获得该布局的一份拷贝,选择要放入的组织后点击“粘贴”按钮即可把拷贝的布局复制到目标组织下。

4.4绑定菜单

绑定菜单是为布局设置菜单,设置菜单后可以直接通过菜单使用该布局,绑定示意图如下:

第五章Portlet开发

●Portlet容器

●Portlet分类

●Portlet视图

●Portlet资源

●Portlet动作

●Portlet事件

●Portlet参数

●Portlet参数编辑器

●Portlet权限分配

●Portlet发布

5.1Portlet容器

5.1.1获得Portlet容器

场景1:

JSP页面中

script>

getContainer(‘#<

%=indowed%>

’);

/script>

场景2:

IframePortlet页面中

document.getContainer();

注意:

(1)在Iframe中获得容器,必须保证iframe页面与Portal在同一个域下。

(2)要判断Iframe中是否已经注入了此函数。

5.1.2使用Portlet容器

Portlet容器提供的函数:

方法

名称

必须

参数作用

返回值

备注

createPart*

title

标题

新创建的链接块

在Portlet窗口上创建一个链接块

href

链接

createSep*

segment

分隔符

新创建的块

在Portlet窗口上创建一个分割块

createBlankPart*

-

在Portlet窗口上创建一个空白块

setTitle*

标题对象

设置标题

setContent*

content

内容

内容对象

设置内容

setExposed*

当前容器

隐藏外框

setUnExposed*

恢复外框

doMax*

窗口最大化

doReSize*

窗口复原

showTips*

显示提示框

hideTips*

隐藏提示框

doView

切换到查看模式

doEdit

切换到编辑模式

doHelp

切换到帮助模式

doRefresh

timesamp

时间间隔

设置刷Portlet新周期

doAction

调用Portlet默认事件ProcessAction

frameUrl

链接地址

调用Portlet默认的事件,并传递一个frameUrl参数

name

事件名称

调用指定的Portlet动作

param

参数列表

getOuter

最外层的布局

获得最外层的布局

getRow

所在列

获得所在的列

标有*号的方法可以重载。

5.2Portlet分类

Portlet分类是为了让Portlet更容易查找,在Portlets节点上点击鼠标右键选择“新建Portlet分类”,弹出新建Portlet分类对话框。

输入ID、text、i18nName后点击OK按钮,Portlet分类创建成功。

在建好的Portlet分类上点击鼠标右键。

可以在分类中新建Portlet,或编辑、删除当前分类。

5.3Portlet视图

UAPPortal6.0支持“查看”、“编辑”、“帮助”三种标准视图,有关视图的信息,请参考JSR286规范。

UAPPortal6.0支持“最大化”、“正常”、“最小化”三种模式,有关模式的信息,请参考JSR286规范。

5.4Portlet资源

UAPPortal6.0支持Portlet资源请求,详细信息请参考JSR286规范。

示例代码:

//使用Tag获取资源

portlet:

resourceURLid="

/images/blackpoint.gif"

"

>

5.5Portlet动作

Portlet动作是Portlet前后台交互的一种方式。

可以通过Tag、JavaScript来调用。

示例代码:

//使用ProcessActionAnnotation定义一个动作,名称是“myaction1”

@ProcessAction(name="

myaction1"

publicvoidmyaction1(ActionRequestrequest,ActionResponseresponse){

….

}

//Tag调用动作

actionURLname=”myaction1”var="

url"

/portlet:

actionURL>

ahref="

%=url%>

Help<

/a>

//JavaScript调用动作

getContainer('

#<

%=windowId%>

'

).doAction(”myaction1”,{});

5.6Portlet事件

4

5

6

5.6.1创建Portlet事件

Portlet事件是JSR286中新引入的一个特性,规范了Portlet间的交互。

Portlet事件是松耦合的,在一个页面中可以没有接收者或者多个接收者。

通过Portal定义中的“事件”节点对portlet相关的事件进行定义。

事件编辑器如下:

值类型必须是可被JAXB序列化的对象

5.6.2触发Portlet事件

a)在Portlet编辑器模型视图中选择SupportedPublishingEvent选项卡,选中要触发的事件。

b)在Portlet类中触发事件

myaction2"

publicvoidmyaction2(ActionRequestrequest,ActionResponseresponse){

//触发事件.

response.setEvent("

myevent1"

"

helloportal!

);

5.6.3响应Portlet事件

a)在Portlet编辑器模型视图中选择SupportedProcessingEvent选项卡,选中要响应的事件。

b)在Portlet类中响应事件

*处理事件

@ProcessEvent(name="

publicvoidmyevent1(EventRequestrequest,EventResponseresponse){

Stringval

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1