如何使用WPF的概要分析.pdf

上传人:g****s 文档编号:77344963 上传时间:2023-03-14 格式:PDF 页数:54 大小:2.73MB
返回 下载 相关 举报
如何使用WPF的概要分析.pdf_第1页
第1页 / 共54页
如何使用WPF的概要分析.pdf_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《如何使用WPF的概要分析.pdf》由会员分享,可在线阅读,更多相关《如何使用WPF的概要分析.pdf(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、可编辑 word,供参考版!目 录 目 录.1 WPF 概要分析简介.2 什么是概要分析.2 术语和定义.3 概要分析过程.4 概要分析类型.5 概要文件选择处理器.6 实现运行时定制概要分析 Demo.15 实现基于 Portal 用户组的动态概要分析的 Demo.30 企业应用事业部产品发展部 如何使用 WPF 中的概要分析 修订日期:2007-12-12 阅读范围:企业应用事业部产品发展部全体、公司相关负责人 撰写人:石伟伟 北京慧点科技开发有限公司 可编辑 word,供参考版!实现定制概要文件选择处理器的 Demo.41 小结.54 WPF 概要分析简介 WPF 开发中最为强大的一个方

2、面是,可以将模型与概要分析配合使用,通过将预定义的不同的参数集与相同的代码库结合,生成相同应用程序的不同版本。与传统开发比较,使用构建器创建的 portlet 和应用程序有两个优点:构建器可以自动生成代码和执行开发任务。构建器将根据它们的输入来更改它们的行为及生成的 Web 应用程序。什么是概要分析 WPF 概要分析指的是定义概要分析文件及概要分析条目值的过程,任何已概要分析的构建器输入都可以从中获取它们的值,它包含两个步骤:1.创建或管理一个概要文件集、概要文件、概要文件条目、概要文件条目值(相关概念见下面介绍)。2.将概要应用于构建器的输入。使用概要分析,我们能为不同的用户、客户或情况,使

3、用相同的模型可编辑 word,供参考版!生成不同的应用程序或 Portlet。基于概要分析生成应用程序的过程图1 所示。图 1:基于概要的应用程序生成过程 术语和定义 WPF 中概要分析的相关概念:名称 定义 概要文件集 是概要文件的集合。概要文件 是一套参数,可以改变生成的应用程序的行为。根据用户的身分或者其他的上下文信息(例如语可编辑 word,供参考版!言)给构建器提供不同的参数值 概要文件条目 代表应用程序的一个输入变量。概要文件条目值 概要文件中输入条目的值。概要分析过程 概要分析过程包括下列一般任务:1.创建概要分析集。将使用未包含任何概要分析文件条目的缺省概要分析文件(名为 De

4、fault)创建概要分析集。2.将一个或多个概要分析文件条目添加至概要分析集。3.将一个或多个概要分析文件添加至概要分析集。在添加每个概要分析文件时,还会对该概要分析文件应用缺省概要分析文件条目。4.通过更改每个概要分析文件的一个或多个概要分析文件条目值来定制该概要分析文件。5.通过从特定概要分析集中选择概要分析文件条目,对构建器调用编辑器中的构建器调用输入进行概要分析。6.通过应用各种概要分析文件组合来预览对模型进行概要分析的效果。可编辑 word,供参考版!概要分析过程通常是以迭代方式进行的;可随时执行这些步骤中的任何一个,并且可能多次执行,以便在执行时能够对 portlet 或应用程序的

5、变化做出细微调整。概要分析类型 Portlet Factory 提供了两种概要技术选择:概要文件选择和概要值定制。1、概要文件选择 概要文件选择可以用两种方式实现 a)一种方式是基于预定义的概要文件选择逻辑在重新生成应用程序决定选用那个概要文件。这个选择概要文件的过程是使用概要文件选择处理器在幕后编程实现的。本文稍后将详细介绍概要文件选择处理器。b)另外一种方式是使用 Portlet 定制机制将概要文件的选择过程暴露给最终用户,例如,用户在 Portlet 编辑和配置模式下自行选择概要文件。2、概要值定制 概要值定制也有两种实现方式:a)概要值定制最广泛的用例是让最终用户能够在运行时显示指定概

