2014-01-25 3 views
1

Я пытался использовать API правил Java впервые и получил следующее исключение:API правил Java: [No RuleServiceProvider, зарегистрированный в URI: http://drools.org/), root cause (null)]

No RuleServiceProvider registered against URI: http://drools.org/), root cause(null) 

Это исключение пришел на следующий код:

RuleServiceProvider ruleServiceProvider = 
     RuleServiceProviderManager.getRuleServiceProvider("http://drools.org/"); 

Я хочу использовать Java Правила API для ДРЛ и DSL файлов в Drools. Может ли кто-нибудь помочь?

код, который я использовал следующий: -

try { 

     Class.forName("org.drools.jsr94.rules.RuleServiceProviderImpl"); 

     RuleServiceProvider ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider("http://drools.org/"); 

     RuleAdministrator ruleAdministrator = ruleServiceProvider.getRuleAdministrator(); 

     LocalRuleExecutionSetProvider ruleExecutionSetProvider = 
     ruleAdministrator.getLocalRuleExecutionSetProvider(null); 

     Reader drlReader = new FileReader(new File("CustomRules.drl")); 

     RuleExecutionSet ruleExecutionSet = ruleExecutionSetProvider.createRuleExecutionSet(drlReader, null); 

     String uri = ruleExecutionSet.getName(); 
     ruleAdministrator.registerRuleExecutionSet(uri, ruleExecutionSet, null); 

     RuleRuntime ruleRuntime = ruleServiceProvider.getRuleRuntime(); 

     StatefulRuleSession session = 
       (StatefulRuleSession)ruleRuntime.createRuleSession(uri, 
       null, 
       RuleRuntime.STATEFUL_SESSION_TYPE); 
       Applicant a = new Applicant(); 
       a.setAge(16); 
       a.setValid(true); 
       System.out.println(a.isValid()); 
       session.addObject(a); 
       session.executeRules(); 
       System.out.println(a.isValid()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Plz вставьте код. – Kick

+1

Вставил код. –

+1

Не тратьте время на то, чтобы работать с API JSR94. Используйте API Drools. – Steve

ответ

0

Вы зарегистрировать поставщика услуг? если нет, то используйте нижеприведенную строку

Class.forName("org.drools.jsr94.rules.RuleServiceProviderImpl"); 
+1

Привет, я уже использовал это утверждение. Я просто указал код, который написал. Пожалуйста, взгляните на это. –

0

Сначала зарегистрируйте поставщика услуг, как показано ниже, а затем получите его.

Помещенный ниже код после Class.forName(...)

// регистрационная служба класса поставщик

RuleServiceProviderManager.registerRuleServiceProvider(
    "http://drools.org", 
    "org.drools.jsr94.rules.RuleServiceProviderImpl"); 

// Получить поставщик услуг правило

RuleServiceProvider ruleServiceProvider = RuleServiceProviderManager .getRuleServiceProvider ("http://drools.org");

 Смежные вопросы

  • Нет связанных вопросов^_^