Java 在JBoss Drools的同一个程序中,是否可以引用.drl和.xls中的规则?
我正在寻找Drools作为规则应用程序用例的可能性。我能够让Drools在此时独立地引用.xls文件和.drl文件中的规则集。但是,在我的例子中,有时规则不作为.xls文件存在,而是在.drl文件中编程。因此,我想知道在同一个程序执行中,是否可以根据特定的输入条件使用这两个文件?例如,如果State==GA,则使用.xls,否则如果 State==FL,然后使用.drl 我已经阅读了不同的KIE概念,并从较高的层次上理解了它们,我相信我必须将每个规则文件创建为一个单独的KIE容器,然后根据将它们加载到单个KieBase中。然而,当涉及到这一步时,我对如何完成感到困惑。我已经创建了两个独立的实例,我是否能够使用KieBase将这两个实例简单地合并到一个程序中 .xls实现 .drl实现Java 在JBoss Drools的同一个程序中,是否可以引用.drl和.xls中的规则?,java,drools,Java,Drools,我正在寻找Drools作为规则应用程序用例的可能性。我能够让Drools在此时独立地引用.xls文件和.drl文件中的规则集。但是,在我的例子中,有时规则不作为.xls文件存在,而是在.drl文件中编程。因此,我想知道在同一个程序执行中,是否可以根据特定的输入条件使用这两个文件?例如,如果State==GA,则使用.xls,否则如果 State==FL,然后使用.drl 我已经阅读了不同的KIE概念,并从较高的层次上理解了它们,我相信我必须将每个规则文件创建为一个单独的KIE容器,然后根据将它们
作为附录,如果可能,这是通过最终合并程序的主要部分实现的,还是在规则本身内实现的?是的,您可以在一个项目中合并这两种类型的文件。您可以使用xls格式编写规则,该格式将匹配状态GA,而使用DRL文件编写的规则将匹配其他状态。我建议您先阅读Drools文档,以便了解规则、KJars等的基本概念[1]。我认为这一章可能对你有所帮助[2] [1] [2]
public static void main (String[] args) {
try {
KieServices ks = KieServices.Factory.get();
// add excel sheet to knowledge base
Resource dt = ResourceFactory.newClassPathResource("dtables/StateInterest.xls");
KieFileSystem kieFileSystem = ks.newKieFileSystem().write(dt);
KieBuilder kieBuilder = ks.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
KieRepository kieRepository = ks.getRepository();
ReleaseId krDefaultReleaseID = kieRepository.getDefaultReleaseId();
KieContainer kieContainer = ks.newKieContainer(krDefaultReleaseID);
KieSession kSession = kieContainer.newKieSession();
// go !
StateInterestRequest stateInterestRequest = new StateInterestRequest();
stateInterestRequest.setPolicyIssueState("GA");
stateInterestRequest.setPolicyIssueDate("10/2018");
kSession.insert(stateInterestRequest);
kSession.fireAllRules();
public static final void main(String[] args) {
try {
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
// go !
StateInterestRequest stateInterestRequest = new StateInterestRequest();
stateInterestRequest.setPolicyIssueState("FL");
stateInterestRequest.setPolicyIssueDate("2008-03-04");
kSession.insert(stateInterestRequest);
kSession.fireAllRules();