寻求适用于企业应用的Java开源XML数据验证业务规则引擎
求推荐Java开源业务规则引擎:用于大体积XML数据验证
我正在为企业应用寻找一款基于Java的开源业务规则引擎,用于XML数据验证。以下是简化后的示例XML:
<Employees> <Employee> <EmployeeId>1</EmployeeId> <FirstName>Dave</Firstname> <MiddleName>M</MiddleName> <LastName>Doe</LastName> <!-- On this field validate: - Minimum base salaray is at least 50000 - Maximum base salaray does not exceeds 100000 --> <BaseSalary>54000</BaseSalary> <!-- On this field validate: - Maximum bonuses does not exceeds 10000 --> <Bonuses>2000</Bonuses> <!-- On this field validate: - Maximum commission does not exceeds 50000 --> <Commission>4000</Commission> <!-- On this field validate: - BaseSalary + Bonuses + Commission = TotalComp --> <TotalComp>60000</TotalComp> </Employee> <Employee> <EmployeeId>2</EmployeeId> <FirstName>John</Firstname> <LastName>Smith</LastName> <!-- On this field validate: - Minimum base salaray is at least 50000 - Maximum base salaray does not exceeds 100000 --> <BaseSalary>60000</BaseSalary> <!-- On this field validate: - Maximum bonuses does not exceeds 10000 --> <Bonuses>4000</Bonuses> <!-- Since Commission tag doesn't exists commission validation should not trigger --> <!-- On this field validate: - BaseSalary + Bonuses + Commission = TotalComp --> <TotalComp>64000</TotalComp> </Employee> <Employee> <EmployeeId>3</EmployeeId> <FirstName>Thomas</Firstname> <MiddleName>L</MiddleName> <LastName>Johnson</LastName> <!-- On this field validate: - Minimum base salaray is at least 50000 - Maximum base salaray does not exceeds 100000 --> <BaseSalary>60000</BaseSalary> <!-- On this field validate: - Maximum bonuses does not exceeds 10000 --> <Bonuses>5000</Bonuses> <!-- On this field validate: - Maximum commission does not exceeds 50000 --> <Commission>4000</Commission> <!-- On this field validate: - BaseSalary + Bonuses + Commission = TotalComp --> <TotalComp>69000</TotalComp> </Employee> </Employees>
具体验证需求
- 规则触发依赖标签存在性:例如员工#2缺少Commission标签,则不执行与Commission相关的验证
- 单个XML标签可绑定多条验证规则
- 单条规则可同时验证多个XML字段
- 支持运行时动态增删规则
- 处理100MB至1GB的XML文件,禁止全量加载至内存
- 具备验证会话机制:验证后续员工时,规则可访问之前员工的数据及验证结果(如验证员工#3时能调用员工#1、#2的相关信息)
适配需求的开源引擎推荐
Drools
- 支持规则的动态增删改,运行时可直接调整规则库,无需重启应用
- 可结合SAX或StAX流式XML解析方式,逐节点处理大体积XML,避免内存溢出
- 规则可通过条件判断标签是否存在来触发对应逻辑,轻松实现单标签多规则、单规则多字段的验证配置
- 内置的KieSession可维护验证上下文,存储历史员工数据与验证结果,供后续规则访问调用
OpenRules
- 轻量级Java规则引擎,规则定义直观易懂,支持动态更新规则集合
- 配合流式XML解析组件,适合处理大体积XML文件的增量验证
- 可通过自定义规则上下文对象跟踪验证会话中的历史数据,满足跨员工的关联验证需求
- 能灵活配置规则与XML标签的绑定关系,实现基于标签存在性的规则触发逻辑
内容的提问来源于stack exchange,提问作者T.J
相关产品推荐
相关产品推荐

