Rather than use the Denodo Scheduler, another option that we do is to manage cache loads through our company's existing job scheduler and python scripts.
If you use your own scripts (python, java, or whatever), you can build your own logic into it along with any workflow you want.
Once we have the logic right in the script right (e.g., when THIS fails then do THAT, or whatever else you want), we just run this VQL statement to refresh the cache:
CONNECT DATABASE PUT_DATABASE_NAME_HERE;
select * from PUT_VIEW_NAME_HERE
CONTEXT('cache_preload'='true', 'cache_invalidate'='true', 'returnQueryResults'='false', 'WaitForCacheLoad'='true');
You can modify the VQL as necessary to get exactly what you want (the VQL above blows away the existing cache and reloads all of it). The Advanced VQL guide explains all the CONTEXT options regarding cache loads.
Once you have the right VQL statement(s), you just use the import.sh/.bat scripts to execute it against your Denodo server.
I know this doesn't use the same capabilities of Denodo scheduler, but we found it easier to just write our own VQL statements and run them using the import.sh/.bat scripts.