drools - Drools 决策表 - 如何在同一条件列中使用多个对象
问题描述
我有以下 POJO:
1)
public class InvoiceDetails{
String currency;
public String getCurrency(){
return this.currency;
}
public void setCurrency(String currency){
this.currency = currency;
}
}
2)
public class ValidCurrencies {
List<String> currencies = new ArrayList<String>();
public ValidCurrencies() {
currencies.add("JPY");
currencies.add("USD");
currencies.add("EUR");
currencies.add("CNY");
}
public List<String> getCurrencies() {
return currencies;
}
public void setCurrencies(List<String> currencies) {
this.currencies = currencies;
}
}
我想通过以下方式在我的 Drools 决策表中有一个条件:
CONDITION | ACTION
$inv: InvoiceDetails $validCurr: ValidCurrencies |
$param==$validCurr.getCurrencies().containsAll(Arrays.asList($inv.getCurrency()))
TRUE
FALSE
有人可以帮助编写判定表语法以编写以下内容:
- 如果我的发票对象包含任何
ValidCurrencies
- 如果我的发票对象不包含任何内容,请执行操作 #2
ValidCurrencies
解决方案
我相信你可以这样做
<table>
<tr>
<th>CONDITION</th>
<th>CONDITION</th>
<th>CONDITION</th>
<th>ACTION</th>
</tr>
<tr>
<td>$inv: InvoiceDetails</td>
<td>$validCurr: ValidCurrencies</td>
<td>$param==$validCurr.getCurrencies().contains($inv.getCurrency())</td>
<td></td>
</tr>
<tr>
<td>TRUE</td>
<td>TRUE</td>
<td>TRUE</td>
<td>/**action 1**/</td>
</tr>
<tr>
<td>TRUE</td>
<td>TRUE</td>
<td>false</td>
<td>/**action 2**/</td>
</tr>
</table>
推荐阅读
- image - 有没有办法获得 Facebook 帖子的永久图片 URL?
- python - 我可以用 Python 在一个圆圈内的地图上包含许多坐标吗?
- node.js - TypeError:cartItems.map 不是函数
- azure-devops - 流量管理器部署
- javascript - 如何增加数组中的每个元素以获取所有迭代,直到它与另一个数组匹配
- android-studio - Android Studio CANNOT LINK EXECUTABLE "/system/bin/dpmd": "/system/lib64/libdpmframework.so" 是 32 位而不是 64 位
- python - Tkinter(Python)如何从函数中的所有文本小部件中获取值
- react-native - 如何在 React Native 中添加 firebase ml 套件
- php - 将变量插入另一个新变量
- c++ - 如何在 C 中使用 6 字节整数数据类型?