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

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

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

SOA 应用设计如下

[img]http://dl.iteye.com/upload/attachment/0071/7152/3e1a56b3-cde1-3071-aaa4-a19981c00e63.png[/img]
重要步骤说明:

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

[img]http://dl.iteye.com/upload/attachment/0071/7154/c9de5e57-e3b6-3a92-8ee6-9ccfaaf91e80.png[/img]
或者直接访问EM Console上,找到validationForCC服务的WSDL URL,如下图:

[img]http://dl.iteye.com/upload/attachment/0071/7156/9958732e-1031-3c31-b5c2-c53809c2850c.png[/img]
2. 使用Invoke Action
使用Invoke Action调用一个同步服务时,需要建立Invoke的输入和输出参数,但由于Invoke的输入参数和BPEL的输入参数格式不同。
比如这里BPEL的输入参数格式是internalorder.xsd,Invoke的输入参数的格式来自WSDL定义的Schema,因此需要用Assign Action来转换。
同时,我们把BPEL的输入参数直接赋值给BPEL的输出参数,这样保证BPEL返回时输出参数有值。
当然真正的输出参数值不可能完全跟输入参数值一样,后边我们会看到,是如何修改输出参数值的。
最终的转换结果如下图:

[img]http://dl.iteye.com/upload/attachment/0071/7158/b41062a6-fdf9-3606-b243-e8be282ecde2.png[/img]
3. 得到validationForCC服务的返回值后,把它赋值给BPEL的输出参数。如下图:


[img]http://dl.iteye.com/upload/attachment/0071/7162/28c753c8-d3b8-3a8d-98dc-ed36210e3ca1.png[/img]

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

[img]http://dl.iteye.com/upload/attachment/0071/7160/f207d9b4-0ed6-3a4e-87fc-c3e84413f7f8.png[/img]
5. 验证完毕订单金额>$1000的用户信用卡后,结果还要写到文件中,因此要在CallBack中调用WriteApprovalResults服务。如下图:

[img]http://dl.iteye.com/upload/attachment/0071/7166/e3cf2a59-dd85-34b3-9842-3125fa2b2843.png[/img]
6. 测试时,会发现验证用户信用卡服务是一个synchronous (request-response) 调用,request-response 同时在payload中可以看到。如下图:

[img]http://dl.iteye.com/upload/attachment/0071/7168/b9619dd5-e782-3f0c-af17-66694a2f56ec.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值