Точки входа Jboss Drools

У меня есть требование, когда мне нужно прочитать точку входа из файла свойств. Образец кода:

Propertyfile:
ep.event=StEntry

String entryPoint = Read from property file(ep.event)
WorkingMemoryEntryPoint entryPoint = ksession.getWorkingMemoryEntryPoint(entryPoint);

Как я могу использовать переменную entryPoint в правиле:

rule "Test entry point1"
    when
        from entry-point $entryPoint
    then
        System.out.println("Entry type 1");
end

Если я попробую описанный выше подход, он выдаст исключение NullPointerException.


person Suhas    schedule 31.05.2016    source источник


Ответы (1)


Насколько я могу судить, вы не можете использовать переменные для имен точек входа. Согласно документации Drools, запись точки определяются во время компиляции:

Точки входа неявно объявляются в Drools путем их прямого использования в правилах. т.е. ссылка на точку входа в правиле заставит движок во время компиляции идентифицировать и создать надлежащие внутренние структуры для поддержки этой точки входа.

Не могли бы вы уточнить свой вариант использования немного больше? Зачем нужны динамические имена точек входа? Возможно, есть какие-то другие способы добиться того, что вы ищете.

http://docs.jboss.org/drools/release/6.4.0.Final/drools-docs/html_single/#d0e12560

person Esteban Aliverti    schedule 01.06.2016
comment
Привет Эстебан, Спасибо за ответ. У нас есть вариант использования: мы будем получать набор событий из сети. Каждый набор событий должен запускаться в разных точках входа DROOLS. Точки входа будут настроены в файле свойств (пользователь может добавлять/изменять точки входа). Таким образом, идея состоит не в том, чтобы жестко кодировать точки входа, считывать их из свойства и использовать в правиле. Пожалуйста помоги. правило Проверка точки входа1, когда из точки входа $epVar//это переменная, которая будет содержать имя точки входа, затем System.out.println(точка входа 1 +$ep); конец - person Suhas; 01.06.2016
comment
Есть ли у вас правила, связанные с событиями из нескольких точек входа? Если нет, вы можете иметь несколько сеансов KieSessions на карте и направлять события в соответствующий сеанс. - person Esteban Aliverti; 01.06.2016