A drools новичок здесь, Ниже приведена структура класса java.Подтверждение списка в drools
public class Person {
List<PersonAddress> personAddress;
}
public enum AddressType {
CURRENT, PREVIOUS;
}
public class PersonAddress{
Address address;
AddressType type
Integer timeAtAddress;
}
public class Address {
String city;
String country;
String street;
}
Мне нужно написать код для проверки PersonAddress в drools. Правило 1. Если у человека есть список экземпляров PersonAddress, если один из них является AddressType == CURRENT и timeAtAddress < 3, то я хочу найти, содержит ли этот список адрес, где AddressType == PREVIOUS.
Правило 2. Если это условие истинно, то я хочу, чтобы получить экземпляр PersonAddress где AddressType == Назад,
Drools версия 5.5.0.Final,
Java 1.7
Функции могут быть использованы
Это то, что я пытался, но он не работает
function boolean isPreviousAddressExist(java.util.List list) {
if(list.isEmpty()) {
return false;
}
boolean validRecordFound = false;
for(int addressIndex = 0; addressIndex < list.size(); addressIndex++) {
PersonAddress pa = (PersonAddress)list.get(addressIndex);
if(AddressType.CURRENT.equals(pa.getAddressType()) && pa.getTimeAtAddress() != null && pa.getTimeAtAddress() < 3) {
validRecordFound = true;
break;
}
}
boolean previousRecordFound = false;
if(validRecordFound) {
for(int addressIndex = 0; addressIndex < list.size(); addressIndex++) {
PersonAddress pa = (PersonAddress)list.get(addressIndex);
if(AddressType.PREVIOUS.equals(pa.getAddressType())) {
previousRecordFound = true;
break;
}
}
} else {
previousRecordFound = true;
}
return previousRecordFound;
}
rule "Previous-Physical-Home Address is required for Time at Current-Physical-Home"
when
$quotation:Quotation()
eval(!isPreviousAddressExist($quotation.getApplicantList()))
then
runningResults.addRunningResult(new BusinessRuleRunningResult(null, " A Previous physical Home Address is required.", false));
end
Большое спасибо, это то, что я точно хотел. Как я уже сказал, iam новичок, чтобы слюни, наше приложение является полным j2ee-приложением. Один из наших клиентов попросил нас сделать некоторую проверку с помощью слюни – bluelabel
Дорогой @laune, у меня есть еще один вопрос, связанный с drools, было задано [здесь] (здесь) http://stackoverflow.com/questions/25735964/validation-in-drools), оцените, если вы можете помочь мне в этом – bluelabel
@laune, см. этот вопрос - http://stackoverflow.com/questions/32201760/ ArrayList-размерного не-рабочего правильно-в-Drools-6-2 – Kumar