[英]Using Drools types from one drl file in rules in another drl file
[英]Referencing a function from another drl file in a separate maven project
我有多個 maven 項目,其中包含 DROOLs drl 文件。 我想將輔助函數之類的東西放在一個中央位置,然后讓其他項目中的 drls 能夠使用它們,但它不起作用。
公共項目是其他項目中的 maven 依賴項。 我可以證明這是有效的,因為我可以訪問我在公共項目中定義的事實,但我無權訪問函數。
我最初嘗試創建一個名為:helperfunctions.drl 的文件,並將這些函數直接放在文件中,認為它們在構建時無需任何導入就可以使用,但找不到。
然后我嘗試將函數包裝在 declare HelperFunctions 結尾,但這種語法不起作用。
最后,我嘗試將文件更改為 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 公共實用程序類,如StringUtils
和CollectionUtils
(盡管在左側比在結果中更常見。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.