package jef.entity; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 对实体字段的值需要重新计算时可使用该标注 * @author MJJ * */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Eval { /** * 计算类型,缺省为MASK表示对值进行模糊化 * @return */ EvalType type() default EvalType.MASK; /** * 值计算策略类,缺省使用通用的信息模糊化的策略类 * */ Class<? extends EvalStrategy> strategyClass() default CommonMaskStrategy.class; /** * 值计算策略类完整类名 */ String strategyClassName() default ""; /** * 策略类的构造参数 * */ String[] constructParams() default {}; /** * 前置条件,当该条件满足时才执行计算,未设置条件或者条件脚本不能被正确评估则都表示条件为真 * 计算条件使用lua脚本描述,脚本里可以使用形如context["key"]来获取上下文中的值 */ String precondition() default ""; }