Now with Drools demo (Rete System to match which level building rules to fire for which PlayerProfiles/Archetypes).
This commit is contained in:
65
src/org/drools/examples/simple/DroolsExample.java
Normal file
65
src/org/drools/examples/simple/DroolsExample.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user