过了一会儿,我能够读入一个包含规则文件和事实对象的 jar 文件,然后将它们用于解决计划。因此,随着 jar 文件的提供,这里是对我有用的代码。
String url = "http://<enter url to service endpoint serving jar file here>";
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url);
InputStream is = urlResource.getInputStream();
Resource rs = ks.getResources().newInputStreamResource(is);
KieModule kModule = kr.addKieModule(rs);
KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());
KieBase kbase = kContainer.getKieBase("<kbase name here>");
// solver factory injected
solverFactory.getSolverConfig().getScoreDirectoryFactoryConfig().setKieBase(kbase);
Solver solver = solverFactory.buildSolver();
我在 kModule.xml 文件中使用不同的 kbase 定义来指向包含正确规则文件的正确包,因此 kmodule 中有多个 kbase。希望这可以帮助其他人从正确的地方开始。