Next: , Previous: Classes utilisateur, Up: Classes utilisateur


2.2.3.1 Exemple

Cet exemple decrit le processus type de creation et de soumission d'un job a travers les classes de la bibliotheque.

Il faut toutefois penser que les appels aux methodes peuvent lever des exceptions qu'il faudra intercepter et gerer. See Exceptions.

       ...
     
       // On recupere l'instance du catalogue de gestionnaires de batch
       Batch::BatchManagerCatalog cata = Batch::BatchManagerCatalog::getInstance();
     
       // On cree un BatchManager qui se connecte au veritable gestionnaire
       // de batch
       Batch::BatchManager & bm = (* cata("PBS"))("monserver.mondomaine.fr");
     
       // Pour fabriquer un Job, on doit d'abord creer un objet Parametre et
       // un objet Environnement qui contiennent respectivement la liste des
       // parametres du job au sein du gestionnaire de batch et la liste des
       // variables d'environnement necessaires au fonctionnement du job
       Batch::Parametre param;
     
       param[EXECUTABLE]  = "/home/user/mon_application/executable";
       param[NAME]        = "MonJob";
       param[ACCOUNT]     = "MonProjet"; // code d'imputation/facturation
       param[MAXCPUTIME]  = 360L;        // 6min
       param[MAXWALLTIME] = 480L;        // 8min
       param[INFILE]      = Batch::Couple("/tmp/infich1",  rempath+"/infich1");
       param[OUTFILE]     = Batch::Couple("/tmp/outfich1", rempath+"/outfich1");
       param[OUTFILE]    += Batch::Couple("stderr", path + "/STDERR");
       param[OUTFILE]    += Batch::Couple("stdout", path + "/STDOUT");
       param[MAIL]        = "user@domaine.fr";
       param[USER]        = "user";
     
       Batch::Environnement env;
       env["DEBUG"]       = "3"; // un niveau de debug exige par l'application
       env["MYAPP_FILE"]  = "/home/user/mon_application/data/mydatafile";
     
       // Creation du job
       Batch::Job job(param, env);
     
       // On soumet le Job au BatchManager qui le relaie jusqu'au veritable
       // gestionnaire de batch sur le serveur. En retour on obtient un
       // identifiant unique de notre job (JobId).
       const Batch::JobId jobid = bm.submitJob(job);
     
       // On interroge le BatchManager pour connaitre l'etat du Job
       const Batch::JobInfo jinfo = jobid.queryJob();
       cout << jinfo << endl;
     
       // On detruit l'objet BatchManager
       delete &bm;
     
       ...