【问题标题】:Rules Engine using DMN - Input Array question使用 DMN 的规则引擎 - 输入数组问题
【发布时间】:2022-11-15 21:04:34
【问题描述】:

我确实对我的决策引擎用例有独特的需求。我通过像 RedHat Process Automation Manager 这样的 GUI 编辑器使用 DMN 和 DRD。打个比方,假设我有一个简单的决策调用“CreditApproved”,它需要一个输入。

输入:

{ [
{BorrowerId:12345,
BorrowerIncome:50000,
 FICO:600},
{BorrowerId:12346,
BorrowerIncome:90000,
 FICO:720}
 ]  
}
DECISION:
IF (BorrowerIncome>60000) and (FICO>700))
    ApprovalInd = "Y"
ELSE
    ApprovalInd = "N"

预期输出:

{ [
{BorrowerId:12345,
 BorrowerIncome:50000,
 FICO:600,
 ApprovalInd: "N"
},
{BorrowerId:12346,
 BorrowerIncome:90000,
 FICO:720,
 ApprovalInd: "Y"
}
 ]  
}

问题: 给定输入中的借款人数组(此 JSON 结构是我从调用 API 获得的),我如何迭代决策 n 次(在上例中为 2 次)并生成与输入 JSON 但将 ApprovalInd 附加到数组的每个匹配项

【问题讨论】:

  • 那么在触发规则后,数组中的每个项目都会有{BorrowerId: ... , ApprovalInd: Y}
  • 否 - 这是决定的输入
  • 然后请包括您的预期输出,因为您说“将 ApprovalInd 附加到每次出现”,这就是我在我的示例中所做的,但您是说这不是您要找的。
  • 上述输入的预期输出:

标签: drools dmn


【解决方案1】:

你可以使用 FEEL-Expression:

for c in Input return {
    "BorrowerId": c.BorrowerId,
    "BorrwerIncome": c.BorrowerIncome,
    "FICO": c.FICO,
    "ApprovalInd": if c.BorrowerIncome > 60000 and FICO > 700 then "Y" else "N"
}

此 FEEL-Expressions 遍历称为“输入”的输入中的所有条目,并为 BorrowerId、BorrowerIncome 和 FICO 返回相同的值。 ApprovalInd 的值由 if-then 语句确定。

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多