Jboss 如何检查drools中的空日期条件?

Jboss 如何检查drools中的空日期条件?,jboss,drools,rule-engine,Jboss,Drools,Rule Engine,我必须检查一个关于日期的条件,即一个实体的日期字段是否在另一个实体的另外两组日期的范围内 第一实体: 1. id 2. name 3. date 第二实体 1. id . . . . 17 : Start Date 18 : End Date 我必须检查第一个实体的日期字段是否在第二个实体的开始日期和结束日期范围内 e、 g (t1.date>=t2.Start date和t1.date=etime,(ttime==null ||)(ttime!=null&&$paidClaimVO.tim

我必须检查一个关于日期的条件,即一个实体的日期字段是否在另一个实体的另外两组日期的范围内

第一实体:

1. id
2. name
3. date
第二实体

1. id
.
.
.
.
17 : Start Date
18 : End Date
我必须检查第一个实体的日期字段是否在第二个实体的开始日期和结束日期范围内

e、 g


(t1.date>=t2.Start date和t1.date=etime,(ttime==null ||)(ttime!=null&&$paidClaimVO.time您可以在静态助手方法或您的一个实体中添加日期范围之间的日期检查。我认为这将使您的规则更具可读性,并且您可以轻松地为日期检查方法编写单元测试

选项1-静态辅助方法 创建一个具有静态帮助器方法的类,如下所示

public class DateUtils {
  private DateUtils() {}  // Cannot be initialized

  public static boolean dateInRange( Date toCheck, Date min, Date max ) {
    // Add null checks here
    // Use Date#before(Date) and Date#after(Date) for checking
    return true|false
  }
}
public class Entity1 {
  Date date
}

public class Entity2 {
  Date start
  Date end

 public boolean entity1InRange( Entity1 e ) {
  // null checks
  // Use the Date#before() and Date#after() as above
 }
你的规则就是

import static DateUtils.*

rule "date in range"
when:
   dateInRange( e1.date, e2.start, e2.end )
then:
   // logic
end
选项2-事实/实体内的方法 在一个事实中创建检查方法。在哪个实体中放置此方法取决于您的用例,您提供的信息尚未指定此方法。我认为您可以自己找出最佳位置。无论如何,代码应该是这样的

public class DateUtils {
  private DateUtils() {}  // Cannot be initialized

  public static boolean dateInRange( Date toCheck, Date min, Date max ) {
    // Add null checks here
    // Use Date#before(Date) and Date#after(Date) for checking
    return true|false
  }
}
public class Entity1 {
  Date date
}

public class Entity2 {
  Date start
  Date end

 public boolean entity1InRange( Entity1 e ) {
  // null checks
  // Use the Date#before() and Date#after() as above
 }
}

规则呢

rule "date in range"
when:
  e2.entity1InRange( e1 )
then:
  // Logic
end