1 #@ MODIF N_PROC_ETAPE Noyau DATE 07/09/2009 AUTEUR COURTOIS M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # RESPONSABLE COURTOIS M.COURTOIS
4 # CONFIGURATION MANAGEMENT OF EDF VERSION
5 # ======================================================================
6 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
7 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
8 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
9 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
10 # (AT YOUR OPTION) ANY LATER VERSION.
12 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
13 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
14 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
15 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
17 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
18 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
19 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
22 # ======================================================================
26 Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter
31 import types,sys,string
35 import N_MCCOMPO, N_ETAPE
36 from N_Exception import AsException
39 class PROC_ETAPE(N_ETAPE.ETAPE):
41 Cette classe hérite de ETAPE. La seule différence porte sur le fait
42 qu'une procédure n'a pas de concept produit
46 def __init__(self,oper=None,args={}):
50 - definition : objet portant les attributs de définition d'une étape de type opérateur. Il
51 est initialisé par l'argument oper.
53 - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args.
59 self.parent=CONTEXT.get_current_step()
62 self.idracine=oper.label
63 self.appel=N_utils.callee_where()
69 def make_register(self):
71 Initialise les attributs jdc, id, niveau et réalise les enregistrements
75 self.jdc = self.parent.get_jdc_root()
76 self.id=self.parent.register(self)
79 self.jdc = self.parent =None
85 Demande la construction des sous-objets et les stocke dans l'attribut
88 self.mc_liste=self.build_mc()
92 Cette methode applique la fonction op_init au contexte du parent
93 et lance l'exécution en cas de traitement commande par commande
94 Elle doit retourner le concept produit qui pour une PROC est toujours None
95 En cas d'erreur, elle leve une exception : AsException ou EOFError
97 if not self.isactif():return
100 if type(self.definition.op_init) == types.FunctionType:
101 apply(self.definition.op_init,(self,self.parent.g_context))
104 except AsException,e:
105 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
106 'fichier : ',self.appel[1],e)
110 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
111 raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
112 'fichier : ',self.appel[1]+'\n',
120 Méthode qui supprime toutes les références arrières afin que l'objet puisse
121 etre correctement détruit par le garbage collector
123 N_MCCOMPO.MCCOMPO.supprime(self)
127 def accept(self,visitor):
129 Cette methode permet de parcourir l'arborescence des objets
130 en utilisant le pattern VISITEUR
132 visitor.visitPROC_ETAPE(self)
134 def update_context(self,d):
136 Met à jour le contexte de l'appelant passé en argument (d)
137 Une PROC_ETAPE n ajoute pas directement de concept dans le contexte
138 Seule une fonction enregistree dans op_init pourrait le faire
140 if type(self.definition.op_init) == types.FunctionType:
141 apply(self.definition.op_init,(self,d))