在单独的 Maven 项目中引用另一个 drl 文件的函数
Referencing a function from another drl file in a separate maven project
我有多个 Maven 项目,其中包含 DROOLs drl 文件。我想把辅助函数之类的东西放在一个中心位置,然后让其他项目中的 drls 能够使用它们,但它不起作用。
common项目是其他项目中的maven依赖。我可以证明这是有效的,因为我可以访问我在公共项目中定义的事实,但我无法访问函数。
我最初尝试创建一个名为:
helperfunctions.drl 并将函数直接放在文件中,认为它们在构建时无需任何导入即可使用,但找不到。
然后我尝试将函数包装在声明 HelperFunctions 的结尾,但这种语法不起作用。
最后,我尝试将文件更改为 HelperFunctions.java 并执行 public class HelperFunctions 并将所有方法设为静态。然后在我使用命名空间 com.myproject.common.
导入的另一个项目 drls 中
我别无选择,还有什么我可以尝试的吗?或者这不可能吗?
我不太清楚你的尝试,但是 Java 如果你的 [=33] 上有 Jar,则可以从规则中调用来自依赖项的代码(你的第 3 点) =]路径。
假设您的项目设置如下:
|-rule-utils (project name)
|-- src\main\java\com\mycompany\common\HelperFunctions.java
|--pom.xml
并且您在 HelperFunctions class.
中定义了一些实用函数 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
根据我的经验,以这种方式调用 third-party 实用程序代码是很常见的,例如 Apache commons 的实用程序 class 像 StringUtils
和 CollectionUtils
(尽管在左侧比在后果中更常见。)
我有多个 Maven 项目,其中包含 DROOLs drl 文件。我想把辅助函数之类的东西放在一个中心位置,然后让其他项目中的 drls 能够使用它们,但它不起作用。
common项目是其他项目中的maven依赖。我可以证明这是有效的,因为我可以访问我在公共项目中定义的事实,但我无法访问函数。
我最初尝试创建一个名为: helperfunctions.drl 并将函数直接放在文件中,认为它们在构建时无需任何导入即可使用,但找不到。
然后我尝试将函数包装在声明 HelperFunctions 的结尾,但这种语法不起作用。
最后,我尝试将文件更改为 HelperFunctions.java 并执行 public class HelperFunctions 并将所有方法设为静态。然后在我使用命名空间 com.myproject.common.
导入的另一个项目 drls 中
我别无选择,还有什么我可以尝试的吗?或者这不可能吗?
我不太清楚你的尝试,但是 Java 如果你的 [=33] 上有 Jar,则可以从规则中调用来自依赖项的代码(你的第 3 点) =]路径。
假设您的项目设置如下:
|-rule-utils (project name)
|-- src\main\java\com\mycompany\common\HelperFunctions.java
|--pom.xml
并且您在 HelperFunctions class.
中定义了一些实用函数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
根据我的经验,以这种方式调用 third-party 实用程序代码是很常见的,例如 Apache commons 的实用程序 class 像 StringUtils
和 CollectionUtils
(尽管在左侧比在后果中更常见。)