使用数据库

时间:2017-10-25 17:03:23

标签: java drools bean-validation business-rules

我需要编写drools程序,以根据存储在数据库中的约束来验证bean属性。例如:

class Product {
    private String description;
    private String partNumber;
    private int price;
   //getters and setters
}

the constraints for field are stored in db like

description: mandatory, lengthMax=200
partNumber: mandatory, lengthMax=50
price: number, >0

上述约束将根据行业领域改变产品与产品。

我需要根据产品从db中获取约束,将产品插入工作内存和规则中 并验证对象并报告结果。

我不知道如何在流口水中实现这一点。比如动态验证属性。我正在寻找任何指导或示例。

1 个答案:

答案 0 :(得分:0)

粗略 - 应该有更多细节。

我想,鉴于一个国家,你知道字段及其属性和约束。

一种选择是为生成规则的每个国家/地区使用简单模板。可以添加参数(限制)作为模板扩展的参数。

根据国家/地区的信息,您可以编写自己的代码来生成规则。

也可以生成事实类型,每个国家一个。反思可能有所帮助 - 或者,也可以将所有属性存储在Map中。

修改的 我假设所有产品属性都存储在Map中。 假设对于国家XY,您具有名称“描述”必须为“true”且最大长度为200的数据库条目,您将插入通用事实StringValue并具有规则

$p: Product()
$s: String() from $p.getMap().get( "description" )
StringValue( $s.length() <= maxLen )

如果它触发,则验证产品。数字属性,可选属性等需要其他通用事实。