Home > How to, Програмиране, Софтуер > Separate package loading in Drools

Separate package loading in Drools

Първо, линкче към Drools, а след това – малко разяснение за целта на упражнението. Няма да говоря за Drools като технология, нито ще изразявам мнения и вплечатления тук. Ще приема, че мога да говоря с Drools термините – исканото решение имаше за цел да зарежда компилираните пакети runtime и поотделно.

Нека вземем примера от документацията – за мъж и момче, които искат да вземат кредит. В .drl файла пишем правило, че хората над определена възраст могат да взимат кредити, а тези под тази възраст – не могат. Компилираме .drl файла до пакет (.pkg) и тук започнаха приключенията, а решението беше толкова просто…

Така е – не използвам никакви пропъртита, просто създавам един stream с адреса на файла. Stream-ът ни дава доста голяма гъвкавост – файлове, url, DB. А и кодът е доста прост:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
InputStream inputStream = new FileInputStream(new File("credit.pkg"));
Package pkg = (Package) stream.readObject();
inputStream.close();
stream.close();

RuleBase rules = RuleBaseFactory.newRuleBase();
rules.addPackage(pkg);

WorkingMemory session = rules.newStatefulSession();
Person adult = new Person(“Mr Snr”, 35);
Person child = new Person(“Jnr”, 15);

session.insert(adult);
session.insert(child);

session.fireAllRules();
  1. No comments yet.
  1. No trackbacks yet.