La classe JobId represente l'incarnation d'un objet de classe Job une fois soumis au travers du gestionnaire de batch. A chaque objet JobId correspond une et une seule soumission d'un objet Job. Ainsi un meme objet Job peut etre soumis plusieurs fois de suite a un ou plusieurs gestionnaires de batch et produira autant d'objets JobId.
L'objet JobId assure le controle et la gestion du job au travers du gestionnaire de batch. Chaque objet JobId est associe a un gestionnaire particulier aupres duquel il relaie les actions qu'on lui soumet.
class JobId { friend class BatchManager; public: // Constructeur standard et destructeur JobId(); virtual ~JobId(); // Constructeur avec le pointeur sur le BatchManager associe // et avec une reference JobId(BatchManager *, string ref); // Operateur d'affectation entre objets virtual JobId & operator =(const JobId &); // Constructeur par recopie JobId(const JobId &); // Accesseur pour la reference interne virtual string getReference() const; // Methodes pour le controle du job // retire un job du gestionnaire virtual void deleteJob() const; // suspend un job en file d'attente virtual void holdJob() const; // relache un job suspendu virtual void releaseJob() const; // modifie un job en file d'attente virtual void alterJob(const Parametre & param, const Environnement & env) const; virtual void alterJob(const Parametre & param) const; virtual void alterJob(const Environnement & env) const; // modifie un job en file d'attente virtual void setParametre(const Parametre & param); virtual void setEnvironnement(const Environnement & env); // renvoie l'etat du job virtual Batch::JobInfo queryJob() const; // Methodes pour l'interfacage avec Python (SWIG) string __str__() const; // SWIG : affichage en Python string __repr__() const; // SWIG : affichage en Python protected: BatchManager * _p_batchmanager; // pointeur sur le BatchManager // qui controle le job string _reference; // reference du job au sein du BatchManager private: };
... (ici on cree un BatchManager bm et un Job job) // On soumet le job et on recupere un identifiant JobId jobid = bm.submitJob(job); // Ce qui permet d'interroger l'etat du job en cours JobInfo jinfo = jobid.queryJob(); ...
Le constructeur par defaut cree un JobId qui devra etre complete par la suite. Ceci n'est pas directement realisable par l'utilisateur mais sert pour certaines classes amies de la classe JobId.
D'un point de vue utilisateur la construction d'un objet JobId necessite un pointeur sur un gestionnaire de batch existant et une chaine de caractere representant une reference au sein de ce gestionnaire de batch.
Ces parametres sont en general issus de la communication avec l'API du gestionnaire de batch et ne peuvent etre aisement deduits. C'est pourquoi il est recommande de passer par une classe d'implementation pour fabriquer un objet JobId.
Le destructeur libere l'espace occupe par l'objet.
L'affectation d'un objet JobId duplique les donnees internes de l'objet passe en argument. Les deux objets sont totalement independants a l'issue de l'affectation et designent chacun la meme instance du job dans le meme gestionnaire de batch. Le controle du job peut etre realise avec l'un ou l'autre des objets.
De meme que l'affectation le constructeur par recopie produit un objet JobId totalement independant de l'objet passe en argument et qui designe le meme job dans le meme gestionnaire de batch. Le controle du job peut etre realise avec l'un ou l'autre des objets.
Cet accesseur retourne la reference du job pour le gestionnaire de batch qui a produit l'objet.
Cette methode relaie aupres au gestionnaire de batch qui a produit l'objet la demande d'arret du job.
Cette methode relaie aupres au gestionnaire de batch qui a produit l'objet la demande de suspension du job.
Cette methode relaie aupres au gestionnaire de batch qui a produit l'objet la demande de liberation du job.
Ces methodes relaient aupres du gestionnaire de batch qui a produit l'objet la demande de modification des parametres et/ou des variables d'environnement du job.
Cette methode n'est utile que pour l'interfacage avec Python, car Python ne sait pas gerer la surcharge de methode, et de fait leve des exceptions lors d'appels a de telles methodes.
Elle est equivalente a la methode ‘void alterJob(const Parametre & param) const’.
Cette methode n'est utile que pour l'interfacage avec Python, car Python ne sait pas gerer la surcharge de methode, et de fait leve des exceptions lors d'appels a de telles methodes.
Elle est equivalente a la methode ‘void alterJob(const Environnement & env) const’.
Cette methode relaie aupres du gestionnaire de batch qui a produit l'objet la demande d'interrogation de l'etat du job.
Cette methode n'est utile que pour l'interfacage avec Python. Elle permet d'afficher l'etat de l'objet JobId.
Cette methode n'est utile que pour l'interfacage avec Python. Elle permet d'afficher l'etat de l'objet JobId.