6、要值,这些概要值用来重新生成应用程序。背后的概念与可编辑 word,供参考版!WebSphere Portal 中编辑和配置模式下定制 Portlet 是一样的。Portlet Factory 允许在 Portal 中为 Portlet 创建编辑页或配置页面,用户可以在这里更改用户界面等。b)Portlet Factory 也提供了另外一种机制叫做值设置器,让概要值的定制能通过编程执行。值设置器的工作方式与概要文件选择处理器相似,它允许开发者设置一些预定义的逻辑在重新生成应用程序的阶段设置个别概要文件值。Portlet Factory 附带有一些默认的值设置器。当一个概要文件集定义了值设置器,

7、值设置器的选择将会覆盖概要文件选择处理器的选择。值设置器与概要文件选择处理器的最主要区别是,值设置器允许您通过编程创建概要文件值,与选择包含静态值的预定义概要文件恰好相反。概要文件选择处理器 到现在为止,我们了解到,一个基于概要的应用程序在重新生成的阶段从不同的概要文件中取值,创建不同的应用程序行为。那么,选择合适概要文件和设置合适值的工作在幕后究竟是如何进行的呢?Portlet Factory 有一种被叫作概要文件选择器的机制。概要文件选择器用来定义选择概要文件或设置概要文件值的逻辑。每个概要文件集都必须关联到一个选择器。可编辑 word,供参考版!在不同条件下,为了给构建器传送不同的参数,

8、我们使用概要文件选择处理器进行条件的过滤使得相应构建器能够得到相应的正确参数进行执行。在概要分析管理器的Select Handler编辑器中,可设置要用于当前概要分析集的概要文件选择处理器类。您也可以声明一个为概要分析集中的概要分析值动态指定数据的概要文件选择处理器类。WebSphere Portlet Factory 包括下列概要文件选择处理器:显式处理程序:将请求与当前概要分析集中的缺省概要分析相关联,只能手工选择概要文件。通常在开发期间使用,以便您可预览应用了不同概要分析的模型。可以通过使用已应用的概要文件视图以指定要应用于模型的概要文件列表,来执行概要分析。如下图:可编辑 word,供

9、参考版!文件段处理程序:根据 XML 文件中的用户概要分析映射将硬编码用户与概要分析相关联。使用此处理程序需要在处理程序配置文件中指明 XML 文件的位置:Selection class=com.bowstreet.profiles.FileSegmentSelectionHandle factory/profile_segment_data/segments.xml 并写明每个 User 对应的概要文件名称:可编辑 word,供参考版!J2EE 角色处理程序:将用户与 J2EE 角色相关联,并且返回与该角色相关联的概要分析。可以指定 J2EE 角色与概要文件的关联,其中AllAuthenti

10、catedUsers等角色都是 J2EE Application Server声明的角色,如下图:可编辑 word,供参考版!基于 LDAP 组的选择处理程序:将用户与 LDAP 组相关联,并且查询概要分析集以返回与指定的 LDAP 组相关联的概要分析。使用此处理程序需要在处理程序配置文件中指明 LDAP Server的地址,用户名,密码以及相关用户和组的信息:!-Properties for connecting to the LDAP server-ldap:/localhost:389 可编辑 word,供参考版!com.sun.jndi.ldap.LdapCtxFactory cn=r

11、oot o=IBM person uid !-Properties for doing group membership searches-o=IBM groupofuniquenam uniquemember /Property cn=root Property name=bowstreet.ldap.account.userpassword 0DcSRaf/gYrPDcAWQ339afBvJXs=!-How long(in seconds)do we trust the list of groups we store in the users session after lookup-36

12、00 并指明每个 Group 对应的概要文件名称:可编辑 word,供参考版!语言环境选择处理程序:将用户与语言环境段相关联,并且返回与该语言环境名称相关联的概要分析。此处理器主要与Localized Resource 构建器结合使用。WPS 执行方式处理程序:将请求与概要分析相关联,而该概要分析与独立方式或在门户网站中运行方式相关联。可使用此选择处理程序来执行基于执行方式的不同代码。此处理程序用于创建模型,这些模型根据其运行方式是独立还是 WebSphere Portal 而变化。如果模型当前以 WPS 中的 portlet 形式运行,此处理程序则返回Portal,如果独立运行,则返回Sta

13、ndalone。可编辑 word,供参考版!要使用此模型,请创建一个概要文件集,它具有两个概要文件,名为Portal和Standalone。选择WPS 执行方式处理程序作为选择处理程序。在模型中,您可以对此概要文件集的构建器输入进行概要分析。例如,您可以使运行模型以独立方式运行时,禁用仅限于门户网站的功能(如调用门户网站的 API)。这对于开发测试非常有用,以便您可以独立运行模型,并且在 WebSphere Portal 环境中运行时具有额外功能。WPS 组处理程序:将请求与用户所属的 WebSphere Portal 组相关联,并且返回与该组相关联的概要分析。概要文件选择处理器的运行机制:可

