我们正在使用基于drools规则的系统作为Java中的推理引擎。
但是,我们有一些复杂的数据结构。如何处理规则中如此复杂的结构化事实和这些事实的数据计算?
我们的事实是这样的
即InputObject->报告->客户->每个客户都有 CustomerTranscriptObject->列表->每个表单都有-> CustomerAppreciationForm,CustomerRequestForm,CustomerComplainForm 和SectionalInformation->(每个SectionalInformation都有列表 )。
规则将具有逻辑:
检查表单是否为CustomerRequestForm或CustomerComplainForm类型。然后从InputObject中读取customerId列表和客户身份列表,对于customersIdList中的每个customersId,CustomerID的最后6位数字应显示在客户身份列表中(检查每个客户身份的最后7位数字)。
如何使用Drools实现如此复杂的结构和规则?
public class Report {
private List<Customer> customerList;
private Set<String> allCustomerIds;
private Set<String> allCustomerIdentities;
}
public class InputObject {
private Report report;
}
public class Customer {
private CustomerTranscriptObject customerTranscriptObject;
}
public class CustomerTranscriptObject {
private List<Forms> forms;
}
public class Form {
private CustomerAppreciationForm customerAppreciationForm
private CustomerRequestForm customerRequestForm
private CustomerComplainForm customerComplainForm
private SectionalInformation sectionalInformation;
}
public class SectionalInformation {
private List<Section> SectionList;
}