在 创建文件核对规则 的过程中,您可以在设置核对配置时进行以下高级配置。
说明
高级配置 仅适用于创建文件核对规则的场景。对于离线核对规则,未提供该选项。
规则表达式
如果在设置规则表达式时开启 高级配置 开关,您可以使用 qlExpress 或 Groovy 自定义较为复杂的表达式。
若选择 qlExpress,示例如下:
引用数据源或文件时,需要使用数据节点名称。
多个规则用英文逗号 [,] 隔开。
获取数据节点上的数据。使用时须使用字段对应的映射字段。
DCD0191204k29o26m1.fileamount < DCD019120997hcfyh1.payamount , DCD0191204k29o26m1.fileamount <= DCD019120997hcfyh1.payamount
若选择 Groovy,示例如下:
重要模型 一词非字面义,本文特指 映射字段,即字段映射关系。以
核对模型,一左一右
为例,是指会根据映射字段分别为两个数据节点生成两个模型。
import com.alibaba.common.lang.StringUtil
import com.alibaba.fastjson.JSONObject
import org.slf4j.LoggerFactory;
import com.alipay.finorm.common.util.LoggerConstants;
import com.alipay.finorm.common.util.LoggerUtil;
import com.alipay.finorm.common.facade.enums.RuleResultErrorCode
import com.alipay.finorm.common.facade.sdk.GuardianContext
import com.alipay.finorm.common.facade.model.immune.RuleResult
def ruleExecute(rule, immuneModelList) {
def LOGGER = LoggerFactory.getLogger(LoggerConstants.BIZ_GUARDIAN);
def ruleResult = new RuleResult()
ruleResult.setRuleId(rule.ruleId)
ruleResult.setRuleName(rule.ruleName)
ruleResult.setIsSuccess(true)
if (immuneModelList==null){
return ruleResult
}
//上下文 map
def tmModel = GuardianContext.getBizEventContext();
//核对模型,一左一右,可以通过模型 id 等关键信息判断具体谁左谁右
def model1 = immuneModelList.get(0);
def model2 = immuneModelList.get(1);
//获取模型上的数据,明细核对时候,是一行数据的 fieldName; 汇总核对时候,是自定义的汇总字段 fieldName;
Map<String, Object> kv1 = model1.getFieldName2Value();
Map<String, Object> kv2 = model2.getFieldName2Value();
//汇总数值; 明细核对时候,可以获取到明细数值
Object id_sum1 = kv1.get("fileamount");
Object id_sum2 = kv2.get("payamount");
//可以统一转为 bigdecimal 的方式处理
def isSuccess = id_sum1 > id_sum2;
// 核对结果
ruleResult.setIsSuccess(isSuccess);
// 如果失败,失败的原因可以在这里放进去
ruleResult.setRuleErrorCode(" fileamount :" + id_sum1 +" [class:"+id_sum1.class + "] vs payamount :" + id_sum2+" [class:"+id_sum2.class + "]" )
打印日志
LoggerUtil.info(LOGGER, " ###groovy### immuneModelList :" + JSONObject.toJSONString(immuneModelList) + " ruleResult :" + JSONObject.toJSONString(ruleResult));
return ruleResult
}
文档内容是否对您有帮助?