public void Execute(JobExecutionContext context) { string requestId = string.Empty; string activityId = string.Empty; string filesQuery = string.Empty; AMSEntity entity = new AMSEntity(); DataTable dtRequest = null; DataTable dtDetail = null; DataTable dtFFS = null; //同步所有的信息 try { /* 表中3种状态: * Error:已完成单子即将处理(Pending) * Pending:处理过程中发生错误单子(Error) * Executing:已完成单子标识处理中(Executing) */ DataSet ds = dbBPM.ExecuteQuery(string.Format("SELECT ID,RequestID " + "FROM BPM.dbo.T_WorkQueueAMS WHERE [Status]='Pending'")); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { requestId = dr["RequestID"].ToString(); //即将处理该单子,修改状态Executing dbBPM.ExecuteNonQuery(string.Format("UPDATE BPM.dbo.T_WorkQueueAMS SET [Status]='Executing' WHERE RequestID='{0}'", requestId)); entity.AMSSobjRequestBase = FormatAMSSobjRequestBase(requestId); filesQuery = "SELECT * FROM SmartBox.dbo.T_AMS_Request WITH(NOLOCK) WHERE RequestID='{0}'"; dtRequest = dbBPM.ExecuteQuery(string.Format(filesQuery, requestId)).Tables[0]; entity.AMSRequest = FormatAMSRequest(dtRequest); filesQuery = "SELECT * FROM SmartBox.dbo.T_AMS_Request_Activity_Detail WITH(NOLOCK) WHERE RequestID='{0}'"; dtDetail = dbBPM.ExecuteQuery(string.Format(filesQuery, requestId)).Tables[0]; entity.AMSRequestActivityDetail = FormatActivity(dtDetail); filesQuery = "SELECT * FROM SmartBox.dbo.T_AMS_Request_Activity_FFS WITH(NOLOCK) WHERE RequestID='{0}'"; dtFFS = dbBPM.ExecuteQuery(string.Format(filesQuery, requestId)).Tables[0]; entity.AMSRequestActivityFFS = FormatFFS(dtFFS); new MeetingAMS().AMSInfomation(entity); //调用 //记录日志并删除 dbBPM.ExecuteNonQuery(string.Format("INSERT INTO BPM.dbo.T_WorkQueueAMS_Log (RequestID,ProcInstID,ProcessName,ActionName,Result,OccuredDate,[Status])" + "SELECT RequestID,ProcInstID,ProcessName,ActionName,Result,OccuredDate,'Pending' FROM BPM.dbo.T_WorkQueueAMS WHERE ID={0};DELETE BPM.dbo.T_WorkQueueAMS WHERE ID={0}", dr["ID"].ToString())); } } } catch (Exception ex) { if (requestId.Length > 0) { //记录错误信息 dbBPM.ExecuteNonQuery(string.Format("UPDATE BPM.dbo.T_WorkQueueAMS SET [Status]='Error',Exception='{1}' WHERE RequestID='{0}'", requestId, string.Format("StackTrace:{0},Message:{1}", ex.StackTrace.ToString(), ex.Message.ToString()))); } ExceptionManagement.Instance.LogException(EVENT_SOURCE, requestId, LogLevel.High.ToString(), ex); } }
string FormatObject(AMSEntity entity) { JavaScriptSerializer jss = new JavaScriptSerializer(); return(jss.Serialize(entity)); }