Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相关领域的验证_Java_Validation_Jakarta Ee - Fatal编程技术网

Java 相关领域的验证

Java 相关领域的验证,java,validation,jakarta-ee,Java,Validation,Jakarta Ee,我们有一个验证系统,它强制用户在一组相互关联的字段中从一组有效的值中进行选择 用户必须填写列表中的第一个值,他们选择的值决定了他们可以在第二个字段中选择哪一组值。他们在第二个字段中选择的值限制了第三个字段中的选择集。等等 所有相关字段都组织在树结构中,即用户从一个根字段开始,并且从根开始沿树向下有各种路径,例如: Field1 / \ Field2 Field7 | | Field3 etc

我们有一个验证系统,它强制用户在一组相互关联的字段中从一组有效的值中进行选择

用户必须填写列表中的第一个值,他们选择的值决定了他们可以在第二个字段中选择哪一组值。他们在第二个字段中选择的值限制了第三个字段中的选择集。等等

所有相关字段都组织在树结构中,即用户从一个根字段开始,并且从根开始沿树向下有各种路径,例如:

        Field1
       /      \
    Field2   Field7
      |        |
    Field3    etc
      |
    Field4
    /     \
 Field5   Field6
我们选择的实现方式是使用以下数据库模型:

ID
Parent ID
Field Type
Delimited Chain Data


1,null,Field1,F1-1
2,   1,Field2,F1-1|F2-1
3,   1,Field2,F1-1|F2-2
4,   1,Field2,F1-1|F2-3
5,   1,Field2,F1-1|F2-4
6,   2,Field3,F1-1|F2-1|F3-1
7,   2,Field3,F1-1|F2-1|F3-2
8,   3,Field3,F1-1|F2-2|F3-1
9,   3,Field3,F1-1|F2-2|F3-3
etc
数据值之间的关系是多对多的,例如,字段3中的多个值与字段2中的多个值相关

此结构允许您做两件事:

  • 轻松查询特定字段的一组值,在该字段上方提供以前选择的数据
  • 检查树中的给定路径是否包含其所有字段的有效值
然而,这一体系已经发展壮大。其中一些字段有数千个可能的值。总共大约有30个字段。因此,当你在整个树中排列出所有可能的有效值集时,有数以千万计的组合。系统开始出现裂缝,值集的数据维护变得困难

我的问题是:

  • 是否有人遇到过类似的相互关联的字段验证问题?你是怎么解决的
  • 是否有任何产品或开源库(最好是基于Java的)可以帮助解决包含如此大量组合的类似问题
  • 有人对替代实施战略有什么建议吗

谢谢。

看看规则引擎。他们使用内存而不是CPU来加速进行数百万次比较所需的时间

JBoss可能值得一看


以下是设置决策逻辑的方法。

如何在PMML文档中描述您的规则,并在每个节点上实现一个支持谓词的访问者


PMML涵盖了许多型号,但树形型号可能最适合您的需要。

谢谢。我认为规则引擎更适用于业务规则之类的东西,例如,检查一个人的年龄是否在18到25岁之间?它们当然适用于业务规则,但您所描述的内容听起来与我有关。:-)所以你可以问Drool“如果字段1有值A,字段2有值B,那么字段3的可能值集是什么?”?