标签: kie

什么是Drools Kie?

我在KIE A​​PI中需要帮助.需要知道它是什么,是否有任何教程可以使用Drools KIE.是kro的一部分drools-6.x?如果它是drools-6.x的一部分那么使用运行JBPM5.4和guvnor 5.5的Drool-5.5会对应用程序产生什么影响呢?

问候,

扎希德艾哈迈德

java drools jbpm kie

11
推荐指数
1
解决办法
9128
查看次数

drools中是否有API通过传递值动态创建drl文件?

我知道如何使用所有方法在KIE工作台中创建DRL文件.但是我的问题是没有使用KIE工作台,我们可以使用我们所需的值创建.drl文件.如果有任何可能性,请建议我.同样的方式建议我任何API都与此有关.提前致谢.

java drools drools-guvnor kie

9
推荐指数
3
解决办法
6624
查看次数

直接从存储库加载Drools/KIE Workbench工件

我们尝试使用全新的KIE工作台(以前称为Guvnor)和新的基于maven的工件切换到Drools 6.

现在我想在第二张图片("部署")中使用本博文中描述的系统:通过HTTP从工作台存储库加载规则(虚线箭头,从左边的HTTP直接进入应用程序) .

问题是,我不知道如何将工件加载到我的KieServices/KieModule对象中.我基本上不想使用maven,我也无法提供maven settings.xml作为Java参数的全局路径,所以这个选项已经出来了.

我认为,类似的问题是这一个.正如那里提到的,我也试图加载一个URL资源,但问题似乎是系统无法确定ResourceType给定的URL(http://localhost:8080/kie-drools/maven2/.../-1.0.0.jar)是什么类型.是的,我可以直接从浏览器访问存储库中的.jar,无需身份验证.

任何想法或教程如何做到这一点?

我的测试代码:

public static void main(String[] args) {
    KieServices ks = KieServices.Factory.get();
    KieRepository repo = ks.getRepository();

    String url = "http://localhost:8080/kie-drools/maven2/de/test/test/1.0.0/test-1.0.0.jar";

    Resource urlResource = ks.getResources().newUrlResource(url);
    KieModule kModule = repo.addKieModule(urlResource); // this already fails
}
Run Code Online (Sandbox Code Playgroud)

错误:

Exception in thread "main" java.lang.RuntimeException: Unable to fetch module from resource :[UrlResource path='http://localhost:8080/kie-drools/maven2/de/itm/Herma400/1.0.1/Herma400-1.0.1.jar']
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:205)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.addKieModule(KieRepositoryImpl.java:161)
    at kieTest.MainKieTest.main(MainKieTest.java:24)
Caused by: java.lang.NullPointerException
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.getPomProperties(ClasspathKieProject.java:197)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:148)
    at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:109)
    at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:190) …
Run Code Online (Sandbox Code Playgroud)

java drools maven drools-guvnor kie

8
推荐指数
2
解决办法
3万
查看次数

drools-6(kie)自动扫描(从春季开始)模块和来自kie workbench部署工件的会话

我正在尝试使用注入集成的kie(drools 6)构建一个web(spring-mvc)应用程序.我使用kie workbench创建了一个工作流程,编译和部署.我已经在我的项目的pom.xml中添加了这个工件的引用,并根据这篇博客文章添加了本地kie-workbench存储库,并且它工作正常(在我的maven/spring项目中将工件作为依赖项拉入).我想要做的是在我的一个服务中注入kiesession作为依赖与下面的片段 -

@Service
public class TniServiceImpl implements TniService {

@Inject
@KSession("tniSession")
private KieSession tniSession;
...
}
Run Code Online (Sandbox Code Playgroud)

在我的root-context.xml中,我添加了kie名称空间以及对xsd的引用.我添加了org.kie.spring.KModuleBeanFactoryPostProcessor以及每个drools文档.我正在尝试为KSession扫描和注入进行CDI注入工作(它已经在同一个项目中使用@Inject工作了我的其他组件).到目前为止,我总是得到"没有找到类型[org.kie.api.runtime.KieSession]的限定bean依赖"错误.看起来spring无法扫描其中可用的kie模块和会话.需要以下帮助 -

  1. CDI是否真的支持弹簧?我一定要配置kmodules和kession明确这里所说
  2. 我在这里遗漏了一些应该使扫描和注射工作的东西吗?

