importdream.simulation.LineGenerationJSONasManPyMain#import ManPy main JSON script
fromxml.etreeimportElementTreeaset
fromCMSDOutputimportCMSDOutput
importxlrd
importjson
...
...
@@ -59,69 +60,18 @@ M1=Dict.get('M1')
M2=Dict.get('M2')
#==================================== Output preparation: output the updated values in the CMSD information model of Topology10 ====================================================#
#==================================== Output preparation: output the updated values in the CMSD information model ====================================================#
datafile=('CMSD_TwoServers.xml')#It defines the name or the directory of the XML file that is manually written the CMSD information model
tree=et.parse(datafile)#This file will be parsed using the XML.ETREE Python library
M1Parameters=[]
M1ParameterValue=[]
forindexinlist(Dict['M1'].keys()):
ifindexisnot'distributionType':
M1Parameters.append(index)
M1ParameterValue.append(Dict['M1'][index])
ifDict['M1']['distributionType']=='Normal':
delM1['min']
delM1['max']
elifDict['M2']['distributionType']=='Normal':
delM2['min']
delM2['max']
M2Parameters=[]
M2ParameterValue=[]
forindexinlist(Dict['M2'].keys()):
ifindexisnot'distributionType':
M2Parameters.append(index)
M2ParameterValue.append(Dict['M2'][index])
root=tree.getroot()
process=tree.findall('./DataSection/ProcessPlan/Process')#It creates a new variable and using the 'findall' order in XML.ETREE library, this new variable holds all the processes defined in the XML file
forprocessinprocess:
process_identifier=process.find('Identifier').text#It creates a new variable that holds the text of the Identifier element in the XML file
ifprocess_identifier=='A020':#It checks using if...elif syntax if the process identifier is 'A020', so the process that uses the first machine
OperationTime=process.get('OpeationTime')#It gets the element attribute OpearationTime inside the Process node
Distribution=process.get('./OperationTime/Distribution')#It gets the element attribute Distribution inside the OpearationTime node
Name=process.find('./OperationTime/Distribution/Name')#It finds the subelement Name inside the Distribution attribute
Name.text=Dict['M1']['distributionType']#It changes the text between the Name element tags, putting the name of the distribution (e.g. in Normal distribution that will be Normal)
Name.text=str(M1Parameters[0])#It changes the text between the Name element tags, putting the name of the distribution's first parameter (e.g. in Normal that will be the mean)
Value.text=str(M1ParameterValue[0])#It changes the text between the Value element tags, putting the value of the distribution's first parameter (e.g. in Normal so for mean value that will be 5.0)
Name.text=str(M1Parameters[1])#It changes the text between the Name element tags, putting the name of the distribution's second parameter (e.g. in Normal that will be the standarddeviation)
Value.text=str(M1ParameterValue[1])#It changes the text between the Value element tags, putting the value of the distribution's second parameter (e.g. in Normal so for standarddeviation value that will be 1.3)
elifprocess_identifier=='A040':#It checks using if...elif syntax if the process identifier is 'A040', so the process that uses the second machine
procTime2.write('CMSD_TwoServers_Output.xml',encoding="utf8")#It writes the element tree to a specified file, using the 'utf8' output encoding
#================================= Output preparation: output the updated values in the JSON file of Topology10 =========================================================#
jsonFile=open('JSON_TwoServers.json','r')#It opens the Topology10 JSON file