controller.py
743 lines
| 24.4 KiB
| text/x-python
|
PythonLexer
/ schainpy / controller.py
|
r197 | ''' | |
Created on September , 2012 | |||
@author: | |||
''' | |||
from xml.etree.ElementTree import Element, SubElement, ElementTree | |||
from xml.etree import ElementTree as ET | |||
from xml.dom import minidom | |||
import sys | |||
import datetime | |||
from model.jrodataIO import * | |||
from model.jroprocessing import * | |||
|
r199 | from model.jroplot import * | |
|
r197 | ||
def prettify(elem): | |||
"""Return a pretty-printed XML string for the Element. | |||
""" | |||
rough_string = ET.tostring(elem, 'utf-8') | |||
reparsed = minidom.parseString(rough_string) | |||
return reparsed.toprettyxml(indent=" ") | |||
class ParameterConf(): | |||
id = None | |||
name = None | |||
value = None | |||
|
r199 | format = None | |
|
r197 | ||
|
r243 | __value = None | |
|
r197 | ELEMENTNAME = 'Parameter' | |
def __init__(self): | |||
|
r199 | self.format = 'str' | |
|
r197 | ||
def getElementName(self): | |||
return self.ELEMENTNAME | |||
def getValue(self): | |||
|
r243 | if self.__value != None: | |
return self.__value | |||
|
r224 | value = self.value | |
|
r199 | if self.format == 'list': | |
|
r224 | strList = value.split(',') | |
|
r197 | return strList | |
|
r199 | if self.format == 'intlist': | |
|
r224 | strList = value.split(',') | |
|
r197 | intList = [int(x) for x in strList] | |
return intList | |||
|
r199 | if self.format == 'floatlist': | |
|
r224 | strList = value.split(',') | |
|
r197 | floatList = [float(x) for x in strList] | |
return floatList | |||
|
r199 | if self.format == 'date': | |
|
r224 | strList = value.split('/') | |
|
r197 | intList = [int(x) for x in strList] | |
date = datetime.date(intList[0], intList[1], intList[2]) | |||
return date | |||
|
r199 | if self.format == 'time': | |
|
r224 | strList = value.split(':') | |
|
r197 | intList = [int(x) for x in strList] | |
time = datetime.time(intList[0], intList[1], intList[2]) | |||
return time | |||
|
r224 | ||
if self.format == 'bool': | |||
value = int(value) | |||
|
r226 | if self.format == 'pairslist': | |
""" | |||
Example: | |||
value = (0,1),(1,2) | |||
""" | |||
value = value.replace('(', '') | |||
value = value.replace(')', '') | |||
strList = value.split(',') | |||
intList = [int(item) for item in strList] | |||
pairList = [] | |||
for i in range(len(intList)/2): | |||
pairList.append((intList[i*2], intList[i*2 + 1])) | |||
return pairList | |||
|
r199 | func = eval(self.format) | |
|
r224 | ||
|
r243 | self.__value = func(value) | |
return self.__value | |||
|
r197 | ||
|
r199 | def setup(self, id, name, value, format='str'): | |
|
r197 | ||
self.id = id | |||
self.name = name | |||
self.value = str(value) | |||
|
r199 | self.format = format | |
|
r197 | ||
def makeXml(self, opElement): | |||
parmElement = SubElement(opElement, self.ELEMENTNAME) | |||
parmElement.set('id', str(self.id)) | |||
parmElement.set('name', self.name) | |||
parmElement.set('value', self.value) | |||
|
r199 | parmElement.set('format', self.format) | |
|
r197 | ||
def readXml(self, parmElement): | |||
self.id = parmElement.get('id') | |||
self.name = parmElement.get('name') | |||
self.value = parmElement.get('value') | |||
|
r199 | self.format = parmElement.get('format') | |
|
r197 | ||
def printattr(self): | |||
|
r199 | print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format) | |
|
r197 | ||
class OperationConf(): | |||
id = None | |||
name = None | |||
priority = None | |||
type = None | |||
parmConfObjList = [] | |||
ELEMENTNAME = 'Operation' | |||
def __init__(self): | |||
id = 0 | |||
name = None | |||
priority = None | |||
type = 'self' | |||
def __getNewId(self): | |||
return int(self.id)*10 + len(self.parmConfObjList) + 1 | |||
def getElementName(self): | |||
return self.ELEMENTNAME | |||
def getParameterObjList(self): | |||
return self.parmConfObjList | |||
def setup(self, id, name, priority, type): | |||
self.id = id | |||
self.name = name | |||
self.type = type | |||
self.priority = priority | |||
self.parmConfObjList = [] | |||
|
r199 | def addParameter(self, name, value, format='str'): | |
|
r197 | ||
id = self.__getNewId() | |||
parmConfObj = ParameterConf() | |||
|
r199 | parmConfObj.setup(id, name, value, format) | |
|
r197 | ||
self.parmConfObjList.append(parmConfObj) | |||
return parmConfObj | |||
def makeXml(self, upElement): | |||
opElement = SubElement(upElement, self.ELEMENTNAME) | |||
opElement.set('id', str(self.id)) | |||
opElement.set('name', self.name) | |||
opElement.set('type', self.type) | |||
opElement.set('priority', str(self.priority)) | |||
for parmConfObj in self.parmConfObjList: | |||
parmConfObj.makeXml(opElement) | |||
def readXml(self, opElement): | |||
self.id = opElement.get('id') | |||
self.name = opElement.get('name') | |||
self.type = opElement.get('type') | |||
self.priority = opElement.get('priority') | |||
self.parmConfObjList = [] | |||
parmElementList = opElement.getiterator(ParameterConf().getElementName()) | |||
for parmElement in parmElementList: | |||
parmConfObj = ParameterConf() | |||
parmConfObj.readXml(parmElement) | |||
self.parmConfObjList.append(parmConfObj) | |||
def printattr(self): | |||
print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME, | |||
self.id, | |||
self.name, | |||
self.type, | |||
self.priority) | |||
for parmConfObj in self.parmConfObjList: | |||
parmConfObj.printattr() | |||
def createObject(self): | |||
if self.type == 'self': | |||
raise ValueError, "This operation type cannot be created" | |||
if self.type == 'other': | |||
className = eval(self.name) | |||
opObj = className() | |||
return opObj | |||
class ProcUnitConf(): | |||
id = None | |||
name = None | |||
|
r199 | datatype = None | |
|
r197 | inputId = None | |
opConfObjList = [] | |||
procUnitObj = None | |||
opObjList = [] | |||
ELEMENTNAME = 'ProcUnit' | |||
def __init__(self): | |||
self.id = None | |||
|
r199 | self.datatype = None | |
|
r197 | self.name = None | |
self.inputId = None | |||
self.opConfObjList = [] | |||
self.procUnitObj = None | |||
self.opObjDict = {} | |||
def __getPriority(self): | |||
return len(self.opConfObjList)+1 | |||
def __getNewId(self): | |||
return int(self.id)*10 + len(self.opConfObjList) + 1 | |||
def getElementName(self): | |||
return self.ELEMENTNAME | |||
def getId(self): | |||
return str(self.id) | |||
def getInputId(self): | |||
return str(self.inputId) | |||
def getOperationObjList(self): | |||
return self.opConfObjList | |||
def getProcUnitObj(self): | |||
return self.procUnitObj | |||
|
r199 | def setup(self, id, name, datatype, inputId): | |
|
r197 | ||
self.id = id | |||
self.name = name | |||
|
r199 | self.datatype = datatype | |
|
r197 | self.inputId = inputId | |
self.opConfObjList = [] | |||
self.addOperation(name='init', optype='self') | |||
|
r219 | ||
def addParameter(self, **kwargs): | |||
opObj = self.opConfObjList[0] | |||
opObj.addParameter(**kwargs) | |||
|
r197 | ||
|
r219 | return opObj | |
|
r197 | def addOperation(self, name, optype='self'): | |
id = self.__getNewId() | |||
priority = self.__getPriority() | |||
opConfObj = OperationConf() | |||
opConfObj.setup(id, name=name, priority=priority, type=optype) | |||
self.opConfObjList.append(opConfObj) | |||
return opConfObj | |||
def makeXml(self, procUnitElement): | |||
upElement = SubElement(procUnitElement, self.ELEMENTNAME) | |||
upElement.set('id', str(self.id)) | |||
upElement.set('name', self.name) | |||
|
r199 | upElement.set('datatype', self.datatype) | |
|
r197 | upElement.set('inputId', str(self.inputId)) | |
for opConfObj in self.opConfObjList: | |||
opConfObj.makeXml(upElement) | |||
def readXml(self, upElement): | |||
self.id = upElement.get('id') | |||
self.name = upElement.get('name') | |||
|
r199 | self.datatype = upElement.get('datatype') | |
|
r197 | self.inputId = upElement.get('inputId') | |
self.opConfObjList = [] | |||
opElementList = upElement.getiterator(OperationConf().getElementName()) | |||
for opElement in opElementList: | |||
opConfObj = OperationConf() | |||
opConfObj.readXml(opElement) | |||
self.opConfObjList.append(opConfObj) | |||
def printattr(self): | |||
|
r199 | print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME, | |
|
r197 | self.id, | |
self.name, | |||
|
r199 | self.datatype, | |
|
r197 | self.inputId) | |
for opConfObj in self.opConfObjList: | |||
opConfObj.printattr() | |||
def createObjects(self): | |||
className = eval(self.name) | |||
procUnitObj = className() | |||
for opConfObj in self.opConfObjList: | |||
if opConfObj.type == 'self': | |||
continue | |||
opObj = opConfObj.createObject() | |||
self.opObjDict[opConfObj.id] = opObj | |||
procUnitObj.addOperation(opObj, opConfObj.id) | |||
self.procUnitObj = procUnitObj | |||
return procUnitObj | |||
def run(self): | |||
|
r199 | finalSts = False | |
|
r197 | for opConfObj in self.opConfObjList: | |
|
r199 | ||
|
r197 | kwargs = {} | |
for parmConfObj in opConfObj.getParameterObjList(): | |||
kwargs[parmConfObj.name] = parmConfObj.getValue() | |||
|
r199 | #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id) | |
sts = self.procUnitObj.call(opConfObj, **kwargs) | |||
finalSts = finalSts or sts | |||
return finalSts | |||
|
r197 | class ReadUnitConf(ProcUnitConf): | |
path = None | |||
startDate = None | |||
endDate = None | |||
startTime = None | |||
endTime = None | |||
ELEMENTNAME = 'ReadUnit' | |||
def __init__(self): | |||
self.id = None | |||
|
r199 | self.datatype = None | |
|
r197 | self.name = None | |
self.inputId = 0 | |||
self.opConfObjList = [] | |||
self.opObjList = [] | |||
def getElementName(self): | |||
return self.ELEMENTNAME | |||
|
r224 | def setup(self, id, name, datatype, path, startDate, endDate, startTime, endTime, **kwargs): | |
|
r197 | ||
self.id = id | |||
self.name = name | |||
|
r199 | self.datatype = datatype | |
|
r197 | ||
self.path = path | |||
self.startDate = startDate | |||
self.endDate = endDate | |||
self.startTime = startTime | |||
self.endTime = endTime | |||
|
r224 | self.addRunOperation(**kwargs) | |
|
r197 | ||
|
r224 | def addRunOperation(self, **kwargs): | |
|
r197 | ||
opObj = self.addOperation(name = 'run', optype = 'self') | |||
|
r199 | opObj.addParameter(name='path' , value=self.path, format='str') | |
opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |||
opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |||
opObj.addParameter(name='startTime' , value=self.startTime, format='time') | |||
opObj.addParameter(name='endTime' , value=self.endTime, format='time') | |||
|
r224 | ||
for key, value in kwargs.items(): | |||
opObj.addParameter(name=key, value=value, format=type(value).__name__) | |||
|
r197 | return opObj | |
|
r224 | class Project(): | |
|
r197 | ||
id = None | |||
name = None | |||
description = None | |||
# readUnitConfObjList = None | |||
procUnitConfObjDict = None | |||
|
r224 | ELEMENTNAME = 'Project' | |
|
r197 | ||
def __init__(self): | |||
self.id = None | |||
self.name = None | |||
self.description = None | |||
# self.readUnitConfObjList = [] | |||
self.procUnitConfObjDict = {} | |||
def __getNewId(self): | |||
id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1 | |||
return str(id) | |||
def getElementName(self): | |||
return self.ELEMENTNAME | |||
def setup(self, id, name, description): | |||
self.id = id | |||
self.name = name | |||
self.description = description | |||
|
r224 | def addReadUnit(self, datatype, path, startDate='', endDate='', startTime='', endTime='', **kwargs): | |
|
r197 | ||
id = self.__getNewId() | |||
|
r199 | name = '%sReader' %(datatype) | |
|
r197 | ||
readUnitConfObj = ReadUnitConf() | |||
|
r224 | readUnitConfObj.setup(id, name, datatype, path, startDate, endDate, startTime, endTime, **kwargs) | |
|
r197 | ||
self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj | |||
return readUnitConfObj | |||
|
r199 | def addProcUnit(self, datatype, inputId): | |
|
r197 | ||
id = self.__getNewId() | |||
|
r199 | name = '%sProc' %(datatype) | |
|
r197 | ||
procUnitConfObj = ProcUnitConf() | |||
|
r199 | procUnitConfObj.setup(id, name, datatype, inputId) | |
|
r197 | ||
self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj | |||
return procUnitConfObj | |||
def makeXml(self): | |||
|
r224 | projectElement = Element('Project') | |
|
r197 | projectElement.set('id', str(self.id)) | |
projectElement.set('name', self.name) | |||
projectElement.set('description', self.description) | |||
# for readUnitConfObj in self.readUnitConfObjList: | |||
# readUnitConfObj.makeXml(projectElement) | |||
for procUnitConfObj in self.procUnitConfObjDict.values(): | |||
procUnitConfObj.makeXml(projectElement) | |||
self.projectElement = projectElement | |||
def writeXml(self, filename): | |||
self.makeXml() | |||
print prettify(self.projectElement) | |||
ElementTree(self.projectElement).write(filename, method='xml') | |||
def readXml(self, filename): | |||
#tree = ET.parse(filename) | |||
self.projectElement = None | |||
# self.readUnitConfObjList = [] | |||
self.procUnitConfObjDict = {} | |||
self.projectElement = ElementTree().parse(filename) | |||
self.project = self.projectElement.tag | |||
self.id = self.projectElement.get('id') | |||
self.name = self.projectElement.get('name') | |||
self.description = self.projectElement.get('description') | |||
readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName()) | |||
for readUnitElement in readUnitElementList: | |||
readUnitConfObj = ReadUnitConf() | |||
readUnitConfObj.readXml(readUnitElement) | |||
self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj | |||
procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName()) | |||
for procUnitElement in procUnitElementList: | |||
procUnitConfObj = ProcUnitConf() | |||
procUnitConfObj.readXml(procUnitElement) | |||
self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj | |||
def printattr(self): | |||
|
r224 | print "Project[%s]: name = %s, description = %s" %(self.id, | |
|
r197 | self.name, | |
self.description) | |||
# for readUnitConfObj in self.readUnitConfObjList: | |||
# readUnitConfObj.printattr() | |||
for procUnitConfObj in self.procUnitConfObjDict.values(): | |||
procUnitConfObj.printattr() | |||
def createObjects(self): | |||
# for readUnitConfObj in self.readUnitConfObjList: | |||
# readUnitConfObj.createObjects() | |||
for procUnitConfObj in self.procUnitConfObjDict.values(): | |||
procUnitConfObj.createObjects() | |||
def __connect(self, objIN, obj): | |||
obj.setInput(objIN.getOutput()) | |||
def connectObjects(self): | |||
for puConfObj in self.procUnitConfObjDict.values(): | |||
inputId = puConfObj.getInputId() | |||
if int(inputId) == 0: | |||
continue | |||
puConfINObj = self.procUnitConfObjDict[inputId] | |||
puObj = puConfObj.getProcUnitObj() | |||
puINObj = puConfINObj.getProcUnitObj() | |||
self.__connect(puINObj, puObj) | |||
def run(self): | |||
# for readUnitConfObj in self.readUnitConfObjList: | |||
# readUnitConfObj.run() | |||
|
r199 | ||
|
r197 | while(True): | |
|
r199 | ||
finalSts = False | |||
|
r197 | for procUnitConfObj in self.procUnitConfObjDict.values(): | |
|
r199 | #print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id) | |
sts = procUnitConfObj.run() | |||
finalSts = finalSts or sts | |||
#If every process unit finished so end process | |||
if not(finalSts): | |||
|
r200 | print "Every process units have finished" | |
|
r199 | break | |
|
r197 | ||
if __name__ == '__main__': | |||
desc = "Segundo Test" | |||
filename = "schain.xml" | |||
|
r224 | controllerObj = Project() | |
|
r197 | ||
controllerObj.setup(id = '191', name='test01', description=desc) | |||
|
r219 | readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage', | |
path='data/rawdata/', | |||
startDate='2011/01/01', | |||
|
r197 | endDate='2012/12/31', | |
|
r219 | startTime='00:00:00', | |
|
r197 | endTime='23:59:59', | |
|
r224 | online=1, | |
walk=1) | |||
|
r197 | ||
|
r221 | # opObj00 = readUnitConfObj.addOperation(name='printInfo') | |
|
r197 | ||
|
r219 | procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId()) | |
|
r197 | ||
|
r219 | opObj10 = procUnitConfObj0.addOperation(name='selectChannels') | |
opObj10.addParameter(name='channelList', value='3,4,5', format='intlist') | |||
opObj10 = procUnitConfObj0.addOperation(name='selectHeights') | |||
opObj10.addParameter(name='minHei', value='90', format='float') | |||
|
r222 | opObj10.addParameter(name='maxHei', value='180', format='float') | |
|
r219 | ||
opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='other') | |||
opObj12.addParameter(name='n', value='10', format='int') | |||
procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId()) | |||
|
r221 | procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int') | |
|
r224 | # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='') | |
|
r197 | ||
|
r199 | opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |
opObj11.addParameter(name='idfigure', value='1', format='int') | |||
|
r222 | opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str') | |
|
r219 | opObj11.addParameter(name='zmin', value='40', format='int') | |
|
r221 | opObj11.addParameter(name='zmax', value='90', format='int') | |
|
r222 | opObj11.addParameter(name='showprofile', value='1', format='int') | |
|
r204 | ||
|
r224 | # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='other') | |
# opObj11.addParameter(name='idfigure', value='2', format='int') | |||
# opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str') | |||
# opObj11.addParameter(name='zmin', value='40', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
# procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId()) | |||
# | |||
# opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='other') | |||
# opObj12.addParameter(name='n', value='2', format='int') | |||
# opObj12.addParameter(name='overlapping', value='1', format='int') | |||
# | |||
# procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId()) | |||
# procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int') | |||
# | |||
# opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='other') | |||
# opObj11.addParameter(name='idfigure', value='2', format='int') | |||
# opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str') | |||
# opObj11.addParameter(name='zmin', value='40', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
|
r222 | # opObj11.addParameter(name='showprofile', value='1', format='int') | |
# opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='other') | |||
# opObj11.addParameter(name='idfigure', value='10', format='int') | |||
# opObj11.addParameter(name='wintitle', value='RTI', format='str') | |||
## opObj11.addParameter(name='xmin', value='21', format='float') | |||
## opObj11.addParameter(name='xmax', value='22', format='float') | |||
# opObj11.addParameter(name='zmin', value='40', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
# opObj11.addParameter(name='showprofile', value='1', format='int') | |||
# opObj11.addParameter(name='timerange', value=str(60), format='int') | |||
|
r207 | ||
# opObj10 = procUnitConfObj1.addOperation(name='selectChannels') | |||
# opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist') | |||
# | |||
# opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') | |||
# opObj12.addParameter(name='n', value='2', format='int') | |||
# | |||
# opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |||
# opObj11.addParameter(name='idfigure', value='2', format='int') | |||
# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str') | |||
# opObj11.addParameter(name='zmin', value='70', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
# | |||
# opObj10 = procUnitConfObj1.addOperation(name='selectChannels') | |||
# opObj10.addParameter(name='channelList', value='2,6', format='intlist') | |||
# | |||
# opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='other') | |||
# opObj12.addParameter(name='n', value='2', format='int') | |||
# | |||
# opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') | |||
# opObj11.addParameter(name='idfigure', value='3', format='int') | |||
# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str') | |||
# opObj11.addParameter(name='zmin', value='70', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
|
r204 | ||
|
r197 | # opObj12 = procUnitConfObj1.addOperation(name='decoder') | |
|
r199 | # opObj12.addParameter(name='ncode', value='2', format='int') | |
# opObj12.addParameter(name='nbauds', value='8', format='int') | |||
# opObj12.addParameter(name='code0', value='001110011', format='int') | |||
# opObj12.addParameter(name='code1', value='001110011', format='int') | |||
|
r204 | ||
|
r207 | # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId()) | |
# | |||
# opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='other') | |||
# opObj21.addParameter(name='n', value='2', format='int') | |||
# | |||
# opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='other') | |||
# opObj11.addParameter(name='idfigure', value='4', format='int') | |||
# opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str') | |||
# opObj11.addParameter(name='zmin', value='70', format='int') | |||
# opObj11.addParameter(name='zmax', value='90', format='int') | |||
|
r204 | ||
|
r197 | print "Escribiendo el archivo XML" | |
controllerObj.writeXml(filename) | |||
print "Leyendo el archivo XML" | |||
controllerObj.readXml(filename) | |||
#controllerObj.printattr() | |||
controllerObj.createObjects() | |||
controllerObj.connectObjects() | |||
controllerObj.run() | |||