19.10. Number Guess
“数字猜想”的例子显示了使用规则流程,一种控制顺序的方式规则被解雇。它使用广泛理
解的工作流程图,用于定义组中的顺序将执行规则
1、 创建猜数字的 ruleBase:
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newClassPathResource( "NumberGuess.drl",
ShoppingExample.class ),ResourceType.DRL );
kbuilder.add( ResourceFactory.newClassPathResource( "NumberGuess.rf",
ShoppingExample.class ),ResourceType.DRF );
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
包的创建和加载(使用规则()方法)和老版本是一样的。有添加的规则流的文件
(猜数字.RF),这为相同知识库提供指定不同规则流的选项。所以,知识库的创建与
老版本一样。
2、 启动规则流
final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger =KnowledgeRuntimeLoggerFactory.newFileLogger(ksession,
"log/numberguess");
ksession.insert( new GameRules( 100, 5 ) );
ksession.insert( new RandomNumber() );
ksession.insert( new Game() );
ksession.startProcess( "Number Guess" );
ksession.fireAllRules();
logger.close();
ksession.dispose();
值得注意的是,在我们调用标准 fireallrules()方法,我们还启动过程我们装的时候,
通过 startprocess()方法。下面会学习怎么通过参数获取规则流文件,通过(“ Number
Guess”,即规则流的标识符),
3、规则流程编辑器。