Я использую JBoss AS 7.1.1.Final с KIE Workbench / Drools 6.0.1., Java и Eclipse (Kepler).
Мне нужен KIE Workbench (ранее Drools Guvnor), чтобы люди могли графически создавать / редактировать jar-файлы с фактами и правилами, а затем сохранять их как jar-файлы в локальном репозитории maven. Эти jar-файлы (ранее pkg) я хочу затем получить программный доступ и загрузить их в свое приложение Drools. Приложение может даже (хотя и не предпочтительно) запускаться на той же рабочей станции, поэтому доступ к репозиторию может быть
а) по URL: http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar
б) по пути к файлу / пути к классам: /my/folder/jboss-as-7.1.1.Final/bin/repositories/kie/com/myprojects/myProject/LATEST/myProject-LATEST.jar
Я НЕ хочу создавать / компилировать правила и т. Д. В моем коде, ни динамически не загружать один файл .drl динамически - подготовленный jar - это то, что мне нужно загрузить, например, com.myprojects: myProject: LATEST в качестве идентификатора.
Я пробую это (согласно документации)
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.newKieContainer(
ks.newReleaseId("com.myprojects", "myProject", "LATEST"));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );
KieSession kSession = kContainer.newKieSession("defaultKieSession");
kSession.insert( fact );
[...]
Однако это не удается из-за исключения времени выполнения,
Exception in thread "main" java.lang.RuntimeException: Cannot find KieModule: com.myprojects:myProject:LATEST
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:86)
at com.myprojects.myproject.KieDroolsWBOnlinePuller.code(KieDroolsWBOnlinePuller.java:118)
at com.myprojects.myproject.KieDroolsWBOnlinePuller.main(KieDroolsWBOnlinePuller.java:40)
У меня вопрос: почему не найдена банка из репо? Разве KieModule не представляет банку и банку автоматически в репозитории, как я создал ее в KIE WB? Или мне нужно изменить ReleaseID по умолчанию для Maven Repo, который распечатан с помощью
KieRepository repo = ks.getRepository();
repo.getDefaultReleaseId()
решает
org.default:artifact:1.0.0-SNAPSHOT ?
Это проблема Maven? Что я ошибаюсь?
Здесь содержимое банок pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myprojects</groupId>
<artifactId>myProject</artifactId>
<version>LATEST</version>
<name>myProject</name>
<repositories>
<repository>
<id>guvnor-m2-repo</id>
<name>Guvnor M2 Repo</name>
<url>http://localhost:8080/drools-wb-as7.0/maven2/</url>
</repository>
</repositories>
</project>
Я также пробовал использовать этот код для загрузки банки по URL-адресу:
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("com.myprojects", "myProject", "LATEST");
KieResources kres = ks.getResources();
String url = "http://127.0.0.1:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar";
kres.newUrlResource( url );
KieContainer kContainer = ks.newKieContainer(releaseId);
KieSession kSession = kContainer.newKieSession("statelessDefautlKnowledgeSession");
[...]
Это не удалось с тем же исключением .... Есть идеи?
Некоторые ресурсы, которые я прочитал до сих пор (не могу опубликовать остальные 6):
http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar
- person Steve   schedule 13.01.2014