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);

结束