14、编辑 word,供参考版!要根据用户所属的 WebSphere Portal 组对 portlet 进行概要分析,请执行以下操作:1.在 WebSphere Portal 管理服务器中:为门户网站应用程序创建有些用户和组。2.在设计器中:创建模型、概要文件集和概要文件。3.在设计器中:概要分析驱使 portlet 变化的构建器调用输入。4.在设计器的概要文件管理器中:使用选择处理程序编辑器将概要文件集的选择处理程序设置为 WPS 组分段处理程序。5.在设计器的概要文件管理器中:在管理概要文件编辑器中,编辑概要文件并使用添加外部按钮指定组名。必须指定精确指定 WebSphere 组名。6.在 W

15、ebSphere Portal 管理服务器中:为每个 WebSphere 组的每个 portlet 设置权限。7.在 WebSphere Portal 管理服务器中:通过以一个用户身份登录并访问已概要分析的 portlet 来测试概要分析。实现运行时定制概要分析 Demo 我们将使用 WPF 开发一个简单的 Portlet,让用户在编辑模式下选择不同的概要文件,然后在视图模式下显示不同的文本 可编辑 word,供参考版!1、打开WPF设计器,点击Flie New WebSphere Portlet Factory 项目。将新项目命名为 ProfileApp.2、点击 Next。将所有功能部件都

16、去掉,这是因为这个 Portlet比较简单,没有用到扩展功能部件集,将没有用到的功能部件集去掉可以减小最终 war 包的大小。可编辑 word,供参考版!3、点击 Next。在项目服务器目标面板上,指定测试服务器的类型、安装目录等信息。可编辑 word,供参考版!4、点击 Next 直到出现 WebSphere Portlet WAR 设置面板。指定 Portlet 创建类型、WAR 包目录等。可编辑 word,供参考版!5、点击 Next 直到出现摘要和重要细节面板。点击 Finish 完成项目创建工作。当项目创建完成后,我们开始创建模型。6、在设计器中,选择 File New WebSph

17、ere Portlet Factory 模型。在选择项目面板中指定 ProfileApp。7、在选择模型面板中选择 Main and Page 然后点击下一步。可编辑 word,供参考版!8、选择 Simple page,点击下一步。可编辑 word,供参考版!9、输入ProfileTest作为模型名称,点击 Finish完成模型创建。可编辑 word,供参考版!10、在设计器左下角的 outline 视图中,双击名称为 page1 的页面构建器,将页面的内容换成下面的 HTML 代码片段。点击确定,然后保存。Profile Test Page Runtime Profile Selectio

18、n 可编辑 word,供参考版!Profile selected from Portal edit/cnofig mode Dynamic Profile Selection Profile selected by WPS group info Profile selected by custom profile selection handler 可编辑 word,供参考版!11、点击按钮,添加一个 Text 构建器。可编辑 word,供参考版!12、在构建器调用编辑器中输入如下值:i.名称:RuntimeProfileText ii.页面:page1 iii.标记:runtime_prof

19、ile_text 13、点击文本输入框旁边的按钮。一个概要输入窗口弹出来,你可以在这创建新的概要文件。可编辑 word,供参考版!14、点击创建概要文件按钮创建一个新的概要文件,命名为profile1,点击OK。15、同上一步,再创建一个概要文件 profile2。16、改变概要文件的值,如下图所示,点击 OK,关闭窗口。文本输入框现在已经能够进行概要分析了。可编辑 word,供参考版!17、最后点击 OK 保存构建器。18、添加一个 Portlet 适配器构建器,输入如下值。然后保存。可编辑 word,供参考版!a.名称:ProfileTest Portlet b.Portlet 标题:Pr

20、ofileTest Portlet c.选择 在“编辑”中显示概要文件名称 19、选择 FileSave 保存整个项目。20、重构 Portlet War 包。右击 ProfileApp 项目名称,选择重建WAR重建 Portlet WAR。21、用管理员身份登录 Portal 服务器,将项目生成的 WAR 文件用 WEB 模块安装进去,新建一个测试页面,将 ProfileTest Portlet 放在上面。访问页面,可以看到,运行时概要选择文本框中的初始值为。可编辑 word,供参考版!22、进入编辑模式,选择概要文件 profile1,点击 OK 返回。23、可以看到,出现了”This i

