E.4.4 Ablaufumgebung

#!/usr/local/bin/python
# -------------------------------------------------------------
# Projekt : Digitale Bibliotheken Projekt
# Uni-Frankfurt/M, Professur Telematik und
# verteilte Systeme, Prof. O. Drobnik
# Diplomarbeit, Matzen,Hans, 1997
#
# Dateiname : py_abl.py
# Datum : 03.11.1997
# letzte Änderung :
# Autor : Hans Matzen, 1997, Frankfurt/M, Deutschland
# Sprache : Python v1.4
# Beschreibung :
#
# Anmerkungen :
#
# -------------------------------------------------------------
def exec_mc(docid,methodtmpfile,params,datafname=""):
    exectmpfile=class_funcs.getuniquename()
    fd1=c_bsio.c_bsio(exectmpfile,"a+")
    fd1.open()
 
    # schreibe skript header
    fd1.write(DL_EXECPYTHON+"\n")
    fd1.write("# Dieses Skript wurde automatisch erstellt.\n")
    fd1.write("# Digitale Bibliotheken Projekt, Uni-Frankfurt\n")
    fd1.write("# Lehrstuhl Telematik, 1997\n\n")
    fd1.write("from sc_globals import *\n\n")
    # schreibe globale systemvariablen
    # docid und datasource setzen
    if datafname!="":
        fd1.write("CURRENT_INFILE=\""+datafname+"\"\n")
    fd1.write("DOCID="+str(docid)+"\n")
    fd1.write("# --------------- auto header ende -------------\n")
 
    # die Methode dranhaengen
    fd2=c_bsio.c_bsio(methodtmpfile,"r")
    fd2.open()
    buff=" "
    while buff!="":
        buff=fd2.read(512)
        fd1.write(buff)
    fd2.close()
    fd1.close()
    
    # Methode ausfuehren, aufraeumen und Rueckmeldung schicken
    posix.chmod(exectmpfile,0755)
     
    if os.system(exectmpfile+" "+params+">"+TMPPATH+"output.dali")==0:
            log.log("Methode ohne Fehler ausgefuehrt.")
            # hole Methoden Output
            fdd=open(DL_TMPPATH+"output.dali","r")
            erg=""
            buff=" "
            while buff!="":
                buff=fdd.readline()
                erg=erg+buff
                 
            fdd.close()
                 
            ret="RESULT "+str(docid)+"\n"+erg
            del erg,buff,fdd
    else:
        log.log("Fehler beim Ausfuehren der Methode.")
        ret="ERROR "+str(docid)+"\n"+erg
 
    # temporaere Dateien loeschen
    os.system("rm "+"-f "+methtmpfile)
    os.system("rm "+"-f "+exectmpfile)
    os.system("rm "+"-f "+DL_TMPPATH+"output.dali")
    # und ergebnis zurueckgeben
    return ret