I have a fairly complex scheduling requirement which I have checked with Qlikview and it should be handled OK in v10 Publisher but not currently in v9 standard or v9 publisher. The client cannot wait for v10, so in the meantime I need to create a MSDOS BAT or VBS script and use a scheduler outside of Qlikview.
A --> B --> E C --> D -->
F --> G
More details of my requirement: A/B/C/D run in parallel If any A/B/C/D job fails then the script will need to resubmit the failed job E runs after the longest running job A/B/C/D E cannot run at the same time as G (otherwise I get "object being used by another process" errors)
F can run at anytime (no dependency, but will probably hook this after a G success to create a continuous loop) If F job fails then the script will need to resubmit the failed F job G runs after F G cannot run at the same time as E (otherwise I get "object being used by another process" errors) G contains section access so I need to pass username / password to this reload
The job length varies on the amount of data being extracted from an Oracle database, so I cannot reliably use time based scheduling. I do have the potential of kicking off A/B/C/D based on time.
At the moment I have a basic VBS script which reloads A job successfully (and resubmits once upon failure). I'm using v9 standard. The client does not need a publisher license at the moment.
My questions are: 1) I have limited VBS and MSDOS BAT skills and would appreciate any examples you have for a more complicated scenarios such as this. 2) how can I code job E and job G logic 3) is there an alternative approach to this? 4) Should I use VBS and call QV.exe or use MSDOS BAT and call QDS.exe? (and why?) 5) Does anyone recommend a scheduling package that can handle the above scenarios 6) any error handling examples would be good
And QlikTech is really sure that V10 publisher will be able to do this ?
Well, you could do this in .NET (C# or VB), e. g. the main program could launch parallel threads for reloading A,B,C,D (these would be the child processes of main program), and reload for E would only continue if there are no more child processes (meaning A-D reloaded).
Actually with .NET you have a lot more of possibilities than with batch or even VBScript, and the scenario being rather complicated, I'd do it this way. I've done a similar task in C# which runs very well (parallel data reloads, and when all data reload threads have finished, starting parallel application reloads).
That's only a rough sketch and I haven't thought a lot about it, but I doubt if you succeed with batch or VBScript.