shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识
shader 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
shader weaver
總結
以上是生活随笔為你收集整理的shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纬度最高的是什么大洲 你知道吗
- 下一篇: word转文字快捷键(word简繁转换快