繁体   English   中英

从单独的 maven 项目中的另一个 drl 文件引用 function

[英]Referencing a function from another drl file in a separate maven project

我有多个 maven 项目,其中包含 DROOLs drl 文件。 我想将辅助函数之类的东西放在一个中央位置,然后让其他项目中的 drls 能够使用它们,但它不起作用。

公共项目是其他项目中的 maven 依赖项。 我可以证明这是有效的,因为我可以访问我在公共项目中定义的事实,但我无权访问函数。

  1. 我最初尝试创建一个名为:helperfunctions.drl 的文件,并将这些函数直接放在文件中,认为它们在构建时无需任何导入就可以使用,但找不到。

  2. 然后我尝试将函数包装在 declare HelperFunctions 结尾,但这种语法不起作用。

  3. 最后,我尝试将文件更改为 HelperFunctions.java 并执行 public class HelperFunctions 并制作所有方法 static。然后在其他项目 drls 中,我使用命名空间 com.myproject.common 导入。

我没有选择,还有什么我可以尝试的吗?或者这是不可能的?

我有点不清楚你尝试了什么,但是如果你的类路径上有 Jar,则可以从规则中调用依赖项中的 Java 代码(你的第 3 点)。

假设您的项目设置如下:

|-rule-utils (project name)
|-- src\main\java\com\mycompany\common\HelperFunctions.java
|--pom.xml

并且您在 HelperFunctions class 中定义了一些实用程序 function public static void doSomethingUseful()

在存在规则的其他项目中,您可以将project1 jar 作为依赖项包含在内,可能在您的 pom 中如下所示:

<dependency>
  <artifactId>rule-utils</artifactId>
  <groupId>com.mycompany</groupId>
</dependency>

然后您可以导入和使用 HelperFunctions 及其doSomethingUseful方法,就像您在 drl 中使用任何其他 Java 代码一样:

import com.mycompany.common.HelperFunctions;

rule "Example rule"
when
then
  HelperFunctions.doSomethingUseful();
end

根据我的经验,以这种方式调用第三方实用程序代码是很常见的,例如 Apache 公共实用程序类,如StringUtilsCollectionUtils (尽管在左侧比在结果中更常见。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM