You need to sign in to do that
Don't have an account?
Pranav Chitrans
Cron expression : every 30 minutes
Hi,
I need one help for Cron Expression for sechduling my batch at certain interlval which would be a lighitning web component, and whatever period sleected in the drop down i will take that sync period as my parameter to calculate cron expression. My interval could be every 30 minute, hourly, daily. And the moment user click on custom sechdule button from LWC page from that time the calculation should start, not from the near by hours. For example user click on button at 18th July 2019 10:34 A.M and he seleted the interval from drop down as '30 Minutes' then the next sechdueld run should be 18th July 2019 11:04 A.M, not the 10:30 A.M because salesforce takes the near by hours by default which i did not wanted in my solution.
I have written the logic for hourly and daily which seems workin fine but i am ot sure too for that as well.
Please assist at earliest.
Thanks
Pranav
I need one help for Cron Expression for sechduling my batch at certain interlval which would be a lighitning web component, and whatever period sleected in the drop down i will take that sync period as my parameter to calculate cron expression. My interval could be every 30 minute, hourly, daily. And the moment user click on custom sechdule button from LWC page from that time the calculation should start, not from the near by hours. For example user click on button at 18th July 2019 10:34 A.M and he seleted the interval from drop down as '30 Minutes' then the next sechdueld run should be 18th July 2019 11:04 A.M, not the 10:30 A.M because salesforce takes the near by hours by default which i did not wanted in my solution.
I have written the logic for hourly and daily which seems workin fine but i am ot sure too for that as well.
if(syncPeriod == 'Every 30 Minutes') { cronExpressionfromUI = '0 '+system.now().addMinutes(30).minute()+' * * * ?'; cronExpressionfromUI = '0 10'+' *'+' *'+' *'+' ?'; } else if(syncPeriod == 'Hourly') { cronExpressionfromUI = '0 '+system.now().minute()+' * * * ?'; } else if(syncPeriod == 'Daily') { cronExpressionfromUI = '0 0 '+system.now().addHours(1).hour()+' *'+' *'+' ?'; } }For the first condition( every 30 minute) i am facing an issue which are listed below :
- If i use expression('0 '+system.now().addMinutes(30).minute()+' * * * ?') the it runs for the 1 st time but for the next run after completion of one it gets sechduled for 1 hour automatically.
- If i use expression for 10 minute(for testing purpose) something like(cronExpressionfromUI = '0 10'+' *'+' *'+' *'+' ?';) then it always calculate from the near by hours not the moment from when button was clicked.
- I do not want to run the system.sechdule multiple time as per my sync interval timing because that might hit governer limit.
Please assist at earliest.
Thanks
Pranav
Try the following code, it maybe helpful for you:
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha
The expression which you used for 30 minutes will not be going to work because that expression is not correct.
Thanks
Pranav
I don't understand why this '0 0/30 * 1/1 * ? *' cron expression not work.But if you want a cron expression to run every half an hour:
The cron expression '0 0,30 * * * *' is run every half an hour:
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha