Decision Table也是Business Rule当中的一种规则,主要用于选项比较多的情况,好处是省去写大量的If Else判断。
规则设置如下:订单金额<$1000 由USPS配送;$1000<订单金额<$5000 由UPS配送;订单金额>$5000 由FedEx配送。
SOA 应用设计如下:
重要步骤说明:
1.Decision Table的用法说明。
Decision Table规则使用起来不像IF/THEN规则那样直观,有一些新的技术术语,如Bucketsets,需要仔细领会。
2.增加Fulfillment BPEL,修改SOA 应用设计
所有被同意的订单最终都应该进入配送环节,审视应用后,发现有两个地方应该调用Fulfillment BPEL Process:
(1)approveLargeOrder BPEL process(金额>$1000的订单)。
(2)routePO mediator(金额<$1000的订单)。
3. 把BPEL中的输入参数Fullfillment,赋给业务规则的输入参数:Fullfillment。
4. 把业务规则的输出参数CarrierSelection,赋给BPEL的输出变量中的CarrierSelection。
5. Deploy 出错:在Deploy应用时,抛出如下错误信息,随后Deploy失败。
原因: DFW-40112: 执行 adrci 命令时出错; 找到以下错误 "unable to create new native thread"
OutOfMemoryError: unable to create new native thread。
后来经过分析诊断,发现必须修改setSOADomainEnv.cmd,适当改小最大内存数,如set DEFAULT_MEM_ARGS=-Xms512m -Xmx512m
重新启动Server后,再次发布成功。
具体原因阐述请看《奇怪的错误:OutOfMemoryError: unable to create new native thread》。
不管原因如何,我都觉得这是一个BUG:SOA应用发布时创建那么多线程干嘛?
Project 下载:Lab08 POProcessing.7z
没有评论:
发表评论