我在KIE API中需要帮助.需要知道它是什么,是否有任何教程可以使用Drools KIE.是kro的一部分drools-6.x?如果它是drools-6.x的一部分那么使用运行JBPM5.4和guvnor 5.5的Drool-5.5会对应用程序产生什么影响呢?
问候,
扎希德艾哈迈德
我知道如何使用所有方法在KIE工作台中创建DRL文件.但是我的问题是没有使用KIE工作台,我们可以使用我们所需的值创建.drl文件.如果有任何可能性,请建议我.同样的方式建议我任何API都与此有关.提前致谢.
我们尝试使用全新的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) 我正在尝试使用注入集成的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模块和会话.需要以下帮助 -
我的环境如下 -
我已经通过以下链接,但没有运气(大多数情况下他们没有尝试做我的意思) -
我很感激,如果有人可以指导我在这里可能缺少什么,或者如果没有选择,只能在spring配置文件中明确定义所有kmodules/ksessions.
我对流氓和所有人的工作经验较少.所以我已经通过了KIE workbench 6.0它工作正常,但我需要6.2版本中的服务器,进程管理菜单.安装后我无法看到它们,即使安装没有显示任何错误.请建议我如何在KIE工作台版本6.2中获取这些内容.提前致谢.
作为开发人员,我想创建一个 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)
最重要的是,当我在生产环境中部署我的应用程序时:
我试过
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 文件夹和一个 …
我已经使用JBPM建立了一个过程。我正在使用KIE Workbench提供的表单生成器评估构建表单。我看到它在引擎盖下使用Uberfire。使用KIE工作台构建表单与使用其他UI技术(角度js等)并将其与JBPM流程集成的利弊是什么?如果需要,是否还有一种方法可以自定义表单构建器模块以使用其他UI框架(例如Angular JS)?
我正在使用Drools引擎构建警报系统。当满足条件时,我们需要在规则(RHS)的操作上执行由Spring Framework 实例化的@Service方法。
如何获得由Drools规则的动作(RHS)使用的Spring Framework创建的@service实例?
我已遵循以下指示:
关于如何使用它的任何想法?
如
文件: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 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) 简短版本:如何使用新的KIE API禁用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)
可以使用严格键入选项禁用.