小编Hec*_*mez的帖子

如何在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
查看次数

标签 统计

dependency-injection ×1

drools ×1

kie ×1

mvel ×1

spring ×1