我的环境如下 -

  1. spring 3.2.6-RELEASE(包括webmvc和其他组件)
  2. kie-api-6.0.1.FINAL
  3. kie-spring-6.0.1.FINAL
  4. kie-internal-6.0.1.FINAL

我已经通过以下链接,但没有运气(大多数情况下他们没有尝试做我的意思) -

  1. 直接从存储库加载Drools/KIE Workbench工件
  2. 为什么将Drools 6 KIE JAR加载到代码失败?

我很感激,如果有人可以指导我在这里可能缺少什么,或者如果没有选择,只能在spring配置文件中明确定义所有kmodules/ksessions.

spring drools jbpm kie

8
推荐指数
1
解决办法
6455
查看次数

无法在KIE workbench 6.2 wildfly发行版中看到服务器,进程管理菜单?

我对流氓和所有人的工作经验较少.所以我已经通过了KIE workbench 6.0它工作正常,但我需要6.2版本中的服务器,进程管理菜单.安装后我无法看到它们,即使安装没有显示任何错误.请建议我如何在KIE工作台版本6.2中获取这些内容.提前致谢.

jboss drools jbpm drools-guvnor kie

7
推荐指数
1
解决办法
994
查看次数

没有 Maven 的 Drools Kie 应用程序

作为开发人员,我想创建一个 Maven 项目并构建一个可执行的独立 JAR 应用程序。(无弹簧靴)

在开发和构建过程中,我想添加一个 Drools Kie 工件作为依赖项

<dependency>
 <groupId>com.mycompany</groupId>
 <artifactId>mydrools</artifactId>
 <version>[1.0.0,)</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

将我的应用程序构建为可执行 Jar 并运行它。我的应用程序具有调用 Drools 引擎的代码:

KieSession kSession = kContainer.newKieSession();
kSession.insert(myBean);
kSession.fireAllRules();
Run Code Online (Sandbox Code Playgroud)

最重要的是,当我在生产环境中部署我的应用程序时:

  • 希望我的生产服务器上安装Maven
  • 希望我的应用程序扫描本地或远程 Maven 存储库
  • 我希望我的应用程序定期自动扫描我的 Drools Kie 工件的新版本,而不需要参考 Maven 存储库,只需查看文件系统

我试过

String fileName = System.getenv("HOME") + "/libs/mydrools-1.0.0.jar";
File file = new File(fileName);
KieRepository kieRepository = ks.getRepository();        
KieContainer kContainer = ks.newKieContainer(ks.newReleaseId("com.mycompany", "mydrools", "1.0.0"));
kieRepository.addKieModule(ks.getResources().newFileSystemResource(file));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );
Run Code Online (Sandbox Code Playgroud)

加载 JAR 工作正常,但似乎我也被迫至少配置一个最小的 Maven 存储库(~/.m2 文件夹和一个 …

java drools maven drools-guvnor kie

6
推荐指数
1
解决办法
3459
查看次数

JBPM用户界面-KIE Workbench与自定义UI

我已经使用JBPM建立了一个过程。我正在使用KIE Workbench提供的表单生成器评估构建表单。我看到它在引擎盖下使用Uberfire。使用KIE工作台构建表单与使用其他UI技术(角度js等)并将其与JBPM流程集成的利弊是什么?如果需要,是否还有一种方法可以自定义表单构建器模块以使用其他UI框架(例如Angular JS)?

java jboss jbpm kie

6
推荐指数
1
解决办法
519
查看次数

如何在Drools规则中使用Spring Service?

我正在使用Drools引擎构建警报系统。当满足条件时,我们需要在规则(RHS)的操作上执行由Spring Framework 实例化@Service方法。

如何获得由Drools规则的动作(RHS)使用的Spring Framework创建的@service实例

我已遵循以下指示:

  1. 使用表单导入功能Rule1.drl)。该解决方案不起作用,因为该类是在drool中实例化的,并且需要执行静态方法。
  2. 使用全局Session变量(Rule2.drl)。此解决方案在“运行时”抛出异常,表明它不是同一类类型。

关于如何使用它的任何想法?

文件:Rule1.drl

package com.mycompany.alerts.Alert;

import function com.mycompany.alerts.service.SecurityService.notifyAlert;

rule "Activate Alert Type"
salience 9000
when
  $alert: Alert(type == "TYPE1") 
