Information Technology Reference
In-Depth Information
Symptom fieber= new Symptom( "fieber" , true );
Symptom gliederschmerz= new Symptom( "gliederschmerz" , true );
Reader source = new InputStreamReader(
Test. class .getResourceAsStream( "test.drl") );
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( source );
if (builder.hasErrors()){
System. out .println(builder.getErrors().toString());
}
org.drools.rule.Package pkg = builder.getPackage();
RuleBase ruleBase = RuleBaseFactory. newRuleBase ();
ruleBase.addPackage( pkg );
StatefulSession session = ruleBase.newStatefulSession();
session.insert( fieber );
session.insert( gliederschmerz );
In PackageBuilder können beliebig viele Regel-Files eingelesen werden. Er fügt diese
dann mittels getPackage() -Methode zu einem einzigen Paket zusammen, welches der
RuleBase übergeben wird.
Die Rulebase wird mit der newRuleBase() -Methode der RuleBaseFactory ins-
tanziiert. Dies startet einen neuen Rete-Algorithmus welcher die mit der addPackage() -
Methode hinzugefügten Pakete optimiert.
Das WorkingMemory ist der Dreh- und Angelpunkt der ganzen Applikation. In
ihm sind alle Relationen zwischen Daten und Regeln vorhanden. Mit dem Methoden-
aufruf assertObject() mit dem Message Objekt als Parameter, wird dieses dem
WorkingMemory hinzugefügt und ist von nun an für die Regeln sicht- und änderbar.
Mit dem Methodenaufruf fireAllRules() wird erreicht, dass die Evaluierung der
registrierten Regeln beginnt.
Das Produktionsregelsystem ist in ein übergeordnetes Steuerungssystem eingebettet,
das die Verarbeitungsmethoden zyklisch abarbeitet. Die Struktur dieser Verarbeitungsme-
thoden samt Kontrollmechanismen folgt den „Test-Operate-Text-Exit“ - Methoden (kurz
TOTE-Methoden):
• Erst findet ein Zustandstest statt, der Soll-Zustand einer Entität wird festgestellt und
dem gewünschten Ist-Zustand der Entität gegenübergestellt. ( praeTest ).
• Besteht eine Differenz zwischen dem Soll-Zustand und dem Ist-Zustand, wird gehan-
delt, um sich vom Ist-Zustand dem Soll-Zustand anzunähern ( operate ).
• Woraufhin erneut ein Zustandstest erfolgt ( postTest ).
• Dessen Ergebnis kann dann entweder, sollte weiterhin eine Differenz bestehen, einen
weiteren Handlungsschritt auslösen,
• anderenfalls wird die Handlung beendet ( exit ).
Search WWH ::




Custom Search