我试图在这个线程中测试@tarilabs提出的解决方案(这很有意义),使用Business Central的drl文件:
Drools Business Central -带有电子表格的决策表,在WHEN条件下使用数组
下面是规则代码:
package com.myspace.arraystreatmentconditions;
import com.myspace.arraystreatmentconditions.Client;
import java.util.*;
rule R1
when
$c: Client( client_status == "Active")
$item: String($c.client_products.contains(this)) from $c.cart
then
modify ($c) { setResult($item + " from the cart in the " + $c.getClient_products());}
end
下面是Client.java类:
package com.myspace.arraystreatmentconditions;
/**
* This class was automatically generated by the data modeler tool.
*/
public class Client implements java.io.Serializable {
static final long serialVersionUID = 1L;
private java.util.List<java.lang.String> cart;
private java.util.List<java.lang.String> client_products;
private java.lang.String client_status;
private java.lang.String serviceability;
private java.lang.String result;
public Client() {
}
public java.util.List<java.lang.String> getCart() {
return this.cart;
}
public void setCart(java.util.List<java.lang.String> cart) {
this.cart = cart;
}
public java.util.List<java.lang.String> getClient_products() {
return this.client_products;
}
public void setClient_products(
java.util.List<java.lang.String> client_products) {
this.client_products = client_products;
}
public java.lang.String getClient_status() {
return this.client_status;
}
public void setClient_status(java.lang.String client_status) {
this.client_status = client_status;
}
public java.lang.String getServiceability() {
return this.serviceability;
}
public void setServiceability(java.lang.String serviceability) {
this.serviceability = serviceability;
}
public java.lang.String getResult() {
return this.result;
}
public void setResult(java.lang.String result) {
this.result = result;
}
public Client(java.util.List<java.lang.String> cart,
java.util.List<java.lang.String> client_products,
java.lang.String client_status, java.lang.String serviceability,
java.lang.String result) {
this.cart = cart;
this.client_products = client_products;
this.client_status = client_status;
this.serviceability = serviceability;
this.result = result;
}
}
这是我的JSON:
{
"commands": [
{
"insert": {
"object": {
"com.myspace.arraystreatmentconditions.Client": {
"cart": ["item1", "item2", "item3"],
"client_products": ["item1", "item2", "item3", "item4"],
"client_status": "Active",
"serviceability": "cable",
"result": ""
}
},
"out-identifier": "client"
}
},
{
"fire-all-rules": {}
},
{
"get-object": {
"out-identifier": "client"
}
}
]
}
但是在 Postman 发送请求的时候,它连续发送了几个小时的请求,我没有得到回应。
这是整个项目的简单代码:
https://github.com/jesurod09/DroolsValidation
这就是问题所在:
你知道吗?
2条答案
按热度按时间svmlkihl1#
这是一种非常奇怪的方法,试图找出项目
$c.cart
是否存在于$c.client_products
中。它可能会像这样工作得更好:
这是假设您的模型(您还没有共享)具有适合
client_status
、client_products
等的访问器。如果,正如注解中提到的,$c.cart实际上是一个集合而不是一个字符串,那么规则将如下所示:
问题中缺少客户端模型使得回答起来有点困难。问题中的DRL表明$c.cart是一个String,但这也可能是错误的。
jobtbby32#
是的,你的解决方案有效,这是我现在的规则:
但是现在Postman返回一个结果,但我不知道为什么它返回结果:“null”。
JSON是下一个:
但回应是: