예제 #1
0
 public virtual string OnWorkItemCreating(T_WorkItemBase wiBase, SysWorkItem wi)
 {
     if (WebConfigAppSettings.UseSSOModel)
     {
         using (BizDataContext context = new BizDataContext(WebConfigAppSettings.HomeBizDBConnString, true))
         {
             wiBase.WorkItemBase_Id = context.GetNextIdentity_Int(false);
             context.Insert(wiBase);
             DbParameter parameter = context.CreateParameter();
             parameter.ParameterName = context.AddPrefixToParameterName("OwnerBiz");
             parameter.Value         = WebConfigAppSettings.ApplicationName;
             string sql = string.Format("update T_WorkItemBase set OwnerBiz = {0}", parameter.ParameterName);
             context.ExecuteNonQuery(sql, new DbParameter[] { parameter });
             return(wiBase.WorkItemBase_Id.ToString());
         }
     }
     return(null);
 }
 private static void ProcessError(SysWorkflowMessage msg, Exception ex, string connectionStringOrName)
 {
     if (string.IsNullOrWhiteSpace(connectionStringOrName))
     {
         connectionStringOrName = DataContext.BizConnectionStringDefault;
     }
     try
     {
         using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
         {
             using (BizDataContext context = new BizDataContext(connectionStringOrName, true))
             {
                 if (msg.State != SysWorkflowMessageStateEnum.Running)
                 {
                     throw new Exception(string.Format("消息ID:{0}的状态不为Running", msg.MessageId));
                 }
                 msg.State            = SysWorkflowMessageStateEnum.Error;
                 msg.LastErrorMessage = ex.Message;
                 string sql = string.Format("UPDATE SysWorkflowMessage SET STATE = {0}, LastErrorMessage = {1} WHERE MessageId = {2} AND (STATE = {3} or STATE = {4}) ", new object[] { context.AddPrefixToParameterName("NewState"), context.AddPrefixToParameterName("LastErrorMessage"), context.AddPrefixToParameterName("MessageId"), context.AddPrefixToParameterName("OldState1"), context.AddPrefixToParameterName("OldState2") });
                 if (context.ExecuteNonQuery(sql, new DbParameter[] { context.CreateParameterWithPrefix("NewState", Convert.ToInt32(SysWorkflowMessageStateEnum.Error), typeof(int)), context.CreateParameterWithPrefix("LastErrorMessage", ex.Message, typeof(string)), context.CreateParameterWithPrefix("MessageId", msg.MessageId, typeof(int)), context.CreateParameterWithPrefix("OldState1", Convert.ToInt32(SysWorkflowMessageStateEnum.Running), typeof(int)), context.CreateParameterWithPrefix("OldState2", Convert.ToInt32(SysWorkflowMessageStateEnum.Inited), typeof(int)) }) <= 0)
                 {
                     AppLogHelper.Information("将工作流消息更改为错误状态时更新行数为0: MessageId={0}", new object[] { msg.MessageId });
                 }
             }
             scope.Complete();
         }
         Console.WriteLine(ex.Message);
     }
     catch (Exception exception)
     {
         AppLogHelper.Error(exception, "将工作流消息更改为错误状态时失败: MessageId={0}", new object[] { msg.MessageId });
         Console.WriteLine(exception.Message);
     }
 }