Drools 确定决策表中哪些字段与事实不匹配
我有一个用例,它要求我知道决策表中哪些字段匹配,哪些字段不匹配。我知道Drools使用算法来有效地识别匹配,它不是一种程序性的方法,它会逐个检查字段,但我仍然想知道是否有可能在字段级别识别匹配Drools 确定决策表中哪些字段与事实不匹配,drools,kie,redhat-brms,Drools,Kie,Redhat Brms,我有一个用例,它要求我知道决策表中哪些字段匹配,哪些字段不匹配。我知道Drools使用算法来有效地识别匹配,它不是一种程序性的方法,它会逐个检查字段,但我仍然想知道是否有可能在字段级别识别匹配 用一个简化的例子来说明它,考虑下面的决策表: 现在,假设我正在使用RESTAPI提交事实以获得决策。如果我发送以下事实: 车辆类型:汽车 尺寸:轿车 制造商:日产 建成年份:2015年 我不会找到任何匹配项,因为没有涵盖2015年的匹配规则。但是,我想知道Drools找到了与车型、尺寸和制造商匹配的车型,
用一个简化的例子来说明它,考虑下面的决策表:
现在,假设我正在使用RESTAPI提交事实以获得决策。如果我发送以下事实:处理这个用例的建议方法是什么?这是一个多么有趣的问题。在我看来,你可以使用部分规则继承,然后看看哪些规则匹配;部分匹配将显示您找到了汽车/尺寸/制造商匹配,但没有汽车/尺寸/制造商/年份。不过,我不确定你会在决策表中如何做到这一点。你可以“模拟”这一年,看看是否会触发整个规则,并判断其他领域是否需要回复。虽然考虑了继承,但它的问题是规则管理开销,更重要的是,规则变得更像程序性的。关于“模拟”年,您的意思是如果规则引擎找不到任何匹配项,请再次调用它并通过已知存在的一年?因此,很明显,这一年的问题是什么?我在这里看到的问题是,我在实际的实现中有更多的字段,所以这可能是不切实际的。表数据用于用setter和getter填充模型类。您可以模拟所需的getter来返回所需的数据并覆盖表中的数据,以便触发规则并确认其他匹配字段或显示相反的字段。@换句话说,您的建议是1。调用规则,如果未找到匹配项,则为2。使用我知道应该存在的字段值再次调用规则,如果找到匹配项,则这是不匹配的字段,如果没有,则为3。尝试下一个领域,等等,我的理解是否正确?这是一个多么有趣的问题。在我看来,你可以使用部分规则继承,然后看看哪些规则匹配;部分匹配将显示您找到了汽车/尺寸/制造商匹配,但没有汽车/尺寸/制造商/年份。不过,我不确定你会在决策表中如何做到这一点。你可以“模拟”这一年,看看是否会触发整个规则,并判断其他领域是否需要回复。虽然考虑了继承,但它的问题是规则管理开销,更重要的是,规则变得更像程序性的。关于“模拟”年,您的意思是如果规则引擎找不到任何匹配项,请再次调用它并通过已知存在的一年?因此,很明显,这一年的问题是什么?我在这里看到的问题是,我在实际的实现中有更多的字段,所以这可能是不切实际的。表数据用于用setter和getter填充模型类。您可以模拟所需的getter来返回所需的数据并覆盖表中的数据,以便触发规则并确认其他匹配字段或显示相反的字段。@换句话说,您的建议是1。调用规则,如果未找到匹配项,则为2。使用我知道应该存在的字段值再次调用规则,如果找到匹配项,则这是不匹配的字段,如果没有,则为3。尝试下一个领域,等等,我的理解是否正确?