Vitria BusinessWare: Web Services

BusinessWare的Web Services是其作为集成平台的重要组成部分,而这一部分也确实做的功能强大,使用简单

BusinessWare既可以作为WebService客户端调用其它应用发布的WebService,又可以作为WebService服务端,将整个流程模型发布为WebService,供其它应用调用;而这一切都可以在建模工具BME中通过可视化的界面和向导(Wizard)来方便的完成

 

1,作为WebService服务端

完成这一功能的可视化组件是Web Input Proxy. 从面板上拖放到模型中,你就可以对它进行配置,有几种方式:

  • 直接将它的输出端口与某个流程模型的输入端口相连,则该流程模型会自动被发布为WebService,其接口,操作,就是它的输入端口上定义的接口和操作

  • 通过向导为它指定某个Java接口,则它会将该接口发布为WebService,当然,你需要连接一个流程模型来提供这个Service的一个实现

  • 通过向导为它指定某个WSDL的位置,则它会解析该WSDL,生成Java接口,然后发布为WebService,当然,你需要连接一个流程模型来提供这个Service的一个实现

完成这一功能还有一种方式,就是右击某个流程模型的输入端口,在菜单中现在“输出为WebService”,则BME自动为你创建一个Web Input Proxy并与该端口相连,从而完成发布

你可以在BME中直接将发布的WebService导出为WSDL文件,也可以在流程启动后在浏览器中查看其WSDL

 

2,作为WebService客户端

完成这一功能的可视化组件是Web Output Proxy和Web Service State,二者的配置基本相同,通过向导你可以:

  • 指定将要调用的WebService的WSDL,本地文件系统或远程Web系统皆可

  • 自动解析WSDL,并让你选择将要调用的port之类

  • 最后自动生成客户端Stub文件,供你的Java代码调用

 

3,Weak Type

然而,不止如此,BusinessWare还提供了让你直接操作SOAP Envelope的机会,方法是将Web Input/Output Proxy的端口类型由特定的强类型改为通用的com.vitria.types.XMLServices,这样你就能从Framework传给你的参数中拿到SOAP header,payload,甚至附件等,或者自己构造整个SOAP Envelope用来调用其它应用发布的WebService

这样做有几个好处,比如说能够处理附件,而最重要的就是强类型接口被通用类型接口替代,你可以改变接口而不影响客户代码

比如你将某个参数由整型改为String,如果不能直接处理SOAP,则使用该接口的老客户不得不做出修改;与之相反,使用com.vitria.types.XMLServices,你可以将老客户发过来的SOAP请求中的整型参数转化为String,再进行真正的处理

不要担心BW WebService的客户程序也因此不得不手工构造SOAP请求,你可以在开始的时候使用强类型,并导出WSDL供客户端生成强类型的Stub,然后再将Web Input Proxy改为通用的XMLServices类型

 

附录:

  1. BW的Web Service的实现基于Apache Axis,因此其稳定性,互操作能力等极为可靠

  2. 前段时间使用BEA WebLogic Workshop 8.1,找了半天也没有发现有什么菜单、向导能够让我指定WSDL并生成客户端Stub,实在不爽,后来google了一下发现BEA提供了一个ant的扩展来做这件事情,需要手工写build.xml,呵呵,不知道新版本的Workshop有没有内置该功能?

你可能感兴趣的:(web services)