Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        string FormatObject(AMSEntity entity)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();

            return(jss.Serialize(entity));
        }