最佳实践、差距及获得的经验教训

日期: 2008-08-04 作者:Qiang WangMary Taylor 来源:TechTarget中国 英文

  本系列讨论如何开发组合应用程序来支持业务服务,本文是其中的第五篇文章。组合业务服务组件符合服务组件体系结构的要求,是使用集成工具集开发的,此集成工具集包括IBM WebSphere Business Modeler(WBM)和IBM WebSphere Integration Developer(WID)。这些工具生成的构件的运行时是IBM WebSphere Process Server。本文将说明有关使用WBM V6进行业务流程的建模、组装和部署的最佳实践。另外,本文还将确定在WBM和WID集成中存在的一些差距,并说明在示例流程建模工作(基于本文中描述的一个实际使用情况)中获得的经验教训。


  引言


  WebSphere Business Modeler(WBM)Advanced Edition V6支持业务分析人员为组合业务服务(Composite Business Service,CBS)构造业务模型,而不会陷入软件开发的技术细节中。WBM还提供导出功能,可以将其模型构件转换为IBM WebSphere Integration Developer(WID)构件。WBM Advanced Edition可以进行以下转换:


  ·将业务流程转换为业务流程执行语言(Business Process &#101xecution Language,BPEL)框架
  ·将接口转换为Web服务描述语言(Web Services Description Language,WSDL)文件
  ·将业务项和其他类型定义转换为XML模式定义(XML Schema Definition,XSD)文件和业务对象(Business Object,BO)定义


  将业务流程转换为BPEL框架存在一些挑战。本文将说明有关使用WBM V6进行业务流程的建模、组装和部署的最佳实践。另外,本文还将标识在WBM和WID集成中存在的一些差距,并说明在示例流程建模工作(基于本文中描述的信用卡申请 实际使用情况)中获得的经验教训。


  信用卡申请用例示例介绍


  信用卡申请场景的示例实现(请参见图1)演示了各个最佳实践。在此用例中,银行客户使用银行的门户申请信用卡产品。用户界面(User Interface,UI)调用从客户的配置文件检索其社会保险号(Social Security Number,SSN)的BPEL流程,以调用credit score服务。基于该服务返回的信用记录,将自动对信用卡申请进行拒绝、批准或转发到经理进行人工复审。通过业务规则集基于信用记录对决策进行控制。如果自动拒绝申请,会记录状态,并向客户发送通知。如果请求自动批准,会记录状态,启动信用卡发卡流程,并向客户发送通知。如果有必要进行人工审批,将启动第二个工作流(如图2中所示)。



  图1. WBM中的信用卡申请流程
 
  注意:提供了图1的较大视图。


  当信用卡申请需要进行人工审批时,银行员工将复审有关申请人和产品的其他信息。然后,该银行员工将批准或拒绝申请。如果拒绝申请,会记录此申请,并向客户发送通知。如果批准申请,会通过决策(通过业务规则实现)确定是否还需要银行经理进行审批。如果不需要,会记录申请状态,启动信用卡发卡流程,并向客户发送通知。如果需要银行经理审批,则将记录银行员工的审批结果,并将申请发送给银行经理。银行经理批准或拒绝申请。将记录银行经理的决策并向客户发送通知。



  图2. 信用卡审批流程
 
  注意:提供了图2的较大视图。


  最佳实践


  本文将说明有关使用WBM V6进行业务流程的建模、组装和部署的最佳实践。


  使用高效的业务模型组装技术


  如果需要更改现有业务流程,可以采用以下方法之一进行处理:


  ·使用WBM建模和模拟更改,然后为该流程生成BPEL。
  ·直接在可部署构件中实现更改。


  对于较小的更改,可以在WID内更改、测试和部署BPEL流程。目前尚没有将WID BPEL导回WBM的功能。这个限制表明,为了保持WBM和WID模型同步,需要在WBM中进行所有更改,然后重新生成BPEL来导入到WID中。如果对BPEL的更改并不会大幅度更改WBM中的模型的流,最好直接在WID中进行更改。对于业务流程的重要更改,应该从WBM重新生成BPEL模型并导入到WID中。这样,流程组合将继续使用之前业务流程中已经存在的资产。


  避免重复SCA组件


  可以在流程关系图中使用全局或局部任务。通过将图标从项目树拖到流程关系图中,可以将相同的全局任务多次添加到一个或多个业务流程中。通过这样,就可以在转换过程中为该全局任务创建单个SCA组件。如果转而采用从流程关系图选择面板将不同的局部任务图标添加到关系图中,以标识相同服务的多个实例,尽管这些不同的局部任务图标实际表示相同的服务,也会在转换过程中将其视为不同的任务。在这种情况下,会创建重复的SCA组件。在图3中,Credit Card Request流程中有两个局部Log Credit Card Request任务。WBM 中的转换实用工具会将每个局部任务视为不同的服务,该实用工具将在SCA模块为每个局部任务生成唯一的SCA组件。在此示例中,每个局部日志任务都会产生一个SCA组件。为了溢出冗余内容,请手动对生成的组装关系图的结构进行修改。


  注意:为了获得最好的结果,业务分析人员应该确定可重用业务任务,然后在WBM中将这些任务作为全局任务创建。



  图3. 重复SCA组件
 
  注意:提供了图3的较大视图。


  WBM与WID间的差距


  为了将流程转换为BPEL流程框架,请在WBM中使用WebSphere Process Server编辑模式建模业务流程。请注意有关此模型中可以使用的建模元素类型的限制,以使流程兼容BPEL。以下元素类型在Process Server模式中不可用:


  ·业务项实例
  ·Do-while循环
  ·For循环
  ·通知广播器
  ·通知接收器
  ·观察器
  ·全局存储库
  ·计时器


  在客户环境中,可能需要使用上面的某个建模元素类型,而这就是纯业务模型或流程WBM构造与WID中的BPEL流程之间的差距。只要采用WBM Basic模式,可以将上面列出的所有不可用的元素类型包括到流程中。Basic模式中的流程是纯 业务流程,对特定技术(如BPEL或WebSphere MQ工作流的 FDL)没有依赖性。当从Basic模式切换到WebSphere Process Server模式时,以上任何元素类型都可能导致出错。


  所获得的经验教训


  本文将说明获得的有关使用WBM V6进行业务流程的建模、组装和部署的经验教训。


  在WBM中支持流程依赖关系


  有时候会希望描述依赖于其他BPEL流程的BPEL流程,例如:A将B作为服务调用。可通过使用全局流程在WBM中完成此工作。通过指定其间的依赖关系来连接两个全局流程(请参见图1中的流程依赖关系)。尽管WBM中有子流程 的概念,但业务流程中的子流程将转换为父BPEL流程中的流 结构,而不是独立的BPEL流程。另外,尽管在WBM的技术属性视图中可以将任务指定为可稍后转换为独立BPEL的流程,但不能在WBM中对该独立流程进行建模。有时候需要能够进行建模以进行生成的独立 BPEL流程,因为您将在不同的场景中重用该BPEL流程。或者,您可能需要使得该 BPEL流程成为长期运行的流程,而其父BPEL流程却是仅短时间内运行的流程。对于这种依赖关系,请使用全局流程。如果要使用局部流程,请在运行转换流程之后通过手动修改生成的BPEL流程框架来创建依赖关系。


  使用Java代码片段时考虑任务粒度


  WID支持将Java代码片段嵌入到BPEL流程内。SCA编程模型还将Java体系结构作为SCA组件的实现类型提供。通常,如果在BPEL流程内需要较小的功能(如简单的计算),可以将此代码嵌入到BPEL流程内的Java代码片段中。不过,如果需要重用Java代码的业务逻辑或业务逻辑非常复杂,则可以将此逻辑放入独立的Java类型SCA组件中,BPEL流程可将此组件作为普通SCA服务引用。使用WBM建模流程且希望将该流程转换为BPEL流程时,请仔细考虑每个任务的粒度。如果任务的粒度恰当(实现简单功能),则在WBM中相应地使用map元素;可以在生成的BPEL流程框架中将此元素转换为空的Java代码片段。



  图4. Java代码片段示例
 
  在图4中,有一个Auto Approve the Request map元素。将此流程导出为BPEL框架后,此map元素将转换为生成的BPEL框架内的Java代码片段,而不是独立的SCA组件。


  使用技术属性视图


  WBM中的技术属性视图(如图5中所示)提供了一种可选的方式,用以指定用于在WPS上实现流程、全局任务或服务的技术细节。通过使用此视图中提供的各种功能,可以简化下游实现任务。使用WPS导出功能导出业务流程时,将为技术属性提供缺省值。可以使用技术属性视图来指定各个值,从而重写这些缺省值。对于流程、任务和服务,技术属性视图中的Implementation页包含元素的SCA信息。此信息用于将元素作为SCA组件实现。WPS建模模式的技术属性视图中提供了五个实现类型:


  ·状态机
  ·业务规则组
  ·人工任务
  ·Java
  ·流程


  例如,如果您选择任务实现类型为业务规则类型,则可以在WBM中添加具体的业务规则需求描述。将WBM项目转换为BPEL并将项目导入到WID中时,会将原始WBM任务转换为业务规则组组件,此组件的需求描述与在WBM中添加的需求描述完全相同。然后可以在WID中设计业务规则集,以实现这些需求。



  图5. 技术属性视图
 
  注意:提供了图5的较大视图。


  人工任务是一个特例。运行转换流程后,此任务将转换为独立的人工任务组件。如果不需要独立的人工任务,请在技术属性视图中将实现类型保留为none,并转到属性视图中将staff角色分配给此任务。转换流程之后,此任务将转换为嵌入的人工任务,而不是独立的人工任务组件。


  生成WID BPEL流程


  要在WID中生成Credit Card Request和Credit Card Approval流程(请参见图6),请运行导出与转换向导来生成信用卡申请和审批BPEL框架。然后,调整并添加代码,以对生成的BPEL框架进行充实,从而生成可稍后部署到WPS 6的流程。



  图6. WID流程
 
  注意:提供了图6的较大视图。


  总结


  本文介绍了使用WBM V6进行流程建模的过程中所总结的最佳实践、发现的差距以及获得的经验教训。这包括:


  ·最佳实践


  使用高效的业务模型组装技术
  避免重复SCA组件


  ·WBM与WID间的差距
  ·所获得的经验教训


  在WBM中支持流程依赖关系
  使用Java代码片段时考虑任务粒度
  使用技术属性视图


  作者简介


  Qiang Wang是China Technology Institute, China Software Development Laboratory的一位软件工程师。他的工作重点是IBM Incubator Project和SOA相关主题。他的兴趣包括J2EE、SOA、MDA/MDD、AOP和RUP。他当前从事与WBM、WebSphere Integration Developer和WPS相关的开发工作。
 
  Mary Taylor是一名高级软件工程师。她在Strategic Technology Architecture and Incubation团队工作,目前正在进行一项SOA CBS试验。她感兴趣的领域包括DB2和DataStage。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