# RuleEngine Drools



## kahra (5. Mai 2006)

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:


```
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:

```
<?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.


----------



## hcarlmeyer (5. Mai 2006)

Hi,

befindet sich HelloTest vielleicht in einem Paket das du beim import in der Regeldatei angeben musst?


----------



## kahra (8. Mai 2006)

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:


```
(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.


----------

