今天帮忙客户查看一个scheduled job的问题。
scheduled job的大致功能是每天定时通过batch去删除某个对象前一天的数据。
但是客户发现虽然每天batch都有执行,但是查询出来的数据却始终是0。
经过检查代码发现,代码中使用System.today()赋值给了一个final类型的变量
private final Date currentDate = System.today();
再进行sql查询:
SELECT Id FROM BB_Audit_Log__c WHERE Audit_Datestamp__c < :currentDate
问题即出现在final的使用上。
如果将值赋给了final类型的变量,则currentDate的值将始终保持为scheduled job创建的那一天的日期。
所以导致batch无法正常工作。
所以解决办法就是去掉final属性。