自定义汇编程序,Weaver和运行时的可插拔知识

作为贝叶斯工作的一部分,我对Kie进行了很多重构,使其具有清晰的扩展点。 我想确保可以完成贝叶斯系统的所有工作部件,而无需在现有内核中添加任何代码。

因此,现在每种知识类型都可以拥有自己的包,汇编器,编织器和运行时。 知识不再直接添加到KiePackage中,而是添加到该域的封装知识包中,然后再添加到KiePackage中。 解析和组装知识定义时使用汇编程序阶段。 编织阶段是将这些知识定义编织到现有的KieBase中。 最后,运行时封装并为知识提供运行时。

drools-beliefs包含贝叶斯积分和了解其工作原理的良好起点: https : //github.com/droolsjbpm/drools/tree/beliefs/drools-beliefs/

为此,您需要一个META-INF / kie.conf文件,并将其发现并使用: https : //github.com/droolsjbpm/drools/blob/beliefs/drools-beliefs/src/main/resources/ META-INF / kie.conf

该文件使用MVEL语法,并指定一项或多项服务:

[
'assemblers' : [ new org.drools.beliefs.bayes.assembler.BayesAssemblerService() ],
'weavers' : [ new org.drools.beliefs.bayes.weaver.BayesWeaverService() ],
'runtimes' : [ new org.drools.beliefs.bayes.runtime.BayesRuntimeService() ]
]

Github链接到软件包和服务实现:

贝叶斯包
组装服务
韦弗服务 运行时服务

这是一个快速的单元测试,显示了端到端的工作,请注意如何查找和访问运行时。 它在测试中使用了旧的api,但也可以与声明性的kmodule.xml一起使用。 仍然是硬编码的唯一位是ResourceType.Bayes。 由于ResourceTypes是一个枚举。 我们可能会将其重构为标准类,以便对其进行硬编码。

查找运行时的代码:

StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl) kbase.newStatefulKnowledgeSession();
BayesRuntime bayesRuntime = ksession.getKieRuntime(BayesRuntime.class);

单元测试:

KnowledgeBuilder kbuilder = new KnowledgeBuilderImpl();
kbuilder.add( ResourceFactory.newClassPathResource("Garden.xmlbif", AssemblerTest.class), ResourceType.BAYES );

KnowledgeBase kbase = getKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );

StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl) kbase.newStatefulKnowledgeSession();

BayesRuntime bayesRuntime = ksession.getKieRuntime(BayesRuntime.class);
BayesInstance instance = bayesRuntime.getInstance( Garden.class );
assertNotNull(  instance );

jBPM已经从内核和编译器中重构出来,尽管它为此使用了自己的接口。 我们计划将现有的jBPM方式移植到此方法,实际上所有Drools的东西最终也将以这种方式完成。 这将创建一个干净的KIE核心,并将规则,过程,贝叶斯或任何其他用户知识类型的编译器全部添加为插件。

社区人士也已经在开发一种新的类型声明系统,该系统将利用这些扩展。 这是这种新型系统的示例: https : //github.com/sotty/metaprocessor/blob/master/deklare/src/test/resources/test1.ktd

翻译自: https://www.javacodegeeks.com/2014/09/pluggable-knowledge-with-custom-assemblers-weavers-and-runtimes.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值