开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5。
程序运行了一段时间后,开始有客户抱怨订单处理时间太长。
经过分析发现,都是金额>$1000的订单,当信用卡验证通过后,还需客户代表人工审批,而人工审批环节是最耗时的环节。
那么我们该怎么办呢?
最简单的方法当然是提高金额审批的阀值,比如提高到$5000。
但是这样做需要修改。并且随着业务的发展,以后可能还需要修改。显然这个不是好方法。
如何有一种方法能够“智能而动态”地决定是否需要人工审批环节就好了。
Business Rule可以帮我们“优雅”地解决这个问题。
现在,当用户信用卡验证通过后,我们增加了一个业务规则节点,由它来“决定”是否需要人工审批。
比如我们可以设定规则如下:金额>$5000的订单需要人工审批,否则自动同意。
SOA 应用设计如下:
我们根据订单金额的大小,来决定是否需要人工审批。
重点步骤说明:
1. 我们使用IF/THEN Rules,设置如下:
2. 在BPEL流程中,创建一个新的变量:approvalRequired,用来存储是否需要人工审批。
3. 把BPEL中的输入参数单价*数量的总金额值,赋给业务规则的输入参数:price。
4. 把业务规则的输出参数discountAndShipping,赋给前面新创建的变量:approvalRequired。
5. 修改BPEL的逻辑,只有当approvalRequired=true时,才进入人工审批环节。
6. 最后还有一个遗留问题,就是如何动态修改Business Rule?比如把需要人工审批的金额提高到$10000。
访问WLS Console,找到并启动一个叫composer的应用,访问http://localhost:7001/soa/composer,找到你要修改的Business Rule,修改后,测试一下看看新规则是否生效。
Project 下载:Lab07 POProcessing.7z
没有评论:
发表评论