利用 WID 和 WESB 构建基于 Mediation Flow 的 ESB Service(三)

日期: 2007-12-26 来源:TechTarget中国

  图1 WebSphere ESB 架构图

 
  2.2 Mediation Flow

  Mediation Flow 能够对在服务端点之间进行交换的消息执行操作。与常规的业务应用程序组件比较起来,Mediation Flow 关心的是通过基础结构的消息流,而不仅仅是关心消息的业务内容。它们将对消息执行路由、变换和日志等操作,而不仅仅是执行业务功能。用于管理它们的行为的信息通常保存在与业务消息一起流动的消息头中。IBM SOA 编程模型引入了 SDO 的服务消息对象(SMO)模式以支持此模式。

  从 SCA 编程模型的角度来看,Mediation Flow 与其它的 SCA 服务组件并无很大不同,也需要具备以下4个要素:

  需要存在,且仅能存在于一个 Mediation module 中。
  具有一个接口,通常为一个 Java 接口或 WSDL 描述文件。
  可以通过导出(export)暴露给客户端进行调用。
  可以通过导入(import)调用其它服务组件,导入中需要包含绑定协议的信息。

  Mediation Flow 是由一个或多个 mediation primitive 构成,各个 primitive 可以在 WID 的图形化编辑工具中方便的进行拖拽和连接。这些 primitive 更多是用来进行消息流转的控制,而不是执行业务功能。

  事实上,每个节点都可以含有一个失败的端子(terminal),因此当发生错误时,开发者可以选择在任意环节捕捉这个错误并进行处理(handle)。另外,如果表格中的各种 mediation primitive 都不能满足开发者的需求,那么开发者可以选择直接用 Java 代码来创建一个定制的 mediation primitive。不过这种定制的 mediation primitive 具有很大的限制,在本文的后面会提到。

  3.Mediation Flow 的开发、部署与测试

  上文提到的各种 mediation primitive 在 WID 开发环境中均有一一对应。一个 mediation primitive 自身可以有多个端子(terminal)。所有的 mediation primitive 都有一个输入端子用于接收输入的消息。而多数 mediation primitive 有一个或者多个输出端子用于消息的传递。输出端子可以分为两种:失败(fail)端子和成功(successful)端子。根据 mediation primitive 自身的需要,它最多可以有一个失败端子,而成功端子则数目不限。如果在对输入消息的处理过程中产生异常,失败端子将原有输入和一场信息一起传出。如果一个 mediation primitive 的输出端子无任何连接,WID 会产生一个警告。在执行期间,无任何连接的输出端子将会停止信息的路由而不会抛出任何异常,从而使得信息浪费掉,因此推荐开发者尽量对失败情况进行捕捉。

  3.1 WID 中的 mediation primitive

  在 WID 提供的图形化开发 Mediation Flow 模型视图中,对各种 mediation primitive 提供了良好的支持,如图1所示,表1给出了 WID 编辑器中除了 custom mediation primitive 之外所对应的组件。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