Я новичок в Drools, поэтому заранее извиняюсь, если мой вопрос очень прост. Обычно, если я должен загрузить файл правил, я что-то вроде этого:Загрузка файла определенных правил на основе некоторых условий
KieServices kieServices = KieServices.Factory.get();
KieContainer kContainer = kieServices.getKieClasspathContainer();
kSession = kContainer.newStatelessKieSession();`
Но как я могу изменить файл правил, основанный на каком-то состоянии? Скажем, у меня есть 3 класса (A, B и C), которые реализуют интерфейс (P), и у меня также есть функция, которая берет объект типа P (myFunction (P p) {...}).
Теперь, исходя из типа объекта, переданного myFunction(), мне нужно загрузить другой файл .drl. Например, объект a.drl if является экземпляром A и b.drl, если экземпляр B. Как я могу сделать это с помощью слюни 6?
Это странный вопрос. Когда вы пишете вызов myFunction, вы знаете тип объекта, переданного как аргумент, а затем вы можете изменить код, загружающий файл .drl. Или даже во время выполнения: в методе вы можете определить класс 'p', а затем решить, какой файл .drl загрузить. – laune
Я бы поставил вопрос, действительно ли вам ** нужно загружать различные базы знаний в зависимости от типа объекта. В любом случае совпадения правил основаны на типе объекта, поэтому было бы более нормальным иметь единую базу знаний со всеми правилами. – Steve