Object Type Node:事实从根节点进入Rete网络后,会立即进入Object Type Node节点。Object Type Node提供了按对象类型过滤对象的能力,通过此类节点可使规则引擎不做额外的工作。Cheese类型的事实进入网络后,只需经过类型为Cheese的Object Type Node之后的节点。如下图
rule1 when Cheese($cheddar : name == “cheddar” ) $person : Person( favouriteCheese == $cheddar ) then System.out.println($person.getName() + “ likes cheddar” ); end
rule2 when Cheese( $cheddar : name == “cheddar” ) $person : Person( favouriteCheese != $cheddar ) then System.out.println($person.getName() + “ does not like cheddar” ); end
package com.myspace.packagedproduct; public class Location implements java.io.Serializable { static final long serialVersionUID = 1L; @org.kie.api.definition.type.Label(value = "\u56FD\u5BB6") private java.lang.String country; @org.kie.api.definition.type.Label(value = "\u7701\u4EFD") private java.lang.String province; @org.kie.api.definition.type.Label(value = "\u57CE\u5E02") private java.lang.String city; ...Getter、Setter方法... }
public class Segment implements java.io.Serializable { static final long serialVersionUID = 1L; @org.kie.api.definition.type.Label("产品编码") private java.lang.String proCode; @org.kie.api.definition.type.Label("产品名称") private java.lang.String proName; @org.kie.api.definition.type.Label("出发城市") private java.lang.String startCity; @org.kie.api.definition.type.Label("到达城市") private java.lang.String arriveCity; @org.kie.api.definition.type.Label("舱位") private java.lang.String cabin; @org.kie.api.definition.type.Label("航班日期") private java.util.Date flightDate; ...Getter、Setter方法... }
public class Hotel implements java.io.Serializable { static final long serialVersionUID = 1L; @org.kie.api.definition.type.Label("产品编码") private java.lang.String proCode; @org.kie.api.definition.type.Label("产品名称") private java.lang.String proName; @org.kie.api.definition.type.Label("房型") private java.lang.String roomType; @org.kie.api.definition.type.Label("入住日期") private java.util.Date checkInDate; @org.kie.api.definition.type.Label("位置") private com.myspace.packagedproduct.Location location; @org.kie.api.definition.type.Label(value = "\u662F\u5426\u53EF\u6253\u5305\u9500\u552E") private java.lang.Boolean ifCanPackageSale; ...Getter、Setter方法... }
public class ReservedLounge implements java.io.Serializable { static final long serialVersionUID = 1L; @org.kie.api.definition.type.Label("产品编码") private java.lang.String proCode; @org.kie.api.definition.type.Label("产品名称") private java.lang.String proName; @org.kie.api.definition.type.Label("位置") private com.myspace.packagedproduct.Location location; @org.kie.api.definition.type.Label("是否自营") private boolean selfSupport; ...Getter、Setter方法... }
public class PackagedProduct implements java.io.Serializable { static final long serialVersionUID = 1L; @org.kie.api.definition.type.Label(value = "\u6210\u5458\u4EA7\u54C1ID\u5217\u8868") private java.util.List<java.lang.String> itemProductCodes; ...Getter、Setter方法... }