作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 drools 引擎构建警报系统。当条件满足时,我们需要在规则(RHS)的操作上执行由Spring框架实例化的@Service方法。
如何让 Spring Framework 创建的 @service 实例被 Drools 规则的操作(RHS)使用?
我已遵循以下指示:
关于如何使用它有什么想法吗?
作为
文件: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
文件: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 action:" + drools.getRule().getName());
end
文件:SecurityService.java
package com.mycompany.alerts.service;
import com.mycompany.alerts.service.UserRepository;
@Service
@Transactional
public class SecurityService {
private final Logger log = LoggerFactory.getLogger(SecurityService.class);
private final UserRepository userRepository;
public SecurityService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void notifyAlert(String status, String sms) {
System.out.println("Alert notify with:" + status + " sms:" + sms);
}
}
最佳答案
您可以使用 kieRuntime 的 setGlobal 函数:
kieRuntime.setGlobal("securityService", securityService);
然后您可以在 drl 文件中声明/使用此变量:
global SecurityService securityService.
PS:- KieRuntime 对象可以通过以下方式获取:KieRuntime kieRuntime = (KieRuntime) kieSssion;
关于spring - 如何在 Drools 规则中使用 Spring 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43346204/
我是一名优秀的程序员,十分优秀!