I'm looking for tips on scheduling large dependent task chains. In QVP 8.5, we had document sets which handled the problem nicely. But document sets are not available in V9.
Here's the scenario. I have a group of 20 QVD reloads that need to execute first followed by the application reloads. The application reloads should not start unitil all QVD reloads are completed. The only way I can ensure all QVD reloads are complete is to run them serially and chain the application reloads off the last QVD.
What I would like to do is run the QVDs in parallel and start the applications when all QVDs are complete. Any ideas on how to do this wihtout just having a single task chain for all QVDs?
I''m facing this problem on both SBE edition and Publisher Enterprise.
Hi, Rob. Really interesting question. I'm not 100% sure, just throwing some ideas out there. Assuming you have a server with enough cores and memory, you can schedule up to 10 QVBs at the same time. So you could have the following structure: (i) schedule the first 10 QVD reloads to run at the same time, (ii) schedule the second 10 QVD reloads to run when #10 (or whichever is the longest) is completed; (iii) schedule the application reloads to start when #20 (or whichever is the longest in the second group) is completed. This would allow you to maximize parallel processing of the tasks.
Ah, well to solve that you would use a combination of triggers and dependecies. The triggers would be set up as described above. Then you would make the applications dependent on tasks 1 - 20. This would ensure that they would only run if all QVDs reloaded successfully. Alternatively, if a certain application is dependent on less than all the QVDs, you could make fewer dependencies. This might be a little annoying to set up for each application, but it would give you the certainty you are looking for.
I haven't found the Dependencies feature useful, perhaps I am misunderstanding it's application. A dependency seems to be satisified if the dependent task is in any state but "Failed". Therefore the dependent task runs if the dependency ran sucessfully in the past, or even if it never ran. I need some way to say "the dependency must have run today". Can I do that with dependencies?
You're mostly correct. Dependencies will be satisfied if the last execution ran successfully. But by scheduling the QVD loads to run before the application loads you will ensure that the tasks will be started first and the last task state will be the most recent (today).
Make each of the 20 taks generate a txt file or write something somewhere. For Example Task A, at the end of the script, will write a txt File that says "Hey I already did my job", a counter of some sort.
That, in turn, (also at the end of the script) will execute a vbs that checks if the tasks have all done their job (count the number of files or something). If so, it will trigger an EDX for the final reload, if not it will wait for the next finished task to call it and check again.
OR, maybe you could read the task result logs, and apply the same logic.
Hope this helps. And please, let us know if it worked.