21、s text from runtime profile one”文本。24、再次进入编辑模式,选择概要文件 profile2,点击 OK 返回。25、如图所示,文本变成了”This is text from runtime profile two”。可编辑 word,供参考版!实现基于 Portal 用户组的动态概要分析的 Demo 1、首先,在 WebSphere Portal 管理服务器中:为门户网站应用程序创建有些用户和组。a)在 Portal 服务器上创建两个组和两个用户:Group:CSRGroup,CustomerGroup User:csr1,customer1 可编辑 word

22、,供参考版!b)将用户 csr1 增加到 CSRGroup 组、customer1 增加到CustomerGroup 组 c)然后,将“所有已认证门户网站用户”添加给 ProfileTest Portlet 的用户角色。可编辑 word,供参考版!2、在前面的 ProfileTest 模型中添加另一个文本构建器,输入如下值,点击确定,最后保存项目。a)名称:DynamicProfileText b)页面:page1 c)标记:dynamic_profile_text d)输入完后,如图所示 可编辑 word,供参考版!3、点击 FileNewWebSphere Portlet Factory

23、概要信息集,创建一个新的概要文件集。可编辑 word,供参考版!4、在新建概要文件集面板中输入如下值。a)项目:ProfileApp b)名称:WPSGroupDynamicps c)描述:The profiles set based on WebSphere Portal Group Info 5、点击选择处理程序标签,在概要选择程序下拉列表框中选择 WPS Group Segment Handler,点击 OK,然后保存项目。可编辑 word,供参考版!6、返回到构建器调用编辑器中,点击 DynamicProfileText 文本构建器中,文本框旁边的概要按钮。可编辑 word,供参考版!

24、7、在弹出的概要文件输入框中,选中 WPSGroupDynamicps概要文件集。可编辑 word,供参考版!8、按以下步骤创建新的概要文件:a)点击创建概要文件按钮 b)输入 dynamicprofile1 作为概要文件名 c)在 Advance 选项部分,点击 Add External,然后输入CSRGroup,点击 OK。这里 CSRGroup 就是我们前面在Portal服务器上创建的名字。9、在上面的步骤创建另外一个概要文件 dynamicprofile2,添加外部关联,输入另外一个 Portal 用户组名 CustomerGroup。可编辑 word,供参考版!10、指定两个概要文件

25、的值,如下图所示,点击 OK 关闭概要输入窗口。11、保存项目,重新构建 Portlet WAR 包。可编辑 word,供参考版!12、进入 Portal Server 管理界面,更新 WPF-ProfileApp.war 包。可编辑 word,供参考版!13、使用 csr1 重新登录门户,访问 ProfileTest Portlet。14、使用 customer1 重新登录门户,访问 ProfileTest Portlet 可编辑 word,供参考版!15、可以看到根据用户所属组的不同,Portlet 显示不同的值。实现定制概要文件选择处理器的 Demo WPF 中概要分析的关键就是如何在运

26、行时选择合适的概要文件,通过前面的 Demo,我们了解到,对于运行时定制概要分析,用户手工在编辑和配置模式下选择概要文件,而对于动态概要分析,您需要指定在运行时动态选择概要文件的规则,比如,将概要的选择与外部Portal 用户组相关联。如果您想通过定义概要文件选择规则来扩展WPF 的概要分析能力.,您需要写一个选择处理类来实现您自己的选择算法。本文接下来实现一个自定义选择处理器的 Demo,我们将创建一个星期处理器,它会根据每周的星期来选择概要文件。我们仍然在前面创建的项目 ProfileApp 中继续。1、创建一个 dayhandler.xml 文件,放在 ProfileApp 项目的WEB

27、-IFNconfigselection_handlers 目录下。可编辑 word,供参考版!2、Dayhandler.xml 文件的内容如下。Handler that returns Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday profile 可编辑 word,供参考版!注意,此处 Selection 标记中的类名称要与我们下一步创建的处理器类名相同。3、在WEB-INFworksource目录 下创建一个包com.smartdot.profiles,然 后 在 新 建 的 包 下 创 建 一 个 类DaySelectio

28、nHandler.java。4、打开 DaySelectionHandler.java 文件,编辑如下。package com.smartdot.profiles;import java.util.ArrayList;import java.util.Calendar;可编辑 word,供参考版!import java.util.GregorianCalendar;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.bowstreet.pr

