viernes, 1 de febrero de 2013

Siebel eScript que crea archivo en el Siebel filesystem y lo ubica en un Applet como hyperlink

Este Siebel eScript crea un archivo registro/log en el filesystem de Siebel y lo agrega a un List Applet como hyperlink. Se hace uso de las funciones InvokeMethod: GetFile, PutFile, CreateFile y Clib.getenv("SIEBEL_HOME")
 /********************************************************************** 
 ** Function Name:    TraceCarga 
 ** Inputs:         gImportJobId: Id del Trabajo de Importación 
 ** Trace: Texto del Mensaje 
 ** strStringDate: Concatenación de la fecha para nombre de archivo 
 ** Function Descripcion: Crea archivo con log resumen de la carga y lo agrega al applet de excepciones 
 ** Author:         Gabriel Bravo 
 ** Created:        2012-06-25 
 **********************************************************************/ 
function TraceCarga(gImportJobId,Contenido,strStringDate) 
{
  try{ 
    var Trace:String=Contenido; 
    Trace+="\nIngreso a la función TraceCarga OK\n"; 
    var vBOMktgImport = TheApplication().GetBusObject("Mktg Import"); 
    var vBCMktgImportJobs = vBOMktgImport.GetBusComp("Mktg Import Jobs"); 
    var vBCMktgImportExceptions = vBOMktgImport.GetBusComp("Mktg Import Exceptions"); 
    var sGetFileReturn; 
    var sStatus; 
    var sAbsoluteFileName; 
    var oFile=null; 
    var fileName; 
    var filePath; 

    vBCMktgImportJobs.SetViewMode(AllView); 
    vBCMktgImportJobs.ClearToQuery(); 
    vBCMktgImportJobs.ActivateField("Id"); 
    vBCMktgImportJobs.SetSearchSpec("Id", gImportJobId); 
    vBCMktgImportJobs.ExecuteQuery(ForwardOnly); 
 
    Trace+="Inicialización de Variables OK\n"; 
    sStatus = vBCMktgImportJobs.CountRecords(); 
    Trace+="vBCMktgImportJobs.CountRecords(): "+sStatus+"\n"; 
 
    sStatus = vBCMktgImportExceptions.CountRecords(); 
    Trace+="vBCMktgImportExceptions.CountRecords(): "+sStatus+"\n"; 

    fileName = "RegistroCarga_"+gImportJobId+"_"+strStringDate; 
    filePath = Clib.getenv("SIEBEL_HOME"); 
    filePath = filePath.charAt(filePath.length-1); 
    filePath = Clib.getenv("SIEBEL_HOME")+((filePath=="/")?"":"/")+"temp/"+fileName+".csv"; 
    Trace+="Nombre archivo: "+fileName+"\nRuta: "+filePath+"\n"; 
 
    vBCMktgImportExceptions.SetViewMode(AllView); 
    vBCMktgImportExceptions.ClearToQuery(); 
    vBCMktgImportExceptions.ActivateField("Import Job Id"); 
    vBCMktgImportExceptions.ActivateField("ImportFileName"); 
    sStatus="[Import Job Id] = '"+gImportJobId+"'
      AND [ImportFileName] = '"+fileName+"'"; 
    vBCMktgImportExceptions.SetSearchExpr(sStatus); 
    vBCMktgImportExceptions.ExecuteQuery(ForwardOnly); 
    Trace+="vBCMktgImportExceptions Consultado con SetSearchExpr: "+sStatus+"\n"; 
    sStatus = vBCMktgImportExceptions.CountRecords(); 
    Trace+="vBCMktgImportExceptions.CountRecords(): "+sStatus+"\nNuevo archivo ??: "+((sStatus>0)?"No":"Si")+"\n"; 

    if(vBCMktgImportExceptions.FirstRecord()){ 
      sGetFileReturn=null; 
      try{ 
        sGetFileReturn = vBCMktgImportExceptions.InvokeMethod("GetFile", "ImportFileName"); 
        Trace+="sGetFileReturn: "+sGetFileReturn+"\n"; 
        sStatus = sGetFileReturn.substring(0,sGetFileReturn.indexOf(",")); 
        Trace+="sStatus: "+sStatus+"\n"; 
        if (sStatus == "Success"){ 
          sAbsoluteFileName = sGetFileReturn.substring(sGetFileReturn.indexOf(",") + 1); 
          Trace+="sAbsoluteFileName: "+sAbsoluteFileName+"\n"; 
          oFile = Clib.fopen(sAbsoluteFileName,"a"); 
          if (oFile != null){ 
            Trace+="Previo a llenar el archivo\n"; 
            Clib.fprintf(oFile,Trace); 
            Trace += vBCMktgImportExceptions.InvokeMethod("PutFile", sAbsoluteFileName, "ImportFileName"); 
            Trace+="\nArchivo llenado\n"; 
          } 
          Clib.fclose(oFile); 
          Trace+="Archivo cerrado\n"; 
        } 
      }catch(fsErr){ 
        Trace += "\n"+fsErr.toString(); 
        RegistraExcep("TraceCarga",Trace,"Account Load Marketing Import Process.TraceCarga"); 
      } 
    }else{ 
      Trace+="sGetFileReturn: null\n"; 
      sStatus = Clib.getcwd(); 
      Trace+="Clib.getcwd(): "+sStatus+"\n"; 
      sStatus = Clib.getenv("SIEBEL_HOME"); 
      Trace+="Clib.getenv('SIEBEL_HOME'): "+sStatus+"\n"; 
      vBCMktgImportExceptions.NewRecord(NewAfter); 
      vBCMktgImportExceptions.SetFieldValue("Import Job Id",gImportJobId); 
      vBCMktgImportExceptions.SetFieldValue("ImportFileExt","log"); 
      vBCMktgImportExceptions.SetFieldValue("ImportFileName",fileName); 
      vBCMktgImportExceptions.SetFieldValue("ImportFileSrcPath",filePath); 
      vBCMktgImportExceptions.SetFieldValue("ImportFileSrcType","FILE"); 
      vBCMktgImportExceptions.SetFieldValue("File Usage","Exception"); 
      sStatus = TheApplication().InvokeMethod("LookupValue", "MKTG_IMPORT_SCH_STATUS", "Complete LIC"); 
      vBCMktgImportExceptions.SetFieldValue("Job Status",sStatus); 
      Trace+="Registro Creado. Ruta nuevo archivo: "+filePath+"\n"; 
      oFile = Clib.fopen(filePath, "a"); 
      Clib.fprintf(oFile,Trace); 
      Trace+="Archivo nuevo llenado\n"; 
      if( oFile != null ){ 
        Clib.fclose(oFile); 
        oFile=null; 
      } 
      sGetFileReturn = vBCMktgImportExceptions.InvokeMethod("CreateFile", filePath, "ImportFileName","N"); 
      Trace+="Archivo nuevo cargado\n"; 
      vBCMktgImportExceptions.WriteRecord(); 
      vBCMktgImportExceptions.InvokeMethod("RefreshBusComp"); 
      Trace+="Registro nuevo escrito\n"; 
    } 
  }catch(e){ 
    Trace +=e.toString() + "\n" + e.errText; 
    RegistraExcep("TraceCarga",Trace,"OCS Account Load Marketing Import Process.TraceCarga"); 
  }finally{ 
    if (oFile != null ){ 
      Clib.fclose(oFile); 
    } 
    vBCMktgImportJobs=null; 
    vBCMktgImportExceptions=null; 
    vBOMktgImport=null; 
    sGetFileReturn=null; 
    sStatus=null; 
    sAbsoluteFileName=null; 
    oFile=null; 
  } 
}//function 

No hay comentarios: