如何使用WPF的概要分析Word格式文档下载.docx
《如何使用WPF的概要分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《如何使用WPF的概要分析Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
名称
定义
概要文件集
是概要文件的集合。
概要文件
是一套参数,可以改变生成的应用程序的行为。
根据用户的身分或者其他的上下文信息(例如语言)给构建器提供不同的参数值
概要文件条目
代表应用程序的一个输入变量。
概要文件条目值
概要文件中输入条目的值。
概要分析过程
概要分析过程包括下列一般任务:
1.创建概要分析集。
将使用未包含任何概要分析文件条目的缺省概要分析文件(名为Default)创建概要分析集。
2.将一个或多个概要分析文件条目添加至概要分析集。
3.将一个或多个概要分析文件添加至概要分析集。
在添加每个概要分析文件时,还会对该概要分析文件应用缺省概要分析文件条目。
4.通过更改每个概要分析文件的一个或多个概要分析文件条目值来定制该概要分析文件。
5.通过从特定概要分析集中选择概要分析文件条目,对构建器调用编辑器中的构建器调用输入进行概要分析。
6.通过应用各种概要分析文件组合来预览对模型进行概要分析的效果。
概要分析过程通常是以迭代方式进行的;
可随时执行这些步骤中的任何一个,并且可能多次执行,以便在执行时能够对portlet或应用程序的变化做出细微调整。
概要分析类型
PortletFactory提供了两种概要技术选择:
概要文件选择和概要值定制。
1、概要文件选择
概要文件选择可以用两种方式实现
a)一种方式是基于预定义的概要文件选择逻辑在重新生成应用程序决定选用那个概要文件。
这个选择概要文件的过程是使用概要文件选择处理器在幕后编程实现的。
本文稍后将详细介绍概要文件选择处理器。
b)另外一种方式是使用Portlet定制机制将概要文件的选择过程暴露给最终用户,例如,用户在Portlet编辑和配置模式下自行选择概要文件。
2、概要值定制
概要值定制也有两种实现方式:
a)概要值定制最广泛的用例是让最终用户能够在运行时显示指定概要值,这些概要值用来重新生成应用程序。
背后的概念与WebSpherePortal中编辑和配置模式下定制Portlet是一样的。
PortletFactory允许在Portal中为Portlet创建编辑页或配置页面,用户可以在这里更改用户界面等。
b)PortletFactory也提供了另外一种机制叫做值设置器,让概要值的定制能通过编程执行。
值设置器的工作方式与概要文件选择处理器相似,它允许开发者设置一些预定义的逻辑在重新生成应用程序的阶段设置个别概要文件值。
PortletFactory附带有一些默认的值设置器。
当一个概要文件集定义了值设置器,值设置器的选择将会覆盖概要文件选择处理器的选择。
值设置器与概要文件选择处理器的最主要区别是,值设置器允许您通过编程创建概要文件值,与选择包含静态值的预定义概要文件恰好相反。
概要文件选择处理器
到现在为止,我们了解到,一个基于概要的应用程序在重新生成的阶段从不同的概要文件中取值,创建不同的应用程序行为。
那么,选择合适概要文件和设置合适值的工作在幕后究竟是如何进行的呢?
PortletFactory有一种被叫作概要文件选择器的机制。
概要文件选择器用来定义选择概要文件或设置概要文件值的逻辑。
每个概要文件集都必须关联到一个选择器。
在不同条件下,为了给构建器传送不同的参数,我们使用概要文件选择处理器进行条件的过滤使得相应构建器能够得到相应的正确参数进行执行。
在概要分析管理器的"
SelectHandler"
编辑器中,可设置要用于当前概要分析集的概要文件选择处理器类。
您也可以声明一个为概要分析集中的概要分析值动态指定数据的概要文件选择处理器类。
WebSpherePortletFactory包括下列概要文件选择处理器:
∙显式处理程序:
将请求与当前概要分析集中的缺省概要分析相关联,只能手工选择概要文件。
通常在开发期间使用,以便您可预览应用了不同概要分析的模型。
可以通过使用已应用的概要文件视图以指定要应用于模型的概要文件列表,来执行概要分析。
如下图:
∙文件段处理程序:
根据XML文件中的用户/概要分析映射将硬编码用户与概要分析相关联。
使用此处理程序需要在处理程序配置文件中指明XML文件的位置:
<
Selectionclass="
com.bowstreet.profiles.FileSegmentSelectionHandler"
>
Properties>
Propertyname="
FileName"
factory/profile_segment_data/segments.xml
<
/Property>
/Properties>
/Selection>
并写明每个User对应的概要文件名称:
segments>
segmentname="
Gold"
useruserID="
tom"
/>
/segment>
Silver"
mike"
/segments>
∙J2EE角色处理程序:
将用户与J2EE角色相关联,并且返回与该角色相关联的概要分析。
可以指定J2EE角色与概要文件的关联,其中"
AllAuthenticatedUsers"
等角色都是J2EEApplicationServer声明的角色,如下图:
∙基于LDAP组的选择处理程序:
将用户与LDAP组相关联,并且查询概要分析集以返回与指定的LDAP组相关联的概要分析。
使用此处理程序需要在处理程序配置文件中指明LDAPServer的地址,用户名,密码以及相关用户和组的信息:
!
--PropertiesforconnectingtotheLDAPserver-->
java.naming.provider.url"
ldap:
//localhost:
389
java.naming.factory.initial"
com.sun.jndi.ldap.LdapCtxFactory<
bowstreet.ldap.root"
cn=root<
--Propertiesforfindingauserdnbasedonusername-->
bowstreet.ldap.user.root"
o=IBM<
bowstreet.ldap.user.objectClass"
person
bowstreet.ldap.user.namingAttribute"
uid
--Propertiesfordoinggroupmembershipsearches-->
bowstreet.ldap.group.root"
bowstreet.ldap.group.objectClass"
groupofuniquenames
bowstreet.ldap.group.memberAttribute"
uniquemember<
/Property>
--Accountusedbythehandlertoauthenticatetotheserver,
todotheabovelookupswith-->
bowstreet.ldap.account.userdn"
--Obscuredpasswordfortheaboveaccount-->
--Use"
obscuremypassword"
inWEB-INF/bin/toobscureacleartextpassword-->
bowstreet.ldap.account.userpassword"
0DcSRaf/gYrPDcAWQ339afBvJXs=<
--Howlong(inseconds)dowetrustthelistof
groupswestoreintheuser'
ssessionafterlookup-->
bowstreet.ldap.cache.timeout"
3600<
并指明每个Group对应的概要文件名称:
∙语言环境选择处理程序:
将用户与语言环境段相关联,并且返回与该语言环境名称相关联的概要分析。
此处理器主要与LocalizedResource构建器结合使用。
∙WPS执行方式处理程序:
将请求与概要分析相关联,而该概要分析与"
独立"
方式或"
在门户网站中运行"
方式相关联。
可使用此选择处理程序来执行基于执行方式的不同代码。
此处理程序用于创建模型,这些模型根据其运行方式是独立还是WebSpherePortal而变化。
如果模型当前以WPS中的portlet形式运行,此处理程序则返回"
Portal"
,如果独立运行,则返回"
Standalone"
。
要使用此模型,请创建一个概要文件集,它具有两个概要文件,名为"
和"
选择"
WPS执行方式处理程序"
作为选择处理程序。
在模型中,您可以对此概要文件集的构建器输入进行概要分析。
例如,您可以使运行模型以独立方式运行时,禁用仅限于门户网站的功能(如调用门户网站的API)。
这对于开发/测试非常有用,以便您可以独立运行模型,并且在WebSpherePortal环境中运行时具有额外功能。
∙WPS组处理程序:
将请求与用户所属的WebSpherePortal组相关联,并且返回与该组相关联的概要分析。
概要文件选择处理器的运行机制:
要根据用户所属的WebSpherePortal组对portlet进行概要分析,请执行以下操作:
1.在WebSpherePortal管理服务器中:
为门户网站应用程序创建有些用户和组。
2.在设计器中:
创建模型、概要文件集和概要文件。
3.在设计器中:
概要分析驱使portlet变化的构建器调用输入。
4.在设计器的概要文件管理器中:
使用选择处理程序编辑器将概要文件集的选择处理程序设置为WPS组分段处理程序。
5.在设计器的概要文件管理器中:
在管理概要文件编辑器中,编辑概要文件并使用添加外部按钮指定组名。
必须指定精确指定WebSphere组名。
6.在WebSpherePortal管理服务器中:
为每个WebSphere组的每个portlet设置权限。
7.在WebSpherePortal管理服务器中:
通过以一个用户身份登录并访问已概要分析的portlet来测试概要分析。
实现运行时定制概要分析Demo
我们将使用WPF开发一个简单的Portlet,让用户在编辑模式下选择不同的概要文件,然后在视图模式下显示不同的文本
1、打开WPF设计器,点击Flie>
New>
WebSpherePortletFactory项目。
将新项目命名为ProfileApp.
2、点击Next。
将所有功能部件都去掉,这是因为这个Portlet比较简单,没有用到扩展功能部件集,将没有用到的功能部件集去掉可以减小最终war包的大小。
3、点击Next。
在项目服务器目标面板上,指定测试服务器的类型、安装目录等信息。
4、点击Next直到出现WebSpherePortletWAR设置面板。
指定Portlet创建类型、WAR包目录等。
5、点击Next直到出现摘要和重要细节面板。
点击Finish完成项目创建工作。
当项目创建完成后,我们开始创建模型。
6、在设计器中,选择File>
WebSpherePortletFactory模型。
在选择项目面板中指定ProfileApp。
7、在选择模型面板中选择MainandPage然后点击下一步。
8、选择Simplepage,点击下一步。
9、输入ProfileTest作为模型名称,点击
Finish完成模型创建。
10、在设计器左下角的outline视图中,双击名称为page1的页面构建器,将页面的内容换成下面的HTML代码片段。
点击确定,然后保存。
html>
head>
title>
ProfileTestPage<
/title>
/head>
body>
b>
RuntimeProfileSelection<
/b>
br>
tableborder=1>
tr>
td>
ProfileselectedfromPortaledit/cnofigmode<
/td>
spanname="
runtime_profile_text"
/tr>
/table>
DynamicProfileSelection<
ProfileselectedbyWPSgroupinfo<
dynamic_profile_text"
Profileselectedbycustomprofileselectionhandler<
custom_profile_text"
/body>
/html>
11、点击
按钮,添加一个Text构建器。
12、在构建器调用编辑器中输入如下值:
i.名称:
RuntimeProfileText
ii.页面:
page1
iii.标记:
runtime_profile_text
13、点击文本输入框旁边的
按钮。
一个概要输入窗口弹出来,你可以在这创建新的概要文件。
14、点击创建概要文件按钮创建一个新的概要文件,命名为profile1,点击OK。
15、同上一步,再创建一个概要文件profile2。
16、改变概要文件的值,如下图所示,点击OK,关闭窗口。
文本输入框现在已经能够进行概要分析了。
17、最后点击OK保存构建器。
18、添加一个Portlet适配器构建器,输入如下值。
然后保存。
a.名称:
ProfileTestPortlet
b.Portlet标题:
c.选择在“编辑”中显示概要文件名称
19、选择File>
Save保存整个项目。
20、重构PortletWar包。
右击ProfileApp项目名称,选择重建WAR>
重建PortletWAR。
21、用管理员身份登录Portal服务器,将项目生成的WAR文件用WEB模块安装进去,新建一个测试页面,将ProfileTestPortlet放在上面。
访问页面,可以看到,运行时概要选择文本框中的初始值为
22、进入编辑模式,选择概要文件profile1,点击OK返回。
23、可以看到,出现了”Thisistextfromruntimeprofileone”文本。
24、再次进入编辑模式,选择概要文件profile2,点击OK返回。
25、如图所示,文本变成了”Thisistextfromruntimeprofiletwo”。
实现基于Portal_用户组的动态概要分析的Demo
1、首先,在WebSpherePortal管理服务器中:
a)在Portal服务器上创建两个组和两个用户:
●Group:
CSRGroup,CustomerGroup
●User:
csr1,customer1
b)将用户csr1增加到CSRGroup组、customer1增加到CustomerGroup组
c)然后,将“所有已认证门户网站用户”添加给ProfileTestPortlet的用户角色。
2、在前面的ProfileTest模型中添加另一个文本构建器,输入如下值,点击确定,最后保存项目。
a)名称:
DynamicProfileText
b)页面:
c)标记:
dynamic_profile_text
d)输入完后,如图所示
3、点击File>
New>
WebSpherePortletFactory概要信息集,创建一个新的概要文件集。
4、在新建概要文件集面板中输入如下值。
a)项目:
ProfileApp
b)名称:
WPSGroupDynamicps
c)描述:
TheprofilessetbasedonWebSpherePortalGroupInfo
5、点击选择处理程序标签,在概要选择程序下拉列表框中选择WPSGroupSegmentHandler,点击OK,然后保存项目。
6、返回到构建器调用编辑器中,点击DynamicProfileText文本构建器中,文本框旁边的概要按钮。
7、在弹出的概要文件输入框中,选中WPSGroupDynamicps概要文件集。
8、按以下步骤创建新的概要文件:
a)点击创建概要文件按钮
b)输入dynamicprofile1作为概要文件名
c)在Advance选项部分,点击AddExternal,然后输入CSRGroup,点击OK。
这里CSRGroup就是我们前面在Portal服务器上创建的名字。
9、在上面的步骤创建另外一个概要文件dynamicprofile2,添加外部关联,输入另外一个Portal用户组名CustomerGroup。
10、指定两个概要文件的值,如下图所示,点击OK关闭概要输入窗口。
11、保存项目,重新构建PortletWAR包。
12、进入PortalServer管理界面,更新WPF-ProfileApp.war包。
13、使用csr1重新登录门户,访问ProfileTestPortlet。
14、使用customer1重新登录门户,访问ProfileTestPortlet
15、可以看到根据用户所属组的不同,Portlet显示不同的值。
实现定制概要文件选择处理器的Demo
WPF中概要分析的关键就是如何在运行时选择合适的概要文件,通过前面的Demo,我们了解到,对于运行时定制概要分析,用户手工在编辑和配置模式下选择概要文件,而对于动态概要分析,您需要指定在运行时动态选择概要文件的规则,比如,将概要的选择与外部Portal用户组相关联。
如果您想通过定义概要文件选择规则来扩展WPF的概要分析能力.,您需要写一个选择处理类来实现您自己的选择算法。
本文接下来实现一个自定义选择处理器的Demo,我们将创建一个星期处理器,它会根据每周的星期来选择概要文件。
我们仍然在前面创建的项目ProfileApp中继续。
1、创建一个dayhandler.xml文件,放在ProfileApp项目的WEB-IFN\config\selection_handlers目录下。
2、Dayhandler.xml文件的内容如下。
Handlername="
DayHandler"
Description>
Handlerthatreturns"
Monday"
"
Tuesday"
Wednesday"
Thursday"
"
Friday"
Saturday"
Sunday"
profile<
/Description>
com.smartdot.profiles.DaySelectionHandler"
SegmentListclass="
/SegmentList>
/Handler>
注意,此处Selection标记中的类名称要与我们下一步创建的处理器类名相同。
3、在WEB-INF\work\source目录下创建一个包com.smartdot.profiles,然后在新建的包下创建一个类DaySelectionHandler.java。
4、打开DaySelectionHandler.java文件,编辑如下。
packagecom.smartdot.profiles;
importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.GregorianCalendar;
importjava.util.Iterator;
importjava.uti