这是我的流口水验证问题的第二部分。第一部分已经回答,我的代码中已经实现了建议的解决方案。
First Part

这是我的java类结构

public class Person {
 List<PersonAddress> personAddress;
 List<FinanceDetails> financeDetails;
}
public enum AddressStatus {
 CURRENT, PREVIOUS;
}
public enum AddressType {
 PHYSICAL, POSTAL;
}
public enum AddressUseType {
 HOME, OFFICE;
}
public class PersonAddress{
  Address address;
  AddressType type
  AddressStatus status
  AddressUseType useType
  String ownerShipType
  Integer timeAtAddress;
}
public class Address {
  String city;
  String country;
  String street;
}
public class FinanceDetails {
  String financeItemName;
  BigDecimal itemValue;
}


好的,我的问题是,如果FinanceItemName为“土地或建筑物”,并且该用户的地址符合以下条件,则需要验证FinanceDetails实例的itemValue,

AddressStatus ==当前

AddressType ==物理

AddressUseType == HOME

ownerShipType ==“拥有”

Drools版本5.5.0.Final

Java 1.7

可以使用的功能

需要样本流口水规则语法。谢谢

最佳答案

添加了itemValue测试,如评论所示

rule "land-orbuilding..."
when
  Peson( $financeDetails: financeDetails, $personAddress: personAddress )
  FinanceDetails( financeItemName == "Land or Building", itemValue == null || itemValue == 0 ) from $financeDetails
  PersonAddress( status == AddressStatus.CURRENT,
                 type == AddressType.PHYSICAL,
                 useType == AddressUseType.HOME,
                 ownerShipType == "Own" ) from $personAddress
then
  //...
end


如何阅读其中的一些文档?这非常类似于“第一部分”,只是很小的变化。

07-24 09:19