Java 8, drools 5.x и drools 7.x
я с помощью слюнки текут 5.х (слюнки текут-компилятор 5.2.1.Финал, слюнки текут-decisiontables 5.4.0.Окончательной, и слюнки текут-шаблоны 5.4.0.Финал; jBPM в поток 5.1.1.Финал, которого jBPM-bmpn2 5.1.1.Окончательной и их соответствующих зависимостей) для Java с работы, я построить/запустить его с Java 1.7.0_21. Моя нынешняя установка работает нормально. Я использую таблицу решений (электронную таблицу).
Я могу построить/запустить свой проект с Java 1.8.0_162, используя drools 5.x, как описано выше; однако, когда задание java запускается, оно загружает таблицу решений (электронную таблицу), но не запускает ни одно из правил, я не получаю исключения в последней строке, которая выполняется:
Properties props = new Properties(); KnowledgeBuilderConfiguration configuration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(props); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newDecisionTableConfiguration(configuration); DecisionTableConfiguration config = KnowledgeBuilderFactory.newDecisionTableConfiguration(); config.setInputType(DecisionTableInputType.XLS); kbuilder.add(ResourceFactory.newClassPathResource(spreadsheetFile), ResourcType.DTABLE, config); // last line executed and then job exists and completes successfully.
Перед выполнением последней строки Я поместил несколько журналов отладки и они показывают следующее:
>> Properties (props): {} >> KnowledgeBuilderConfiguration (configuration): org.drools.compiler.PackageBuilderConfiguration@630cb4a4 >> KnowledgeBuilder (kbuilder): org.drools.builder.impl.KnowledgeBuilderImpl@239bof9d >> ResourceFactory.newClassPathResource(spreadsheetFile): [ClassPathResource path='spreadsheet.xls'] >> ResourceType.DTABLE: ResourceType = 'Decision Table' >> DecisionTableConfiguration (config): org.drools.builder.conf.impl.DecisionTableConfigurationImpl@150ab4ed >> DecisionTableConfiguration (config.getInputType()): XLS
Поэтому я решил перейти с drools 5.5.0 на 7.5.0 и использовать kie-api/kie-ci; мне пришлось сделать некоторый рефакторинг, потому что теперь drools является частью зонтика KIE (Knowledge Is Everything), см. код ниже:
KieServices ks = KieServices.Factory.get(); KieContainer kc = ks.getKieClasspathContainer(); KieSession ks = kc.newKieSession("ksession-dtables"); //stateful session FactHandle fh = ks.insert(fact); ks.fireAllRules();
....
Пакеты и правила загружаются в базу знаний, но запускаются только первые правила, а затем она останавливается, нужно ли мне обновить таблицу решений (электронную таблицу), чтобы работать для drools 7.5.0 с Java 8?
Любые предложения приветствуются.
Спасибо!!
Что я уже пробовал:
Выяснение того, нужно ли мне изменить свою таблицу решений (электронную таблицу) и отладить код, чтобы найти виновника.