RuleEngine Drools

kahra

Mitglied
Hallo Leute,

zwecks eines Projektes möchte ich gerne mal die RuleEngine Drools ausprobieren (http://www.drools.org).
Doch ich bekomme es einfach nicht zum laufen.

Der entscheidende Quelltext ist eigentlicht nichts weiter als das:

Code:
public DroolsTest(HelloTest o) throws DroolsException, SAXException, IOException {

		RuleSetLoader ruleSetLoader = new RuleSetLoader();
		System.out.println("ruleSetLoader erstellt...");
		ruleSetLoader.addFromUrl(DroolsTest.class.getResource("rules/DroolsTest.java.drl"));
		System.out.println("ruleSetLoader geladen ... ");
		RuleBaseLoader ruleBaseLoader = new RuleBaseLoader();
		ruleBaseLoader.addFromRuleSetLoader(ruleSetLoader);
		RuleBase ruleBase1 = ruleBaseLoader.buildRuleBase();

		WorkingMemory workingMemory1 = ruleBase1.newWorkingMemory();
		
		workingMemory1.addEventListener(new DebugWorkingMemoryEventListener());
		workingMemory1.assertObject(o);
		workingMemory1.fireAllRules();

	}

Dazu vllt noch die Regeldatei:
Code:
<?xml version="1.0"?>

<rule-set name="DroolsTest"
    xmlns="http://drools.org/rules"    
    xmlns:java="http://drools.org/semantics/java"
    xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    xs:schemaLocation="http://drools.org/rules rules.xsd
    					http://drools.org/semantics/groovy groovy.xsd">
    
 <import>HelloTest</import>
 
 <rule name="Hallo">
		<parameter identifier="hello">
      		<class>HelloTest</class>	
        </parameter>
        <java:condition>hello.getHello()== true</java:condition>
        <java:consequence>
            System.out.println( "Hallo Welt!" );
        </java:consequence>
  </rule>
  
   
</rule-set>

So, das ganze startet und hört dann einfach mit
org.drools.IntegrationException: org.drools.smf.FactoryException: Unable to find class 'HelloTest'
auf

Die Klasse HelloTest gibt es natürlich. Ich habe wirklich keine Ahnung wo der Fehler leigt und warum es nicht läuft. Ich hab mich da ziemlich an die vorhanden Beispiele gehalten.
Aber ein ordentliches Tutorial konnte ich leider auch nicht finden.
 
Ja es ist in einem Packet, wenn ich das angebe,

also z.B. de.am.test.HelloTest

Leider nützt das nichts, dann passiert folgendes:

Code:
(file:/[...]/DroolsTest/de/am/test/rules/DroolsTest.java.drl: 16, 20): cvc-complex-type.2.4.a: Invalid content was found starting with element 'condition'. One of '{"http://drools.org/rules":parameter, "http://drools.org/rules":abstractCondition, "http://drools.org/rules":duration, "http://drools.org/rules":abstractConsequence}' is expected.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/jci/readers/ResourceReader

wobei er auf die Stelle bei der Condition zeigt.
 
Zurück