SOADEMO系统
从OTN可以下载到一个soademo_101310_preview.zip,这是SOADEMO的源码包,可以在JDeveloper中打开。
注意,这个包可能有点问题:如果这个包的根目录下有一个叫decisionservices的文件夹,请把它删除掉,因为它可能会造成编译无法通过,错误原因是duplicate class。
简介
这里我们虚构了一个叫做Global Company的公司,它的主要业务就是在网上卖电子产品,比如MP3等。从功能的角度来说,SOA Order Booking系统实现了“从客户登陆web client端填写订单,到后面的可能的人工批示,再到选择supplier(供货商),最后到选择自动选择发货方式和通知客户”。从技术的角度来说,它充分的展示了如何将现有的企业内部应用程序和企业外部应用程序组装在一起构成一整套流程。
下面这副图就是SOA Order Booking系统的一个overview,从中你可以看出它的大致流程。请注意,很多应用程序都“松耦合”的参与其中,它们不只是可以在SOA Order Booking系统中使用,也可以被别的系统使用。
流程详解
1、
客户使用SOADEMO-CLIENT浏览货物并填写订单(order),订单发出后会自动调用OrderBookingESB服务
2、
OrderBookingESB服务接到请求后调用SOAOrderBooking BPEL应用,该应用定义了SOA Order Booking系统的主要流程。
3、
SOAOrderBooking把订单插入到数据库中
4、
SOAOrderBooking调用CustomerService服务从数据库中提取客户信息
5、
SOAOrderBooking调用CreditService服务来检查客户的信用卡(credit card)是否合法。如果不合法,自动取消这个订单;否则,将订单和客户的具体情况一起发给RULES引擎(决策服务)
6、
SOAOrderBooking通过RULES引擎(决策服务)定义的规则来决定是否需要人工审批:
a) 如果用户的status是白金(platinum),无需人工审批
b) 如果用户的staus是金(gold),当订单的总额超过1000美元时需要人工审批
c) 如果用户的status是银(silver),不管订单大小都需要人工审批
7、
如果订单需要人工审批,SOAOrderBooking调用人工流程(human workflow),并给有关人员发送消息。
8、
如果订单需要人工审批,有关人员登陆到worklist应用程序,批准或拒绝。SOAOrderBooking收到拒绝回复时,取消该订单,否则进行下一步。
9、
SOAOrderBooking同时向SelectManufacturer服务和RapidService服务请求报价,这里:
a) SelectManufacturer是一级代理商,所以报价比较低,但是它响应不是非常及时,即它是异步返回报价