SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程

声明:该博客转自热爱java,热爱生活,原文地址http://maping930883.blogspot.com/

接着上一个实验,我们增加了以下功能:
当订单金额<$1000时,直接把订单内容写到文件里。
当订单金额>$1000时,验证用户的信用卡,并根据返回值,设置订单的状态。

SOA 应用设计如下

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程
重要步骤说明:

1. 在查找已经发布的服务时,比如validationForCC服务,可以从SOA Server上直接查找,如下图:


或者直接访问EM Console上,找到validationForCC服务的WSDL URL,如下图:

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程
2. 使用Invoke Action
使用Invoke Action调用一个同步服务时,需要建立Invoke的输入和输出参数,但由于Invoke的输入参数和BPEL的输入参数格式不同。
比如这里BPEL的输入参数格式是internalorder.xsd,Invoke的输入参数的格式来自WSDL定义的Schema,因此需要用Assign Action来转换。
同时,我们把BPEL的输入参数直接赋值给BPEL的输出参数,这样保证BPEL返回时输出参数有值。
当然真正的输出参数值不可能完全跟输入参数值一样,后边我们会看到,是如何修改输出参数值的。
最终的转换结果如下图:

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程
3. 得到validationForCC服务的返回值后,把它赋值给BPEL的输出参数。如下图:


SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程

4. 点击左上角“绿勾”,检查BPEL是否语法正确,警告信息也不要放过。如下图:

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程
5. 验证完毕订单金额>$1000的用户信用卡后,结果还要写到文件中,因此要在CallBack中调用WriteApprovalResults服务。如下图:

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程
6. 测试时,会发现验证用户信用卡服务是一个synchronous (request-response) 调用,request-response 同时在payload中可以看到。如下图:

SOA Suite 11g 开发指南之五:使用BPEL编排订单处理流程

你可能感兴趣的:(SOA)