Now with Drools demo (Rete System to match which level building rules to fire for which PlayerProfiles/Archetypes).

This commit is contained in:
Woody Folsom
2012-03-17 16:46:01 -04:00
parent 28cc5715e9
commit 27d357f1fc
13 changed files with 100 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
package org.drools.examples.simple;
import java.io.File;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
public class DroolsExample {
/**
* @param args
*/
public static void main(String[] args) {
//Create KnowledgeBase...
KnowledgeBase knowledgeBase = createKnowledgeBase();
//Create a statefull session
StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
//Create Facts - two ban accounts
Account account = new Account();
account.setBalance(10);
account.setId("N1");
Account account2 = new Account();
account2.setBalance(120);
account2.setId("N2");
//Insert the bank account facts into a State full session
session.insert(account);
session.insert(account2);
//Note that at this point, afetr fact insertation the Agenda has one activation ready to be fired.
//Account1 is less than 100.
//Only now we will fire the rules which are already in the agenda
session.fireAllRules();
//A message of N1 is less than 100 will be printed to stdout.
}
/**
* Create new knowledge base
*/
private static KnowledgeBase createKnowledgeBase() {
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//Add drl file into builder
File accountRules = new File("rules/BasicAccountRule.drl"); //Where the account rule is.
builder.add(ResourceFactory.newFileResource(accountRules), ResourceType.DRL);
if (builder.hasErrors()) {
throw new RuntimeException(builder.getErrors().toString());
}
KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
//Add to Knowledge Base packages from the builder which are actually the rules from the drl file.
knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
return knowledgeBase;
}
}