




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
企业应用事业部产品发展部如何使用WPF中的概要分析修订日期:2007-12-12阅读范围:企业应用事业部产品发展部全体、公司相关负责人撰写人:石伟伟北京慧点科技开发有限公司 目 录目 录1WPF概要分析简介1什么是概要分析2术语和定义2概要分析过程3概要分析类型4概要文件选择处理器5实现运行时定制概要分析Demo13实现基于Portal用户组的动态概要分析的Demo27实现定制概要文件选择处理器的Demo38小结47WPF概要分析简介WPF开发中最为强大的一个方面是,可以将模型与概要分析配合使用,通过将预定义的不同的参数集与相同的代码库结合,生成相同应用程序的不同版本。与传统开发比较,使用构建器创建的portlet和应用程序有两个优点:l 构建器可以自动生成代码和执行开发任务。l 构建器将根据它们的输入来更改它们的行为及生成的Web应用程序。什么是概要分析WPF概要分析指的是定义概要分析文件及概要分析条目值的过程,任何已概要分析的构建器输入都可以从中获取它们的值,它包含两个步骤:1. 创建或管理一个概要文件集、概要文件、概要文件条目、概要文件条目值(相关概念见下面介绍)。2. 将概要应用于构建器的输入。使用概要分析,我们能为不同的用户、客户或情况,使用相同的模型生成不同的应用程序或Portlet。基于概要分析生成应用程序的过程图1所示。图1:基于概要的应用程序生成过程术语和定义WPF中概要分析的相关概念:名称定义概要文件集是概要文件的集合。概要文件是一套参数,可以改变生成的应用程序的行为。根据用户的身分或者其他的上下文信息(例如语言)给构建器提供不同的参数值概要文件条目代表应用程序的一个输入变量。概要文件条目值概要文件中输入条目的值。概要分析过程概要分析过程包括下列一般任务:1. 创建概要分析集。将使用未包含任何概要分析文件条目的缺省概要分析文件(名为 Default)创建概要分析集。2. 将一个或多个概要分析文件条目添加至概要分析集。3. 将一个或多个概要分析文件添加至概要分析集。在添加每个概要分析文件时,还会对该概要分析文件应用缺省概要分析文件条目。4. 通过更改每个概要分析文件的一个或多个概要分析文件条目值来定制该概要分析文件。5. 通过从特定概要分析集中选择概要分析文件条目,对构建器调用编辑器中的构建器调用输入进行概要分析。6. 通过应用各种概要分析文件组合来预览对模型进行概要分析的效果。概要分析过程通常是以迭代方式进行的;可随时执行这些步骤中的任何一个,并且可能多次执行,以便在执行时能够对 portlet 或应用程序的变化做出细微调整。概要分析类型Portlet Factory提供了两种概要技术选择:概要文件选择和概要值定制。1、 概要文件选择概要文件选择可以用两种方式实现a) 一种方式是基于预定义的概要文件选择逻辑在重新生成应用程序决定选用那个概要文件。这个选择概要文件的过程是使用概要文件选择处理器在幕后编程实现的。本文稍后将详细介绍概要文件选择处理器。b) 另外一种方式是使用Portlet定制机制将概要文件的选择过程暴露给最终用户,例如,用户在Portlet 编辑和配置模式下自行选择概要文件。2、 概要值定制概要值定制也有两种实现方式:a) 概要值定制最广泛的用例是让最终用户能够在运行时显示指定概要值,这些概要值用来重新生成应用程序。背后的概念与WebSphere Portal中编辑和配置模式下定制Portlet是一样的。Portlet Factory允许在Portal中为Portlet创建编辑页或配置页面,用户可以在这里更改用户界面等。b) Portlet Factory也提供了另外一种机制叫做值设置器,让概要值的定制能通过编程执行。值设置器的工作方式与概要文件选择处理器相似,它允许开发者设置一些预定义的逻辑在重新生成应用程序的阶段设置个别概要文件值。Portlet Factory附带有一些默认的值设置器。当一个概要文件集定义了值设置器,值设置器的选择将会覆盖概要文件选择处理器的选择。值设置器与概要文件选择处理器的最主要区别是,值设置器允许您通过编程创建概要文件值,与选择包含静态值的预定义概要文件恰好相反。概要文件选择处理器到现在为止,我们了解到,一个基于概要的应用程序在重新生成的阶段从不同的概要文件中取值,创建不同的应用程序行为。那么,选择合适概要文件和设置合适值的工作在幕后究竟是如何进行的呢?Portlet Factory有一种被叫作概要文件选择器的机制。概要文件选择器用来定义选择概要文件或设置概要文件值的逻辑。每个概要文件集都必须关联到一个选择器。在不同条件下,为了给构建器传送不同的参数,我们使用概要文件选择处理器进行条件的过滤使得相应构建器能够得到相应的正确参数进行执行。在概要分析管理器的Select Handler编辑器中,可设置要用于当前概要分析集的概要文件选择处理器类。您也可以声明一个为概要分析集中的概要分析值动态指定数据的概要文件选择处理器类。WebSphere Portlet Factory 包括下列概要文件选择处理器: 显式处理程序: 将请求与当前概要分析集中的缺省概要分析相关联,只能手工选择概要文件。通常在开发期间使用,以便您可预览应用了不同概要分析的模型。可以通过使用已应用的概要文件视图以指定要应用于模型的概要文件列表,来执行概要分析。如下图: 文件段处理程序: 根据 XML 文件中的用户概要分析映射将硬编码用户与概要分析相关联。使用此处理程序需要在处理程序配置文件中指明XML文件的位置: factory/profile_segment_data/segments.xml 并写明每个User对应的概要文件名称: J2EE 角色处理程序: 将用户与 J2EE 角色相关联,并且返回与该角色相关联的概要分析。可以指定J2EE角色与概要文件的关联,其中AllAuthenticatedUsers等角色都是J2EE Application Server声明的角色,如下图: 基于 LDAP 组的选择处理程序: 将用户与 LDAP 组相关联,并且查询概要分析集以返回与指定的 LDAP 组相关联的概要分析。使用此处理程序需要在处理程序配置文件中指明LDAP Server的地址,用户名,密码以及相关用户和组的信息: ldap:/localhost:389 com.sun.jndi.ldap.LdapCtxFactory cn=root o=IBM person uid o=IBM groupofuniquenames uniquemember cn=root 0DcSRaf/gYrPDcAWQ339afBvJXs= 3600 并指明每个Group对应的概要文件名称: 语言环境选择处理程序: 将用户与语言环境段相关联,并且返回与该语言环境名称相关联的概要分析。此处理器主要与Localized Resource 构建器结合使用。 WPS 执行方式处理程序: 将请求与概要分析相关联,而该概要分析与独立方式或在门户网站中运行方式相关联。可使用此选择处理程序来执行基于执行方式的不同代码。此处理程序用于创建模型,这些模型根据其运行方式是独立还是 WebSphere Portal 而变化。如果模型当前以 WPS 中的 portlet 形式运行,此处理程序则返回Portal,如果独立运行,则返回Standalone。要使用此模型,请创建一个概要文件集,它具有两个概要文件,名为Portal和Standalone。选择WPS 执行方式处理程序作为选择处理程序。在模型中,您可以对此概要文件集的构建器输入进行概要分析。例如,您可以使运行模型以独立方式运行时,禁用仅限于门户网站的功能(如调用门户网站的 API)。这对于开发测试非常有用,以便您可以独立运行模型,并且在 WebSphere Portal 环境中运行时具有额外功能。 WPS 组处理程序: 将请求与用户所属的 WebSphere Portal 组相关联,并且返回与该组相关联的概要分析。 概要文件选择处理器的运行机制:要根据用户所属的 WebSphere Portal组对 portlet 进行概要分析,请执行以下操作:1. 在 WebSphere Portal 管理服务器中:为门户网站应用程序创建有些用户和组。2. 在设计器中:创建模型、概要文件集和概要文件。3. 在设计器中:概要分析驱使 portlet 变化的构建器调用输入。4. 在设计器的概要文件管理器中:使用选择处理程序编辑器将概要文件集的选择处理程序设置为 WPS 组分段处理程序。5. 在设计器的概要文件管理器中:在管理概要文件编辑器中,编辑概要文件并使用添加外部按钮指定组名。必须指定精确指定 WebSphere 组名。6. 在 WebSphere Portal 管理服务器中:为每个 WebSphere 组的每个 portlet 设置权限。7. 在 WebSphere Portal 管理服务器中:通过以一个用户身份登录并访问已概要分析的 portlet 来测试概要分析。实现运行时定制概要分析Demo我们将使用WPF开发一个简单的Portlet,让用户在编辑模式下选择不同的概要文件,然后在视图模式下显示不同的文本1、 打开WPF设计器,点击Flie New WebSphere Portlet Factory项目。将新项目命名为ProfileApp.2、 点击Next。将所有功能部件都去掉,这是因为这个Portlet比较简单,没有用到扩展功能部件集,将没有用到的功能部件集去掉可以减小最终war包的大小。3、 点击Next。在项目服务器目标面板上,指定测试服务器的类型、安装目录等信息。4、 点击Next直到出现WebSphere Portlet WAR设置面板。指定Portlet创建类型、WAR包目录等。5、 点击Next直到出现摘要和重要细节面板。点击Finish完成项目创建工作。当项目创建完成后,我们开始创建模型。6、 在设计器中,选择File New WebSphere Portlet Factory 模型。在选择项目面板中指定ProfileApp。7、 在选择模型面板中选择Main and Page 然后点击下一步。8、 选择Simple page,点击下一步。9、 输入ProfileTest作为模型名称,点击Finish完成模型创建。10、 在设计器左下角的outline视图中,双击名称为page1的页面构建器,将页面的内容换成下面的HTML代码片段。点击确定,然后保存。Profile Test PageRuntime Profile Selection Profile selected from Portal edit/cnofig modeDynamic Profile Selection Profile selected by WPS group infoProfile selected by custom profile selection handler11、 点击按钮,添加一个Text构建器。12、 在构建器调用编辑器中输入如下值:i. 名称:RuntimeProfileTextii. 页面:page1iii. 标记:runtime_profile_text13、 点击文本输入框旁边的按钮。一个概要输入窗口弹出来,你可以在这创建新的概要文件。14、 点击创建概要文件按钮创建一个新的概要文件,命名为profile1,点击OK。15、 同上一步,再创建一个概要文件profile2。16、 改变概要文件的值,如下图所示,点击OK,关闭窗口。文本输入框现在已经能够进行概要分析了。17、 最后点击OK保存构建器。18、 添加一个Portlet适配器构建器,输入如下值。然后保存。a. 名称:ProfileTest Portletb. Portlet 标题:ProfileTest Portletc. 选择 在“编辑”中显示概要文件名称19、 选择FileSave保存整个项目。20、 重构Portlet War包。右击ProfileApp项目名称,选择重建WAR重建Portlet WAR。21、 用管理员身份登录Portal服务器,将项目生成的WAR文件用WEB模块安装进去,新建一个测试页面,将ProfileTest Portlet放在上面。访问页面,可以看到,运行时概要选择文本框中的初始值为。22、 进入编辑模式,选择概要文件profile1,点击OK返回。23、 可以看到,出现了”This is text from runtime profile one”文本。24、 再次进入编辑模式,选择概要文件profile2,点击OK返回。25、 如图所示,文本变成了”This is text from runtime profile two”。实现基于Portal用户组的动态概要分析的Demo1、 首先,在 WebSphere Portal 管理服务器中:为门户网站应用程序创建有些用户和组。a) 在Portal 服务器上创建两个组和两个用户:l Group:CSRGroup, CustomerGroupl User:csr1, customer1b) 将用户csr1增加到CSRGroup组、customer1增加到CustomerGroup组c) 然后,将“所有已认证门户网站用户”添加给ProfileTest Portlet的用户角色。2、 在前面的ProfileTest模型中添加另一个文本构建器,输入如下值,点击确定,最后保存项目。a) 名称:DynamicProfileTextb) 页面:page1c) 标记:dynamic_profile_textd) 输入完后,如图所示3、 点击FileNewWebSphere Portlet Factory概要信息集,创建一个新的概要文件集。4、 在新建概要文件集面板中输入如下值。a) 项目:ProfileAppb) 名称:WPSGroupDynamicpsc) 描述:The profiles set based on WebSphere Portal Group Info5、 点击选择处理程序标签,在概要选择程序下拉列表框中选择WPS Group Segment Handler,点击OK,然后保存项目。6、 返回到构建器调用编辑器中,点击DynamicProfileText文本构建器中,文本框旁边的概要按钮。7、 在弹出的概要文件输入框中,选中WPSGroupDynamicps概要文件集。8、 按以下步骤创建新的概要文件:a) 点击创建概要文件按钮b) 输入dynamicprofile1作为概要文件名c) 在Advance选项部分,点击Add External,然后输入CSRGroup,点击OK。这里CSRGroup就是我们前面在Portal服务器上创建的名字。9、 在上面的步骤创建另外一个概要文件dynamicprofile2,添加外部关联,输入另外一个Portal用户组名CustomerGroup。10、 指定两个概要文件的值,如下图所示,点击OK关闭概要输入窗口。11、 保存项目,重新构建Portlet WAR包。12、 进入Portal Server管理界面,更新WPF-ProfileApp.war包。13、 使用csr1重新登录门户,访问ProfileTest Portlet。14、 使用customer1重新登录门户,访问ProfileTest Portlet15、 可以看到根据用户所属组的不同,Portlet显示不同的值。实现定制概要文件选择处理器的DemoWPF中概要分析的关键就是如何在运行时选择合适的概要文件,通过前面的Demo,我们了解到,对于运行时定制概要分析,用户手工在编辑和配置模式下选择概要文件,而对于动态概要分析,您需要指定在运行时动态选择概要文件的规则,比如,将概要的选择与外部Portal用户组相关联。如果您想通过定义概要文件选择规则来扩展WPF的概要分析能力.,您需要写一个选择处理类来实现您自己的选择算法。本文接下来实现一个自定义选择处理器的Demo,我们将创建一个星期处理器,它会根据每周的星期来选择概要文件。我们仍然在前面创建的项目ProfileApp中继续。1、 创建一个dayhandler.xml文件,放在ProfileApp项目的WEB-IFNconfigselection_handlers目录下。2、 Dayhandler.xml文件的内容如下。Handler that returns Monday, Tuesday, Wednesday, Thursday,Friday, Saturday, Sunday profile注意,此处Selection标记中的类名称要与我们下一步创建的处理器类名相同。3、 在WEB-INFworksource目录下创建一个包files,然后在新建的包下创建一个类DaySelectionHandler.java。4、 打开DaySelectionHandler.java文件,编辑如下。package files;import java.util.ArrayList;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;import files.ProfileSet;import files.SegmentList;import files.SelectionHandlerBase;import com.bowstreet.webapp.ModelInstanceCreator;public class DaySelectionHandler extends SelectionHandlerBase implementsSegmentList public String selectProfile(HttpServletRequest request, ProfileSet profileSet,String modelName, String explicitProfile, ModelInstanceCreatormodelInstanceCreator) String profileName = profileSet.DEFAULT;Iterator segments = emptyIterator;/ if the explicit profile was specified and its valid, then just return it.if(validateExplicitProfile(request, explicitProfile, 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 weekCalendar calendar = new GregorianCalendar();int day = calendar.get(Calendar.DAY_OF_WEEK);/ if its Monday then get the Monday Profileif(day = Calendar.MONDAY) dayList.add(Monday); else if (day = Calendar.TUESDAY) dayList.add(Tuesday); else if (day = Calendar.WEDNESDAY) dayList.add(Wednesday); else if (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(ProfileSet profileSet) List days = new ArrayList();days.add(Monday);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) 项目:ProfileAppb) 名称:CustomProf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中小学化学教师招聘模拟题试卷
- 2025年市场营销人员招聘面试技巧与预测题集
- 2025年初识自媒体运营技巧实战模拟题集
- 2025年七年级数学下册课程计划
- 中、短波广播天线工作业指导书
- 2025-2030中国消费级无人机市场渗透率及商业模式创新报告
- 工业厂房施工机械进场计划
- 四年级数学(小数加减运算)计算题专项练习与答案汇编
- 缝纫布料肌理知识培训班课件
- 缝盘专业知识培训课件
- 铁路专项病害课件
- 开学安全教育课件
- 2025年学历类自考专业(学前教育)学前儿童发展-学前教育原理参考题库含答案解析(5套)
- 2025-2026学年人教版(2024)初中化学九年级上册教学计划及进度表
- 日本设备销售合同范本
- (2024)大学生宪法知识竞赛题库及答案
- 2025山西阳泉平定县从社区专职网格员中选聘社区专职工作人员考试备考试题及答案解析
- 高中英语3500词汇表
- 《绣球》课件
- 遥感图像的目视判读
- 轧制原理-PPT课件
评论
0/150
提交评论