2014-07-15 36 views
0

我有我的KnowledgeAgent設置爲如何製作Drools KnowledgeAgent依賴於Spring配置的自定義組件?

<drools:kagent kbase="kbase" id="knowledgeAgent" new-instance="false" > 
    <drools:resources> 
     <drools:resource source="classpath:change-set.xml" type="CHANGE_SET" /> 
    </drools:resources> 
    </drools:kagent> 

因此,從掃描classpath中變化set.xml資源。我還有另一個組件,它將根據磁盤上的規則文件動態生成change-set.xml。這種彈簧配置

<bean id="changesetHandler" class="ChangesetHandler" autowire="byName" lazy-init="true" /> 

這裏的問題是,變化set.xml是由我的自定義組件生成的,但我不能設置Drools的KnowledgeAgent組件依賴於它,因爲它遵循它自己的schema這似乎沒有depends-on屬性。

回答

1

鑑於知識代理偵聽更改,只要您的bean生成更改集,它就應該重新加載知識庫。爲什麼不最初加載默認的空變更集,然後在生成動態變更集時加載?

就我個人而言,我避免了Drools-Spring組件。我發現在我的應用程序中創建一個服務更容易,這個服務包含我的知識庫。然後我可以在該服務中定義我喜歡的任何依賴關係,並確保已完成任何初始化。

+0

感謝@Steve,從服務中「手動」加載變更集,並完全跳過此部分中的xml conf,是一個非常好的解決方法。我使用Grails,所以我幾乎與使用Spring相關。 – kaskelotti

+0

我一直都在使用Spring。我只是不使用Drools-Spring的東西。 :) – Steve

相關問題