001package top.cenze.rulepolicy.frame.rule;
002
003import com.fasterxml.jackson.annotation.JsonInclude;
004import lombok.Data;
005
006@Data
007@JsonInclude(JsonInclude.Include.NON_NULL)
008public class RuleHeaderAttributes {
009    /**
010     * 指定当前规则是否启用(默认为true)
011     * 如果设置的值为false则当前规则无论是否匹配成功都不会触发
012     * enabled false //指定当前规则不可用,当前规则无论是否匹配成功都不会执行
013     */
014    private Boolean enabled;
015
016    /**
017     * 指定当前规则使用的语言类型,取值为java和mvel,默认值为java
018     * dialect java
019     */
020    private String dialect;
021
022    /**
023     * 指定规则的执行优先级,数值越大越优先执行
024     * 如果不设置,则执行顺序为由上到下
025     * salience 9
026     */
027    private Integer salience;
028
029    /**
030     * 是否不允许多次循环执行(默认为false,为true则只允许被执行一次)
031     * 控制当前的规则只会被执行一次,因为一个规则的重复执行不一定是本身触发的,也可能是其他规则触发的
032     * 是no-loop的加强版
033     * lock-on-active true
034     */
035    private Boolean lockOnActive;
036
037    /**
038     * 激活分组
039     * 具有相同分组名称的规则只能有一个规则被触发
040     * activation-group "mygroup"
041     */
042    private String activationGroup;
043
044    /**
045     * 议程分组
046     * 属于另一种可控的规则执行方式
047     * 用户可以通过设置agenda-group来控制规则的执行,只有获取焦点的组中的规则才会被触发
048     * agenda-group "myagendagroup_1"
049     */
050    private String agendaGroup;
051
052    /**
053     * 自动获取焦点(默认为false)
054     * 一般结合agenda-group属性使用,当一个议程分组未获取焦点时,可以设置auto-focus属性来控制
055     * agenda-group "myagendagroup_2"
056     * auto-focus true //自动获取焦点
057     */
058    private Boolean autoFocus;
059
060    /**
061     * 规则定时(单位:毫秒)
062     * duration 3000   // 3秒后执行规则
063     */
064    private Integer duration;
065
066    /**
067     * 通过定时器的方式指定规则执行的时间
068     * - 方式一:timer (int: ?)
069     * timer (5s 2s) //含义:5秒后触发,然后每隔2秒触发一次
070     * 此种方式遵循java.util.Timer对象的使用方式,第一个参数表示几秒后执行,第二个参数表示每隔几秒执行一次,第二个参数为可选。
071     * - 方式二:timer(cron: )
072     * timer (cron:0/1 * * * * ?) //含义:每隔1秒触发一次
073     * 此种方式使用标准的unix cron表达式的使用方式来定义规则执行的时间。
074     */
075    private String timer;
076
077    /**
078     * 指定规则的生效时间
079     * 即只有当前系统时间大于等于设置的时间或者日期规则才有可能触发。默认日期格式为:dd-MMM-yyyy
080     * 用户也可以自定义日期格式
081     * date-effective "2020-10-01 10:00"
082     */
083    private String dateEffective;
084
085    /**
086     * 指定规则的失效时间
087     * 即只有当前系统时间小于设置的时间或者日期规则才有可能触发。默认日期格式为:dd-MMM-yyyy
088     * 用户也可以自定义日期格式
089     * date-expires "2019-10-01 10:00"
090     */
091    private String dateExpires;
092}