组合业务服务CBS的开发(二)

日期: 2008-08-05 作者:Ying Chun GuoMary Taylor 来源:TechTarget中国 英文

  步骤2:创建一个Portlet以用于配置


  在这个部分中,您将创建一个Portlet,以便对在步骤1中创建的概要集J2BWPFportletsConfigPS中的概要条目值进行管理。WebSphere Portlet Factory提供了一套API以创建、更新和删除概要。使用这些API,您可以创建Portlet以公开您希望自定义的值,并且为设置这些值提供相应的用户界面。


  步骤2a:添加自定义变量


  可以通过Web页面来显示和更新概要条目的值。要做到这一点,您需要为存储所选择的概要和概要条目的值创建相应的变量。您已经为所选择的概要名称创建了一个名为selectedProfile的字符串变量。为了在变量和概要条目之间保持简单的映射,在对变量进行命名时,在概要条目名称的前面加上前缀pfvar_。图10中显示了一些示例变量。



  图10. 示例变量
 
  步骤2b:使用概要分析API开发Helper类


  图11显示了用于概要分析的主要类和方法。使用ProfileSetStorageManager以通过名称获得概要集,并保存概要集。使用ProfileSet以获得其概要。使用Profile和ProfileValue以获得概要条目的值。



  图11. 概要分析API
 
  使用这些API,可以创建一个Helper类,以实现下列的函数(请参见WPFPortlets.zip中的com.ibm.J2B.wpf.profile.ProfileCustomizeHelper)。


  ·从概要集获得概要的列表(请参见方法getProfiles)


  ·获得某个概要的概要条目值,并将它们赋值给Web应用程序中的相应变量(请参见方法getVariables)


  ·从HttpServletRequest中获得经过更新的概要条目值,并将其保存到概要集(请参见方法saveProfile)。


  步骤2c:添加Portlet控件


  在这个步骤中,您将为配置Portlet添加相应的控件以处理变量并调用函数。


  ·添加一个链接的Java?对象,并将类名设置为Helper类。


  ·使用html表格来编辑页面布局。标记的名称必须与变量的名称相同(请参见清单1)。


  ·为标记selectedProfile添加一个select builder。将select Data设置为方法getProfile的返回值,并将selected Values设置为变量selectedProfile。


  ·添加一个HTML Event Action Builder,指定当所选的概要发生变化时调用getVariables方法。


  ·为其他命名标记添加HTML控件(如select和Text Input)以显示概要条目。将它们的值指定为相应的变量。


  ·添加一个提交按钮,并指定当单击该按钮时调用saveProfile方法。


  清单1. HTML代码
               
   


    

   


    

    

   
   

    

    

   
   

    

    

   
   

    

    

   
  
Profile:   
BankId:
BankName:

   

  
      
  步骤3:创建一个自定义Profile selection Handler


  当一个概要集中存在多个概要时,概要选择处理程序将决定应该使用哪一个概要。在WebSphere Portlet Factory中有一些预定义的处理程序,如Explicit Handler和J2EE Role Handler。您可以定义您自己的选择处理程序。在这个场景中,您可以定义一个简单的自定义概要选择处理程序,通过该程序为每个银行关联一个单独的概要。


  步骤3a:实现处理程序类


  selectionHandler类实现了Profileselection接口,而这个接口中包含方法selectProfile()。这个方法可以从传递进来的、指定的配置文件集中选择一个配置文件,并返回它的名称。该处理程序类的源代码如清单2所示。


  清单2. 处理程序类的源代码
               
  public class BankUserselectorHandler extends selectionHandlerBase {


   public String selectProfile(HttpServletRequest request,
   ProfileSet profileSet, String modelName, String   explicitProfile,
   ModelInstanceCreator modelInstanceCreator) {


  String userid = “”;
  try {


   userid = request.getRemoteUser();
   int index = userid.indexOf(’@’);
   if (index == -1) return ProfileSet.DEFAULT;


   String domain = userid.substring(index + 1);
   return domain;


  } catch (Exception e) {}


  return ProfileSet.DEFAULT;
   }
  }
      
  步骤3b:创建处理程序定义


  处理程序定义是一个XML文件,其中列出了用于实现这个概要选择处理程序的Java类,以及这个概要选择处理程序的属性。所有的处理程序定义都存储在WEB-INF/config/selection_handlers目录 中。这个示例场景中的处理程序定义文件如清单3所示。


  清单3. 处理程序定义文件
               
  
    Handler for J2B WPF portlet
   
  

      
  步骤3c:为概要集设置概要选择处理程序


  在创建了自定义概要选择处理程序之后,为概要集J2BWPFportletsConfigPS设置选择处理程序。


  ·双击WEB-INF/profiles/J2BWPFportletsConfigPS概要集,以打开它。


  ·在select Handler选项卡中,从Profile selection Handler选择框中选择您所创建的选择处理程序(请参见图12)。


  ·保存该概要集。



  图12. 设置概要选择处理程序
 
  与非WebSphere Portlet Factory解决方案的比较


  Portlet的配置模式也提供了可配置性。但是Portlet配置模式中的参数和函数范围仅与一个Portlet相关。对于那些需要在多个Portlet中共享的参数,如银行ID、银行名称和公共的Web服务端点,需要在每个Portlet中对其进行配置。使用WebSphere Portlet Factory动态概要,您可以开发一个集中式的Portlet以提供配置用户界面。共享的参数只需要设置一次,这将降低工作强度和出现错误的可能性。


  如果不使用WebSphere Portlet Factory,可以通过JSP和Java代码来实现Portlet的配置。您可以通过Java API获得配置参数的值。要提供更高级的配置,需要提供更复杂的代码,如配置某个字段的隐藏/显示状态,或者配置下拉列表中的可选值。使用WebSphere Portlet Factory动态概要,Web应用程序的配置变得非常简单、且功能非常强大,无需编写代码就可以进行配置。


  尽管WebSphere Portlet Factory提供了这些优点,但是对于WebSphere Portlet Factory的开发,没有像JSP和HTML开发那样的所见即所得(WYSWYG)工具。WebSphere Portlet Factory提供了类似向导的构建程序,它们比WYSWYG工具要抽象一些。在使用WebSphere Portlet Factory进行Portlet开发的过程中,使用具有具体含义的构建程序名称是非常重要的。


  结束语


  本文描述了如何使用WebSphere Portlet Factory动态概要来实现可配置的用户界面。概要分析是WebSphere Portlet Factory中非常健壮的特性。概要包含一组参数(名/值对),可用于实现自定义Portlet的生成。使用概要,您可以从相同的模型、为不同的用户或者情况自动地生成Portlet的不同变体。您所遵循的这些步骤包含对Portlet进行概要分析、创建一个Portlet以配置概要条目值、创建一个自定义的概要选择处理程序、以及将概要集与这个选择处理程序关联起来。尽管通过编写代码可以创建相同的功能,但是WebSphere Portlet Factory提供了一套Builder以支持在不编写代码的情况下实现相应的功能。


  作者简介


  Ying Chun Guo是China Technology Institute中国软件开发实验室的一名软件工程师。她目前从事组合业务服务(CBS)和面向服务的体系结构(SOA)方面的工作。
 
  Mary Taylor是一名高级软件工程师。她在Strategic Technology Architecture and Incubation团队工作,目前正在进行一项SOA CBS试验。她感兴趣的领域包括DB2和DataStage。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 组合业务服务CBS的开发(一)

    这篇文章是本系列文章的第8部分,主要介绍组合业务服务(CBS)的开发。CBS提供了集成现有技术和产品以反映所需业务意图的功能,如可配置性……