簡體   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