Мы используем системы, основанные на правилах drools, в качестве движка рассуждений в Java.
Однако мы имеем некоторую сложную структуру данных в качестве фактов.Как обрабатывать такие сложные структурированные факты и вычисление данных этих фактов в правиле?
Наш Факт - это что-то вроде этого
т.е. InputObject -> Отчет -> Клиенты -> каждый клиентhas CustomerTranscriptObject -> List -> Каждая форма имеет -> CustomerAppreciationForm, CustomerRequestForm, CustomerComplainForm и SectionalInformation -> (каждая SectionalInformation имеет список).
Правило будет иметь логику:
проверьте, имеет ли форма тип CustomerRequestForm или CustomerComplainForm.Затем прочитайте Списки CustomersId и Список Идентификаций Клиентов из InputObject и для каждого customerId в customerIdList последние 6 цифр CustomerID должны присутствовать в Списке Идентификаций Клиентов (Проверяет последние 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;
}