我使用的是drools 5.4版,我使用changeset.xml的url从我的java代码中调用drools-guvnor。
现在我正在升级到 drools 6.0 工作台版本(如果使用骆驼版本,请告诉我),如何从我的 java 代码中调用 drools 工作台。
谢谢 Ganesh Neelekani
我使用的是drools 5.4版,我使用changeset.xml的url从我的java代码中调用drools-guvnor。
现在我正在升级到 drools 6.0 工作台版本(如果使用骆驼版本,请告诉我),如何从我的 java 代码中调用 drools 工作台。
谢谢 Ganesh Neelekani
Drools 6 中的所有内容都已 Mavenized。您无需访问 changeset.xml 文件,而是使用新的 Kie API 来引用您的规则所在的 Maven 工件。
首先,您将规则打包为“kjar”(有关 kjars 的更多信息,请参阅本文)。然后,在您的应用程序中,您需要添加以下依赖项:
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-ci</artifactId>
<version>${drools.version}</version>
</dependency>
然后,为了在运行时动态加载规则,您可以使用 ResourceChangeScanner 的替代品,它被称为 KieScanner
ReleaseId releaseId = KieServices.Factory.get().newReleaseId( "com.acme", "my-rules", "0.0.1-SNAPSHOT" );
KieContainer kc = KieServices.Factory.get().newKieContainer( releaseId );
KieScanner kscanner = KieServices.Factory.get().newKieScanner( kcontainer );
kscanner.scanNow() // this will dynamically resolve the rules artifact and build it
从那时起,您可以使用附加到该扫描仪的 kcontainer 来创建 KieSessions。通过调用 scanNow(),您是在告诉扫描器轮询该工件以进行更改。它将自动构建它检测到的对该工件的更新。您还可以通过再次调用 scanNow() 来强制重建。