Ceci est une ancienne révision du document !
Il est possible dans EzGED de créer vos propres scripts python pour des besoins spécifiques. Vous pourrez ainsi créer une nouvelle étape de COLD ou un travail cyclique afin de réaliser des opérations non couvertes par les scripts existants.
#!/usr/bin/python # -*- coding: ISO-8859-15 -*- import traceback import sys import _common import common import db_common def execscript(params=None,edb=None): """ La fonction execscript est la fonction principale (comme une fonction main en C par exemple) qui sera appelée par le serveur des travaux afin d'exécuter le script. @param params: la liste des arguments fournis au script. @type params: list @param edb: Une instance de connexion à la base de données. @type edb: instance """ parameters = {} if params is None: #Dans le cas d'un appel en ligne de commande on récupère les arguments qui ont été fournies via cette ligne de commande. params = sys.argv #Ci-dessous on récupère dans un dictionnaire python les arguments passés au script. ret = _common.getscriptparameters(parameters, params, "instance","jobqueueid","secusrid") if ret <> 0 : return ret, str(ret) #On initialisation le contexte et surtout la session ezged. gses, vjobdir, dbtype = libjobdext.get_job_script_session(parameters, exec_session) #On initialise la connexion à la base de données via la session ezged. if edb == None: db_common.sql_dbcontext(gses) db = gses.db else: gses.db = edb db = edb if db == None: return -1, gses.lng("Unable to connect to database") else: #Dans ce bloc on va écrire toute la logique de notre script. print "Hello, World!" if edb is None: #Le script a été appelé sans lui fournir une connexion à la bdd. #Dans ce cas on ferme la connexion que nous avons ouverte au sein du script. db.disconnect() return 0,"ok" if __name__ == "__main__": print sys.argv try: errorcode,errorstr=execscript() except: print "@error" traceback.print_exc(file=sys.stdout) sys.exit(-100) if errorcode <> 0: print "@error",errorstr sys.exit(errorcode)
Le canevas pour une étape COLD est sensiblement identique à quelques lignes près
#!/usr/bin/python # -*- coding: ISO-8859-15 -*- import traceback import sys import _common import common import db_common from coldtrt import coldscript class MONETAPE(coldscript): def __init__(self): coldscript.__init__(self) self.typeIn = ("PDF",) #Liste des flux en entrée self.typeOut = ("PDF",)#Liste des flux en sortie def execscript(params=None,edb=None): """ La fonction execscript est la fonction principale (comme une fonction main en C par exemple) qui sera appelée par le serveur des travaux afin d'exécuter le script. @param params: la liste des arguments fournis au script. @type params: list @param edb: Une instance de connexion à la base de données. @type edb: instance """ parameters = {} if params is not None: #Dans le cas d'un appel en ligne de commande on récupère les arguments qui ont été fournies via cette ligne de commande. sys.argv = params #Ci-dessous on récupère dans un dictionnaire python les arguments passés au script. ret = _common.getscriptparameters(parameters, sys.argv, "instance","jobqueueid","secusrid") if ret <> 0 : return ret, str(ret) #On initialisation le contexte et surtout la session ezged. gctx = common.common(parameters["instance"]) gses = common.session(parameters["secusrid"],gctx.context[gctx.context["applic"]+".default_language"],gctx,parameters["jobqueueid"]) #On initialise la connexion à la base de données via la session ezged. if edb == None: db_common.sql_dbcontext(gses) db = gses.db else: gses.db = edb db = edb if db == None: return -1, gses.lng("Unable to connect to database") else: #Dans ce bloc on va écrire toute la logique de notre script. print "Quelque chose" if edb is None: #Le script a été appelé sans lui fournir une connexion à la bdd. #Dans ce cas on ferme la connexion que nous avons ouverte au sein du script. db.disconnect() return 0,"ok" if __name__ == "__main__": print sys.argv try: errorcode,errorstr=execscript() except: print "@error" traceback.print_exc(file=sys.stdout) sys.exit(-100) if errorcode <> 0: print "@error",errorstr sys.exit(errorcode)
Importer le script via l'Administration → Travaux → Travaux de référence → Etapes de référence
Placer votre script dans le dossier nchp > bin > et le déclarer dans les fichiers d'ezGED
Dossier :
C:\nchp\usr\local\nchp\ezged\bin
Dans le fichier db_data.py, la variable jobsteptpl contient tous les travaux enregistrés.
ID | |
NAME | |
DESC | |
SHARED | |
TYPE | |
CMD | |
MAX |