package com.csc.library.service; import java.util.HashMap; import com.csc.library.database.StaticProperties; import com.csc.library.process.DbProcess; import com.csc.library.session.InitialEnvironment; import com.csc.library.utilities.MyLog; import com.csc.library.utilities.UProfile; /** * ��Ѻ background process * @author Administrator */ public class CreateProcess extends ThreadProcess { private DbProcess process; // private HashMap param; private String schemaName = ""; private String index = ""; // private UProfile upf = null; private String status = ""; public CreateProcess() { super(); } public void setProcess(String processid, String index, DbProcess db) { this.process = db; this.index = index; this.setProcessID(processid); this.process.setProcessCode(this.processID+":"+index); schemaName = new InitialEnvironment("GLOBAL").getValue("schema-name"); } public void setProcessID(String processid){ this.processID = processid; this.setName( "process_" +processID); } // public void setUProfile(UProfile upf) { // this.upf = upf; // } public void run() { long starttime = System.currentTimeMillis(); try { if(this.param.containsKey("UProfile")) { this.upf = (UProfile) this.param.get("UProfile"); } else { this.upf = (UProfile) this.param.get("uprofile"); } System.out.println("InitialProcess Process "+process.getClass().getName()); StaticProperties.myConnection.beginTransaction(this.upf, this); this.upf.set("fsecurity","1"); this.upf.set("processID", processID); this.upf.setProcessid(processID); this.setProcessID(processID); this.process.process(); long endtime = System.currentTimeMillis(); if(!this.status.equalsIgnoreCase("D")&&!this.status.equalsIgnoreCase("C")) { MyLog.debug(this,this.upf,"END TIME [Complete Process] Thread["+this.getId()+"] [processid="+processID+"] [STATUS="+this.status+"] Time used=[" +(endtime-starttime)+"]"); StaticProperties.serverManager.completeProcess(processID, this.process.getMessage(), this.process.getFullMessage(),this.process); StaticProperties.myConnection.endTransaction(this.upf, this); } else { MyLog.debug(this,this.upf,"END TIME [Cancel Process] Thread["+this.getId()+"] [processid="+processID+"] [STATUS="+this.status+"] Time used=[" +(endtime-starttime)+"]"); StaticProperties.serverManager.cancelProcess(processID, this.process.getFullMessage(),this.process,this.status); StaticProperties.myConnection.rollback(this.upf, this); } Runtime.getRuntime().gc(); } catch (Exception e) { MyLog.error(this, this.upf, e); try { MyLog.debug(this,this.upf,"END TIME [Incomplete Process] Thread["+this.getId()+"] [STATUS="+this.status+"] [processid="+processID+"]" + System.currentTimeMillis()); StaticProperties.serverManager.incompleteProcess(processID, e.getMessage(), e.getMessage(),this.process); StaticProperties.myConnection.rollback(this.upf, this); } catch (Exception ex) { MyLog.error(this, this.upf, e); } }finally{ if(this.process!=null){ this.process.closeConnection(); this.process=null; } } } // public void setParam(HashMap param) { // this.param = param; // } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public void setExportType(String export_type) { } // public void setClassName(String className) { // // } @Override public void destroy() { System.out.println("END TIME Process [destroy] Thread["+this.getId()+"] [processid="+processID+"]" + System.currentTimeMillis()); } }