Drools - 来自多个规则执行的响应 XML
Drools - Response XML from multiple rule execution
我有以下两条规则:
global Response myResponse;
rule "rule1"
when
Loan(processId == "1")
then
myResponse.setRuleId("rule1");
myResponse.setPmtStatus("valid");
end
rule "rule2"
when
Loan(amount > 1000)
then
myResponse.setRuleId("rule2");
myResponse.setPmtStatus("invalid");
end
当我通过发送以下请求的 REST 访问 Drools 时 XML,根据插入的数据,两个规则都应该触发。
<batch-execution lookup="testsession">
<set-global identifier="myResponse" out-identifier="response">
<com.sample.Response></com.sample.Response>
</set-global>
<insert out-identifier = "loan">
<com.sample.Loan>
<loanId>11112222</loanId>
<processId>1</processId>
<amount>2000.00</amount>
</com.sample.Loan>
</insert>
<fire-all-rules/>
</batch-execution>
在我的回复 XML 中,我希望收到来自这两个规则的结果信息。例如,我想获得一个 ruleID = rule1 和 pmtStatus = valid 的响应节点,以及另一个 ruleId = rule2 和 pmtStatus = invalid 的节点。
现在,我只能从最后执行的规则中获得结果。请您告知我应该如何提出请求,以便在我的 return XML 中接收所有触发规则的结果。
谢谢
如果规则的数量限制为两个并且将来不会扩展,您可以分别为每个规则创建 2 个全局响应对象。
或者您可以通过引用 DRL 文件来传递 List 对象。
rule "rule1"
when
Loan(processId == "1")
$list: ArrayList<Response>
myResponse:Response()
then
myResponse.setRuleId("rule1");
myResponse.setPmtStatus("valid");
$list.add(myResponse);
结束
我有以下两条规则:
global Response myResponse;
rule "rule1"
when
Loan(processId == "1")
then
myResponse.setRuleId("rule1");
myResponse.setPmtStatus("valid");
end
rule "rule2"
when
Loan(amount > 1000)
then
myResponse.setRuleId("rule2");
myResponse.setPmtStatus("invalid");
end
当我通过发送以下请求的 REST 访问 Drools 时 XML,根据插入的数据,两个规则都应该触发。
<batch-execution lookup="testsession">
<set-global identifier="myResponse" out-identifier="response">
<com.sample.Response></com.sample.Response>
</set-global>
<insert out-identifier = "loan">
<com.sample.Loan>
<loanId>11112222</loanId>
<processId>1</processId>
<amount>2000.00</amount>
</com.sample.Loan>
</insert>
<fire-all-rules/>
</batch-execution>
在我的回复 XML 中,我希望收到来自这两个规则的结果信息。例如,我想获得一个 ruleID = rule1 和 pmtStatus = valid 的响应节点,以及另一个 ruleId = rule2 和 pmtStatus = invalid 的节点。
现在,我只能从最后执行的规则中获得结果。请您告知我应该如何提出请求,以便在我的 return XML 中接收所有触发规则的结果。
谢谢
如果规则的数量限制为两个并且将来不会扩展,您可以分别为每个规则创建 2 个全局响应对象。 或者您可以通过引用 DRL 文件来传递 List 对象。
rule "rule1"
when
Loan(processId == "1")
$list: ArrayList<Response>
myResponse:Response()
then
myResponse.setRuleId("rule1");
myResponse.setPmtStatus("valid");
$list.add(myResponse);
结束