29、ofiles.ProfileSet;import com.bowstreet.profiles.SegmentList;import com.bowstreet.profiles.SelectionHandlerBase;import com.bowstreet.webapp.ModelInstanceCreator;public class DaySelectionHandler extends SelectionHandlerBase implements SegmentList public String selectProfile(HttpServletRequest request,

30、ProfileSet profileSet,String modelName,String explicitProfile,ModelInstanceCreator modelInstanceCreator)String profileName=profileSet.DEFAULT;Iterator segments=emptyIterator;可编辑 word,供参考版!/if the explicit profile was specified and its valid,then just return it.if(validateExplicitProfile(request,expl

31、icitProfile,profileSet,segments)return explicitProfile;segments=getSegmentsByDay();profileName=getProfileBySegment(profileSet.getName(),segments);return profileName;/*Return the segments base on the days in a week*/public Iterator getSegmentsByDay()List dayList=new ArrayList();/Get the day of the we

32、ek Calendar calendar=new GregorianCalendar();int day=calendar.get(Calendar.DAY_OF_WEEK);/if its Monday then get the Monday Profile if(day=Calendar.MONDAY)dayList.add(Monday);可编辑 word,供参考版!else if(day=Calendar.TUESDAY)dayList.add(Tuesday);else if(day=Calendar.WEDNESDAY)dayList.add(Wednesday);else if(

33、day=Calendar.THURSDAY)dayList.add(Thursday);else if(day=Calendar.FRIDAY)dayList.add(Friday);else if(day=Calendar.SATURDAY)dayList.add(Saturday);else if(day=Calendar.SUNDAY)dayList.add(Sunday);return dayList.iterator();/*Return all the segments for Profile Manager*/public Iterator getSegments(Profile

34、Set profileSet)List days=new ArrayList();days.add(Monday);可编辑 word,供参考版!days.add(Tuesday);days.add(Wednesday);days.add(Thursday);days.add(Friday);days.add(Saturday);days.add(Sunday);return days.iterator();5、选择FileNewWebSphere Portlet Factory概要信息集来创建一个新的概要文件集。输入以下信息,点击 OK。a)项目:ProfileApp b)名称:CustomP

35、rofileSet c)描述:The profile Set which will use the custom profile selection handler 可编辑 word,供参考版!6、打开 CustomProfileSet.pset 文件,点击选择处理程序页签,然后在概要选择处理器下接框中选择 Day Handler。点击 OK,确认概要选择类的变化,保存项目。可编辑 word,供参考版!7、返回构建器调用编辑器,点击添加一个文本构建器。在构建器调用编辑器中输入如下值,然后保存项目。a)名称:CustomProfileText b)页面:page1 c)标记:custom_pro

36、file_text 可编辑 word,供参考版!8、点击文本字段输入框旁边的按扭,对文本输入进行概要分析。9、进入概要文件输入窗口,在概要文件集下拉框中选择CustomProfileSet。可编辑 word,供参考版!10、按要下面的步骤创建星期一概要文件。a)点击创建概要文件按钮。b)输入 Monday 作为概要文件名。c)在高级(Advance)选项部分,选择 Monday 作为关联的段,点击 OK 关闭新概要文件窗口。可编辑 word,供参考版!d)指定”Hello,today is Monday!”作为 Monday 概要文件的值。11、参照上面的步骤,依次创建 Tuesday、Wed

37、nesday、Thursday、Friday、Saturday 和 Sunday 概要文件,并指定相应的值。可编辑 word,供参考版!12、保存项目,重新构建 Portlet War 包。13、进入 Portal 服务器,更新 WPF-profileApp.WAR 文件,然后登录测试页,访问 ProfileTest Portlet。可以看到 custom_profile_text标记中的文本随着当前的星期而变化。可编辑 word,供参考版!这个 Demo 展示了如何在 WPF 中开发自定义的概要文件选择处理器。小结 本文简单的例证了如何在 WPF中实现运行时定制和动态概要分析等功能,还解释了如何开发一个自定义的概要选择处理器。概要分析是WPF中的一个关键的特点,它能够帮助您以一种高效的、节省成本的方式为不同的用户基于他们的角色、个人偏好,或其他上下文信息来个性化 Portlet。概要分析的功能是非常强大的,在实际的 WPF中开发中,几乎所有的构建器输入值都可以进行概要分析,本文只是列举了其中很小的一部分,更多的功能需要开发人员在实践中去掌握和提高。只有能熟练运用概要分析来解决开发中的实际需求,我们才能算是学会了 WPF这样一个开发利器。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