then
  System.out.println("Running action:" + drools.getRule().getName());
  $alert.setActive(Boolean.TRUE);
  notifyAlert($alert.getStatus(),$alert.getSmsNumber());    
  System.out.println("End action:" + drools.getRule().getName());
end
Run Code Online (Sandbox Code Playgroud)

文件:Rule2.drl

package com.mycompany.alerts.Alert;

global com.mycompany.alerts.service.SecurityService securityService;

rule "Activate Alert Type 2"
salience 9000
when
  $alert: Alert(type == "TYPE2") 
then
  System.out.println("Running action:" + drools.getRule().getName());
  $alert.setActive(Boolean.TRUE);
  securityService.notifyAlert($alert.getStatus(),$alert.getSmsNumber());    
  System.out.println("End …
Run Code Online (Sandbox Code Playgroud)

spring dependency-injection drools mvel kie

6
推荐指数
1
解决办法
1766
查看次数

找不到KieModule:org.default:artifact:1.0.0-SNAPSHOT

我在Spring Boot应用程序中使用以下drools配置文件从DataBase加载/执行规则,该数据库在本地运行正常但是当我尝试将应用程序部署到服务器时,我收到错误,说没有找到KieModule Bean.我将丢失的KieModule Bean添加到我的配置文件中,现在我又收到了另一个错误Failed to instantiate [org.kie.api.runtime.KieContainer]: Factory method 'kieContainer' threw exception; nested exception is java.lang.RuntimeException: Cannot find KieModule: org.default:artifact:1.0.0-SNAPSHOT.我的问题是1)为什么我需要这个Bean和2)为什么应用程序在没有缺少Bean的情况下在本地构建/运行?

如果它是部署应用程序所需的必需Bean,我是否需要通过向我的应用程序/ POM添加一些属性来专门为我的环境配置它?

public class DroolsDataBaseConfig {

    @Autowired 
    private DataService dataService;

    @PostConstruct
    public void loadResourcesFromDatabase() {       

        try {
            KieHelper helper = getKieHelper();       
            List<Rule> rulesFromDB = dataService.findAllRules();

            for (Rule rule : rulesFromDB){

                String ruleAsStr = rule.getRule();

                helper.addContent(ruleAsStr, ResourceType.DRL);             
            }

            helper.build(getKieServices().newKieBaseConfiguration());

        } catch (Exception ex) {
            log.error("Exception occured loading rules from Database. Exception is : " + ex);           
        }
     }

     @Bean …
Run Code Online (Sandbox Code Playgroud)

drools kie

6
推荐指数
1
解决办法
2413
查看次数

Drools 6.1 - 如何禁用严格模式?

简短版本:如何使用新的KIE A​​PI禁用MVEL严格模式?

我知道有一个配置属性"drools.dialect.mvel.strict" 可以使用旧的KnowledgeBuilder API进行设置.但是我找不到用新API实现相同的方法.

长版:我有一个对象方法,叫做Object属性(String name),结果可以是很多不同的类型.有时可能是List,其他字符串或其他什么.现在为了使用该方法,我必须使用大量的cast或drools抛出异常.对于以下示例:

$entity : RootEntity( attribute('authors') != null && 
                      attribute('authors').size() >= 3 && 
                      attribute('authors')[2] == 'whatever' ) 
Run Code Online (Sandbox Code Playgroud)

我得到这样的错误:

Unable to Analyse Expression attribute("authors").size() >= 3:
[Error: unable to resolve method using strict-mode: java.lang.Object.size()]

Unable to Analyse Expression attribute("authors")[2] == "whatever":
[Error: unknown collection type: class java.lang.Object; property=]
Run Code Online (Sandbox Code Playgroud)

为了在启用严格类型的情况下使这项工作,我必须输入相同的表达式:

$entity : RootEntity( attribute('authors') != null && 
                      ((java.util.List) attribute('authors')).size() >= 3 && 
                      ((java.util.List) attribute('authors'))[2] == 'whatever' ) 
Run Code Online (Sandbox Code Playgroud)

可以使用严格键入选项禁用.

drools mvel kie

5
推荐指数
0
解决办法
1890
查看次数

标签 统计

kie ×10

drools ×9

java ×5

drools-guvnor ×4

jbpm ×4

jboss ×2

maven ×2

mvel ×2

spring ×2

dependency-injection ×1