Слюни сложный структурированный факт со сложным вычислением в правиле - PullRequest
0 голосов
/ 15 мая 2019

Мы используем системы, основанные на правилах 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;
}
...