如何在DMN决策引擎中遍历借款人数组并追加审批标识?
在Red Hat Process Automation Manager中处理批量借款人信用审批决策
场景说明
我在决策引擎场景中有特殊需求,正通过Red Hat Process Automation Manager的GUI编辑器使用DMN和DRD。需要实现一个名为CreditApproved的决策,批量处理API返回的借款人数组,为每个借款人执行信用审批逻辑并追加审批结果。
输入JSON结构
[ { "BorrowerId": 12345, "BorrowerIncome": 50000, "FICO": 600 }, { "BorrowerId": 12346, "BorrowerIncome": 90000, "FICO": 720 } ]
(注:原输入外层{}直接包裹数组不符合标准JSON格式,实际使用建议调整为带键的结构,比如{"borrowers": [...]}, 以下方案按标准数组输入处理)
审批决策逻辑
IF (BorrowerIncome > 60000) AND (FICO > 700) ApprovalInd = "Y" ELSE ApprovalInd = "N"
预期输出JSON结构
[ { "BorrowerId": 12345, "BorrowerIncome": 50000, "FICO": 600, "ApprovalInd": "N" }, { "BorrowerId": 12346, "BorrowerIncome": 90000, "FICO": 720, "ApprovalInd": "Y" } ]
实现步骤
1. 定义数据类型
在DMN编辑器中创建Borrower数据类型,包含字段:
BorrowerId: 数字类型BorrowerIncome: 数字类型FICO: 数字类型
同时定义输入参数BorrowersList,类型为List<Borrower>(借款人数组)。
2. 编写单个借款人审批决策
创建名为SingleCreditApproval的决策节点,输入为单个Borrower实例,输出为追加ApprovalInd的Borrower对象。使用FEEL表达式编写逻辑:
{ BorrowerId: Borrower.BorrowerId, BorrowerIncome: Borrower.BorrowerIncome, FICO: Borrower.FICO, ApprovalInd: if (Borrower.BorrowerIncome > 60000 and Borrower.FICO > 700) then "Y" else "N" }
3. 实现批量遍历处理
创建名为BatchCreditApproval的顶层决策节点,输入为BorrowersList,使用FEEL的for循环遍历数组,对每个元素调用单个审批决策:
for borrower in BorrowersList return SingleCreditApproval(borrower)
也可以直接在批量决策中内嵌逻辑,无需单独的单个决策节点:
for borrower in BorrowersList return { BorrowerId: borrower.BorrowerId, BorrowerIncome: borrower.BorrowerIncome, FICO: borrower.FICO, ApprovalInd: if (borrower.BorrowerIncome > 60000 and borrower.FICO > 700) then "Y" else "N" }
4. 配置DRD与API映射
- 在DRD图中连接输入
BorrowersList到BatchCreditApproval决策节点,设置该决策为最终输出。 - 通过API调用时,将传入的借款人数组映射到
BorrowersList输入参数,接口返回的结果即为处理后的数组,每个元素自动追加ApprovalInd字段。
内容的提问来源于stack exchange,提问作者gudu
相关产品推荐
相关产品推荐

