Esempio n. 1
0
        //(1):先拿到所有的管理员;
        //(2): 拼一个 userTask 对象,只是收件人为空。
        //(3): 遍历所有的管员,clone 第一个userTask对象,并将添加到 UserTaskCollection 对象里
        //(4): UserTaskAdapter.Instance.SendUserTasks 发送数据
        public void Run()
        {
            try
            {
                DataTable dt = DbHelper.RunSqlReturnDS(InvalidAssigneesNotificationHelper.GetInvalidAssigneesNotificationsSQL).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    IEnumerable <IUser> allUsers = InvalidAssigneesNotificationHelper.GetAllUsers();

                    InvalidAssigneesNotification currentIANotification = new InvalidAssigneesNotification()
                    {
                        NotificationID = UuidHelper.NewUuidString(), CreateTime = DateTime.Now
                    };

                    InvalidAssignessUrlCollection ivalidAssignessUrls = InvalidAssigneesNotificationHelper.PreInvalidAssignessUrls(currentIANotification.NotificationID, dt);

                    //todo: 一百以内并数字
                    if (ivalidAssignessUrls.Count < SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount)
                    {
                        currentIANotification.Description = string.Format("待处理流程人员异常 {0}条", ivalidAssignessUrls.Count);
                    }
                    else
                    {
                        currentIANotification.Description = string.Format("待处理流程人员异常 {0}条以上", SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount);
                    }

                    UserTask userTaskItem = InvalidAssigneesNotificationHelper.BuildUserTask(currentIANotification.Description);

                    using (TransactionScope ts = TransactionScopeFactory.Create())
                    {
                        InvalidAssigneesNotificationHelper.SendUserTask(allUsers, userTaskItem, currentIANotification.NotificationID);

                        InvalidAssigneesNotificationAdapter.Instance.AddData(currentIANotification);

                        InvalidAssigneesUrlAdapter.Instance.BulkAdd(ivalidAssignessUrls);

                        ts.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                this.Params.Log.Write(string.Format("处理人员不存流程:{0}; {1}", DateTime.Now.ToString(), ex.ToString()));
            }
        }
		/// <summary>
		/// 添加单条管理员处消息
		/// </summary>
		/// <param name="data"></param>
		/// <returns></returns>
		public bool AddData(InvalidAssigneesNotification data)
		{
			using (TransactionScope scope = TransactionScopeFactory.Create())
			{
				using (DbContext context = DbContext.GetContext(this.GetConnectionName()))
				{
					Database db = DatabaseFactory.Create(context);
					DbCommand command = db.GetSqlStringCommand(InsertSql);

					this.SetCommandParames(db, command, data);

					int count = command.ExecuteNonQuery();

					scope.Complete();

					return count == 1 ? true : false;
				}
			}
		}
		//(1):先拿到所有的管理员;
		//(2): 拼一个 userTask 对象,只是收件人为空。
		//(3): 遍历所有的管员,clone 第一个userTask对象,并将添加到 UserTaskCollection 对象里
		//(4): UserTaskAdapter.Instance.SendUserTasks 发送数据
		public void Run()
		{
			try
			{
				DataTable dt = DbHelper.RunSqlReturnDS(InvalidAssigneesNotificationHelper.GetInvalidAssigneesNotificationsSQL).Tables[0];

				if (dt.Rows.Count > 0)
				{
					IEnumerable<IUser> allUsers = InvalidAssigneesNotificationHelper.GetAllUsers();

					InvalidAssigneesNotification currentIANotification = new InvalidAssigneesNotification() { NotificationID = UuidHelper.NewUuidString(), CreateTime = DateTime.Now };

					InvalidAssignessUrlCollection ivalidAssignessUrls = InvalidAssigneesNotificationHelper.PreInvalidAssignessUrls(currentIANotification.NotificationID, dt);

					//todo: 一百以内并数字
					if (ivalidAssignessUrls.Count < SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount)
						currentIANotification.Description = string.Format("待处理流程人员异常 {0}条", ivalidAssignessUrls.Count);
					else
						currentIANotification.Description = string.Format("待处理流程人员异常 {0}条以上",SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount);

					UserTask userTaskItem = InvalidAssigneesNotificationHelper.BuildUserTask(currentIANotification.Description);

					using (TransactionScope ts = TransactionScopeFactory.Create())
					{
						InvalidAssigneesNotificationHelper.SendUserTask(allUsers, userTaskItem, currentIANotification.NotificationID);

						InvalidAssigneesNotificationAdapter.Instance.AddData(currentIANotification);

						InvalidAssigneesUrlAdapter.Instance.BulkAdd(ivalidAssignessUrls);

						ts.Complete();
					}
				}
			}
			catch (Exception ex)
			{
				this.Params.Log.Write(string.Format("处理人员不存流程:{0}; {1}", DateTime.Now.ToString(), ex.ToString()));
			}
		}
		private void SetCommandParames(Database db, DbCommand command, InvalidAssigneesNotification data)
		{
			db.AddInParameter(command, "NOTIFICATION_ID", DbType.String, string.IsNullOrEmpty(data.NotificationID) ? UuidHelper.NewUuidString() : data.NotificationID);
			db.AddInParameter(command, "Description", DbType.String, data.Description);
			db.AddInParameter(command, "CreateTime", DbType.String, data.CreateTime);
		}