【问题标题】:upgrading drools guvnor 5.5 to drools 6.0将 drools guvnor 5.5 升级到 drools 6.0
【发布时间】:2014-05-13 10:53:05
【问题描述】:

我使用的是 drools 5.4 版,我使用 changeset.xml 的 url 从我的 java 代码中调用 drools-guvnor。

现在我正在升级到 drools 6.0 工作台版本(如果使用骆驼版本,请告诉我),如何从我的 java 代码中调用 drools 工作台。

谢谢 加内什·尼勒卡尼

【问题讨论】:

  • 到目前为止你做了什么?
  • 我不知道如何从 java 调用 drools-guvnor 6,我们在从 java 调用的 drools 5.4 中使用 changeset.xml,你能帮我如何调用 drools 6。
  • 您应该阅读 Workbench 用户指南。它解释了这一切。在版本 6 中,您的规则存储在 Maven 存储库中,您可以在应用程序中定义依赖关系,如果您希望运行时重新加载规则,请使用 KieScanner。
  • 感谢史蒂夫,我浏览了文档,但我怀疑我们是否可以在 drools guvnor 中创建项目和部署。我有一个愚蠢的问题,即相当于 5.5 版的 drols-guvnor .. 是否在这里重命名为 drools-workbench。

标签: java drools jbpm drools-guvnor


【解决方案1】:

Drools 6 中的所有内容都已 Mavenized。您无需访问 changeset.xml 文件,而是使用新的 Kie API 来引用您的规则所在的 Maven 工件。

首先,您将规则打包为“kjar”(请参阅​​this article for more info about 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() 来强制重建。

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多