异步操作和 Web 服务,第 3 部分: 向 Web 服务添加业务语义
2010-03-23 00:00:00 来源:WEB开发网这些机制使 IT 设计师和业务分析师可以满足我在本文开头处列出的异步操作的第 2 和第 4 条要求。
利用相关器
大多数情况下,一个服务将被回调机制的每个参与伙伴使用,因此,需要把相关器的使用定义为业务流程定义的一部分。通常情况下,业务协议信息,比如客户标识、订单号、供应商标识和发票号将被用于把请求与响应关联起来;当几个交互需要互相关联起来时,有时必须把各个相关器结合起来。最初的交互可能使用客户标识和订单号相关器的组合,而响应和后续的交互可能也包含一个发票号相关器。
由于业务协议数据在实际交互中被用于把业务任务关联在一起,因此,自然也是使用这种数据把 Web 服务请求和响应关联起来。为把业务协议数据作为相关器使用,您需要使用流程定义把消息属性定义为已命名的数据类型,这样您就可以给现有类型赋予更密切相关的意思(例如,把 OrderNumber 属性定义为 integer 类型或者把 VendorID 属性定义为 String 类型)。一旦定义了一个属性,您就可以指定一个 propertyAlias 来根据消息的结构(例如,通过标识 WSDL 的 <message> 和 <part> 元素)和 XPATH 查询字符串标识出特定的业务协议数据位于应用程序消息的何处。从本质上来说,这是在消息内定义了一些字段,在这些字段中可以找到相关器的值。
清单 3. property 和 propertyAlias 示例
targetNamespace="http://example.com/supplyCorrelation.wsdl"
xmlns:tns="http://example.com/supplyMessages.wsdl"
xmlns:bpws=http://schemas.xmlsoap.org/ws/2002/07/business-process/
<!-- define correlation properties -->
<bpws:property name="customerID" type="xsd:string"/>
<bpws:property name="orderNumber" type="xsd:int"/>
<bpws:property name="vendorID" type="xsd:string"/>
<bpws:property name="invoiceNumber" type="xsd:int"/>
<bpws:propertyAlias propertyName="customerID"
messageType="tns:POMessage" part="PO"
query="/CID"/>
<bpws:propertyAlias propertyName="orderNumber"
messageType="tns:POMessage" part="PO"
query="/Order"/>
<bpws:propertyAlias propertyName="vendorID"
messageType="tns:InvMessage" part="IVC"
query="/VID"/>
<bpws:propertyAlias propertyName="invoiceNumber"
messageType="tns:InvMessage" part="IVC"
query="/InvNum"/>
- ››WEBGAME龙虎榜,《传奇国度》成黑马
- ››操作系统资源不足两种方案解决办法
- ››WebQQ 2.0添加谷歌音乐方法
- ››WebLogic调整Java虚拟机性能优化参数
- ››webqq2.0协议研究(3)-ClientId生成
- ››Web.config配置文件
- ››WebBrowser组件的execWB方法——Delphi控制浏览器...
- ››Web前端设计模式--制作漂亮的弹出层
- ››WebSphere 反向投资者: 解决 WebSphere Applicati...
- ››WebSphere sMash 的创新应用,第 2 部分: 借助包装...
- ››WebQQ2.0怎样对话区域比例调节
- ››WebQQ2.0——QQ阅读&酷六视频上线
更多精彩
赞助商链接