Custom RuleLogic

import com.workbrain2.compliance.publ.api.RuleLogicScriptable
import com.workbrain2.compliance.publ.api.domain.FullComplianceGroupRuleParameterValuePubl
import com.workbrain2.compliance.publ.api.domain.FullComplianceViolationPubl
import com.workbrain2.compliance.publ.api.domain.ParameterValidationResultPubl
import com.workbrain2.compliance.publ.api.domain.ParameterValuePubl
import com.workbrain2.compliance.publ.api.domain.RuleExecutionContextPubl
import com.workbrain2.compliance.publ.api.domain.UserMessagePubl
import com.workbrain2.compliance.publ.api.domain.ValidationContextPubl
import com.workbrain2.platform.publ.api.domain.SimpleTimePeriodPubl
import static com.workbrain2.platform.publ.api.DebugPrint.*
 
class RuleLogicSample extends RuleLogicScriptable {
 
    @Override
    public int countParameters() {
        return 0
    }
 
    @Override
    public SimpleTimePeriodPubl calculateRequiredDataRange(List<FullComplianceGroupRuleParameterValuePubl> params, ValidationContextPubl context) {
        return context.getValidationPeriod()
    }
 
    @Override
    public String getCustomDefaultViolationMessage() {
        return ""
    }
 
    @Override
    public ParameterValidationResultPubl validateRuleParameters(List<ParameterValuePubl> paramValues) {
        return null // no extra validation required
    }
 
 
    @Override
    public List<UserMessagePubl> getDefaultRuleParameterValidationMessages(){
        return new ArrayList<UserMessagePubl>()
    }
     
    @Override
    public List<FullComplianceViolationPubl> validateCompliance(RuleExecutionContextPubl context){
        debugprint("Custom compliance validation")
        return new ArrayList<FullComplianceViolationPubl>()
    }
}