We want to drive the batch process for two (or more) seperate UAT envionments from a single installation of 24x7 Scheduler. The two will contain the same jobs, calling the same batch programs but in different directories (ie. one set will be calling jobs such as E:\UAT1\mybatchjob.cmd, the other set E:\UAT2\mybatchjob.cmd). There could be several hundred jobs in each.

The most obvious way to do this would seem to be to have the job definitions in seperate folders in the Scheduler, but I would prefer to avoid having to hard-code the batch location in each job - it would be much simpler to set them up once, then copy them to the second folder and change a single parameter.

So, is there a parameter I can use that would achieve this? Either something I can set at the folder level and then reference in the jobs calls, or even something that will return the full job path (not just the name)? It doesn't have to be able to return much, just something to identify which set of jobs I am in - I can always then pass this to a generic job launcher which will translate it and call the relevant version.

Thanks,
Richard

Fri Nov 16, 2012 6:56 am

SysOpSite Admin

Joined: 26 Nov 2006Posts: 6608

There are several ays to handle such scenarios. For example, you can use a system environment variable and reference it in job command lines either at the batch level or scheduler level. In the first case within external batch file you can use regular %VAR% syntax, same applies to embedded batch scripts run in the scheduler (see batch/shell job type). If using external scripts, create a driver batch file like C:\Common\runAnything.cmd that accepts 1 parameter - name of the program to run, and the code would look like
CD %VAR%
cmd /C "%1"

In the second case use @V"env:VAR" syntax with job property, for example, in a 'program or document' type job
cmd /c C:\@V"env:VAR"\mybatchjob.cmd

In the above scenario with both methods you would need just one set of files. The target UAT folder is controlled by setting the environment variable VAR's value to UAT or UAT2 without touching anything in the scheduler and dealing with just 1 set of jobs.

You can also have 2 separate job database files. The Tools/Job Database Manager utility allows easy copying of jobs between job database files in bulk, by job, by folder, by any selection. Dependeing on your UAT mode, you can choose to load one or the other job database file.

Fri Nov 16, 2012 9:56 am

RichardDavis

Joined: 13 Nov 2012Posts: 17Country: United Kingdom

Hi,

Thanks for the response. I think I may not have been quite clear, though - what we are after is the ability to run both schedules at the same time, as we often have multiple UAT environments running in tandem.

If I understand your suggestions correctly, these would allow us to have two sets defined and swap between them, but not have them running simultaneously?

Thanks,
Richard

Fri Nov 16, 2012 10:09 am

SysOpSite Admin

Joined: 26 Nov 2006Posts: 6608

Hi,

If you want them to run simultaneous, I don't see how that can be done with a shared parameter. No matter how you implement them, the parameter may have only 1 value at a time. My guts are telling me, if you want to run multiple independent UAT environments on the same machine (sort of virtual UAT environments), you better setup multiple scheduler instances, or use 1 scheduler and multiple agents on the same machine to logically separate the environments. It would make the management of each environment a lot easier, otherwise, you would likely end up with a hard to manage environment as it would be always unclear what is going on, for a example differentiating, an old job instance still running for UAT and new instance running concurrently for UAT2. Because of same names, same logs, same IDs, same appearances in all monitors and logs, the operators would never know for sure what is what.

Fri Nov 16, 2012 12:09 pm

SysOpSite Admin

Joined: 26 Nov 2006Posts: 6608

Just in case. Each 24x7 instance requires a separate license, just like most other software packages.