2 Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter
7 import types,sys,string
11 import N_MCCOMPO, N_ETAPE
12 from N_Exception import AsException
15 class PROC_ETAPE(N_ETAPE.ETAPE):
17 Cette classe hérite de ETAPE. La seule différence porte sur le fait
18 qu'une procédure n'a pas de concept produit
22 def __init__(self,oper=None,args={}):
26 - definition : objet portant les attributs de définition d'une étape de type opérateur. Il
27 est initialisé par l'argument oper.
29 - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args.
35 self.parent=CONTEXT.get_current_step()
38 self.idracine=oper.label
39 self.appel=N_utils.callee_where()
45 def make_register(self):
47 Initialise les attributs jdc, id, niveau et réalise les enregistrements
51 self.jdc = self.parent.get_jdc_root()
52 self.id=self.parent.register(self)
55 self.jdc = self.parent =None
61 Demande la construction des sous-objets et les stocke dans l'attribut
64 self.mc_liste=self.build_mc()
68 Cette methode applique la fonction op_init au contexte du parent
69 et lance l'exécution en cas de traitement commande par commande
70 Elle doit retourner le concept produit qui pour une PROC est toujours None
71 En cas d'erreur, elle leve une exception : AsException ou EOFError
73 if not self.isactif():return
76 if type(self.definition.op_init) == types.FunctionType:
77 apply(self.definition.op_init,(self,self.parent.g_context))
80 if self.jdc.par_lot == "NON" :
83 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
84 'fichier : ',self.appel[1],e)
86 self.reset_current_step()
89 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
90 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
91 'fichier : ',self.appel[1]+'\n',
96 Méthode qui supprime toutes les références arrières afin que l'objet puisse
97 être correctement détruit par le garbage collector
99 N_MCCOMPO.MCCOMPO.supprime(self)
103 def accept(self,visitor):
105 Cette methode permet de parcourir l'arborescence des objets
106 en utilisant le pattern VISITEUR
108 visitor.visitPROC_ETAPE(self)
110 def update_context(self,d):
112 Met à jour le contexte de l'appelant passé en argument (d)
113 Une PROC_ETAPE n ajoute pas directement de concept dans le contexte
114 Seule une fonction enregistree dans op_init pourrait le faire
116 if type(self.definition.op_init) == types.FunctionType:
117 apply(self.definition.op_init,(self,d))