产品规则校验

1 篇文章 0 订阅

对于业务方来说,在进行某种业务时,需要校验其是否满足其产品规则

/**
	 * 根据当前给定的bean对表达式expression进行求值(仅仅是求值,并不对表达式的合法性验证):
	 * 求值结果为Object,该object的实际值是:boolean或者数字.
	 * 
	 * @param expression
	 *            规则表达式
	 * @param bean
	 *            类型为CalculatorBean
	 * @return
	 */
	public static Object getValueOfExpression(String expression, CalculatorBean bean) {

		ExpressionFactory factory = new ExpressionFactoryImpl();
		SimpleContext context = new SimpleContext();

		Field[] fields = FinanceCalculatorBean.class.getDeclaredFields();
		ValueExpression ve = null;
		ValueExpression result = null;
		try {
			for (Field f : fields) { // 给context设置变量参数(这些参数本质是CalculatorBean的属性)
				String fieldName = f.getName();
				Class fieldTypeCls = f.getType();
				if ("java.lang.String".equals(fieldTypeCls.getName())||"java.lang.Boolean".equals(fieldTypeCls.getName())||
						"java.lang.Long".equals(fieldTypeCls.getName())||"java.lang.Double".equals(fieldTypeCls.getName())||
						"java.lang.Float".equals(fieldTypeCls.getName())||"java.lang.Integer".equals(fieldTypeCls.getClass().getName())||
						"java.lang.Date".equals(fieldTypeCls.getName())||"java.math.BigDecimal".equals(fieldTypeCls.getName())) {

					PropertyDescriptor pd = new PropertyDescriptor(fieldName, bean.getClass());
					Method method = pd.getReadMethod();
					context.setVariable(fieldName, factory.createValueExpression(method.invoke(bean), fieldTypeCls));
				} 


			}
			ve = factory.createValueExpression(context, expression, Object.class);
			Object tmpRes = ve.getValue(context); // 第一次求值,结果为字符串
			result = factory.createValueExpression(context, "${" + tmpRes + "}", Object.class); // 对第一次结果二次求值
		} catch (Exception e) {
			log.error("规则解析出错!",e);
		}
		return result.getValue(context);
	}

 

如果返回为false校验不通过

 

规则配置说明

     expression中规则表达式字段,一定是CalCulatorbean中字段,否则无法校验,返回false,则此条规则不满足。先循环规则,在循环体内调用以上方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据治理是指通过一系列的策略、流程和技术手段,对企业的数据进行有效管理、保护和优化,以确保数据的质量、一致性和安全性。数据治理的一个重要环节是规则校验,即通过编写和执行SQL语句,校验数据是否符合预先设定的规则和要求。 规则校验SQL是用来检查数据是否符合特定规则的查询语句。它可以用于验证数据的准确性、完整性、一致性以及合法性。规则校验SQL可以基于企业的业务需求和数据治理策略,设置不同的规则,如数据格式规则、唯一性规则、逻辑关系规则等。 在进行规则校验时,首先需要明确要校验规则和数据表,然后编写相应的SQL语句来查询数据并进行校验。例如,要验证某个字段的长度不能超过指定值,可以编写一个类似于以下的SQL语句: SELECT * FROM table WHERE LEN(column) > maxLength; 如果查询结果返回了任何记录,则表示该字段长度超过了规定的最大长度,需要进行进一步处理。 另外,规则校验SQL还可以用于检查数据的一致性。例如,要确保两个表之间的关联字段具有相同的值,可以编写一个类似于以下的SQL语句: SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column WHERE table1.column IS NULL OR table2.column IS NULL; 如果查询结果为空,则表示两个表之间的关联字段具有相同的值,否则则表示数据存在不一致的情况,需要进行进一步处理。 综上所述,规则校验SQL在数据治理起着重要的作用,通过编写和执行SQL语句,可以有效验证数据的质量、一致性和合法性,帮助企业实现数据治理目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值