我想通過注入集成kie(drools 6)來構建一個web(spring-mvc)應用程序。我用kie工作臺創建了一個工作流程,並進行了編譯和部署。我在我的項目的pom.xml中添加了這個工件的引用,並添加了根據this blog post的本地kie-workbench存儲庫,並且它工作正常(在我的maven/spring項目中將工件拉入依賴項中)。我所試圖做的是在注入我的服務之一kiesession與下面的代碼段的依賴 -drools-6(kie)從kie工作臺部署的工件模塊和會話自動掃描(從春天)
@Service
public class TniServiceImpl implements TniService {
@Inject
@KSession("tniSession")
private KieSession tniSession;
...
}
在我的根context.xml中,我已經參照XSD一起加入紀伊命名空間爲好。我已經添加了org.kie.spring.KModuleBeanFactoryPostProcessor以及每個drools文檔。我正在嘗試爲KSession掃描和注入(它已經在使用@Inject的同一項目中爲我的其他組件工作)進行CDI注入工作。到目前爲止,我總是得到「找不到符合條件的[org.kie.api.runtime.KieSession]類型的合格bean」錯誤。看起來春天無法掃描可用的kie模塊和其中的會話。需要下面的幫助 -
- CDI注入是否真的支持彈簧?我是否必須明確配置kmodules和kession as mentioned here?
- 我在這裏錯過了什麼應該讓這個掃描和注射工作?
我的環境是以下 -
- 彈簧3.2.6-RELEASE(包括webmvc和其它部件)
- kie-api-6.0.1.FINAL
- 紀伊 - 彈簧 - 6.0 .1.FINAL
- kie-internal-6.0.1.FINAL
我已經通過以下鏈接但沒有了呂克K(主要是他們沒有試圖做我是什麼) -
- Loading Drools/KIE Workbench artifacts directly from the repository
- why does loading Drools 6 KIE JAR into code fail?
,我會很感激,如果任何人都可以指導我可能是什麼缺少的部分在這裏或如果除了在spring配置文件中明確定義所有kmodules/ksessions,別無選擇。
我在處理這件事時遇到了兩個挑戰。首先,自動掃描來自彈簧和第二次注射的僞影。這個解決方案雖然有效,但是也不行。我自己也使用類似的解決方案。根據http://docs.jboss.org/jbpm/v6.0.1/userguide/jBPMReleaseNotes.html#d0e16995,這應該與@Inject一起工作(至少在我的上下文中使用了kie:module,kie:base和kie:session )但它沒有。在我看來,JBPM與Spring的集成並不完整,儘管他們表示他們已經對它進行了改進。 – Avnish
@Avnish我同意你的觀點,看起來像JBPM與spring的集成並不完整。不是最優雅的解決方案,但在此之前,我甚至無法運行該項目,getKieClasspathContainer()始終返回null。在你的問題中,我不清楚沒有自動掃描/注入的情況下工作正常。 – Perazzo
@Avnish我提出瞭解決方案,看看。 – Perazzo