我有一个drools规则来检查数据库中是否存在值。但是在检查之前,我需要将值传递给springbean方法,以便在检查值之前进行加密,因为数据库中的值是加密的。
服务
public class EncryptService {
public String encrypt(String value) {
return encryptedValue;
}
}
规则
rule "Check value"
salience 10
dialect "java"
when
$g: EncryptService()
exists($g.encrypt(value))
then
log.info('value already exists')
end
如何调用该方法来加密springbean的规则?
我试过的东西
通过全局变量声明。通过new示例化,就像上面的例子一样,但是这不起作用,因为它是一个已经由spring创建的bean。
1条答案
按热度按时间njthzxwz1#
您需要将bean示例传递到您的规则会话中,然后编写的规则将执行您希望它执行的操作。
例如--
然后可以在规则中对bean示例执行操作:
语法
$e: EncryptService()
不会创建新示例。它匹配工作内存中encryptservice的现有示例,没有其他限制。这和你做类似的事情的逻辑是一样的$car: Car( doors == 4, color == "red")
--这不会用这些变量创建一个新的car示例,而是在工作内存中找到一个具有这些限制的car示例,并将它们分配给变量$car。