public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后转为已办 UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("PROCESS_ID", currentActivity.Process.ID)); UserTaskCollection toAccomplishedTasks = new UserTaskCollection(); UserTaskCollection toDeletedTasks = new UserTaskCollection(); currentProcessTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) { toAccomplishedTasks.Add(u); } else { toDeletedTasks.Add(u); } }); WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(toDeletedTasks); UserTaskCollection userTasksInContext = RemoveTasksInContext(actionParams); //将上下文中的待办转到已办中 userTasksInContext.ForEach(t => toAccomplishedTasks.Add(t)); //将上下文中标记为已删除的从准备转已办的记录中删除 toAccomplishedTasks.RemoveExistedTasks(WfRuntime.ProcessContext.DeletedUserTasks); //将待办转到已办中,便于事后恢复 toAccomplishedTasks.ForEach(u => LeaveActivityUserTaskAction.ChangeUserTaskToAccomplishedTasks(currentActivity, u)); WfRuntime.ProcessContext.AccomplishedUserTasks.CopyFromNotExistedTaskID(toAccomplishedTasks); //暂时对当前活动的处理人发送通知 UserTaskCollection notifyTasks = BuildUserNotifiesFromActivity(currentActivity); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.Process.CancelEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, currentActivity.Process.Descriptor.Properties.GetValue("DefaultCancelTaskPrefix", "流程被取消:")) + task.TaskTitle; } WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.AbortedProcesses.AddOrReplace(currentActivity.Process); WfRuntime.ProcessContext.FireCancelProcessPrepareAction(); } }
public override void PrepareAction(WfActionParams actionParams) { IWfActivity currentActivity = WfRuntime.ProcessContext.CurrentActivity; if (currentActivity != null) { //找到当前流程所有的待办,然后转为已办 UserTaskCollection currentProcessTasks = UserTaskAdapter.Instance.LoadUserTasks(builder => builder.AppendItem("PROCESS_ID", currentActivity.Process.ID)); WfRuntime.ProcessContext.DeletedUserTasks.CopyFromNotExistedTaskID(currentProcessTasks); UserTaskCollection toAccomplishedTasks = new UserTaskCollection(); currentProcessTasks.ForEach(u => { if (u.Status == TaskStatus.Ban) toAccomplishedTasks.Add(u); }); UserTaskCollection userTasksInContext = RemoveTasksInContext(actionParams); //将上下文中的待办转到已办中 userTasksInContext.ForEach(t => toAccomplishedTasks.Add(t)); //将上下文中标记为已删除的从准备转已办的记录中删除 toAccomplishedTasks.RemoveExistedTasks(WfRuntime.ProcessContext.DeletedUserTasks); //将待办转到已办中,便于事后恢复 toAccomplishedTasks.ForEach(u => LeaveActivityUserTaskAction.ChangeUserTaskToAccomplishedTasks(currentActivity, u)); WfRuntime.ProcessContext.AccomplishedUserTasks.CopyFromNotExistedTaskID(toAccomplishedTasks); //暂时对当前活动的处理人发送通知 UserTaskCollection notifyTasks = BuildUserNotifiesFromActivity(currentActivity); AppendResourcesToNotifiers(currentActivity, notifyTasks, currentActivity.Descriptor.Process.CancelEventReceivers); foreach (UserTask task in notifyTasks) { task.Status = TaskStatus.Yue; task.TaskTitle = Translator.Translate(Define.DefaultCulture, currentActivity.Process.Descriptor.Properties.GetValue("DefaultCancelTaskPrefix", "流程被取消:")) + task.TaskTitle; } WfRuntime.ProcessContext.NotifyUserTasks.CopyFrom(notifyTasks); WfRuntime.ProcessContext.Acl.CopyFrom(notifyTasks.ToAcl()); WfRuntime.ProcessContext.AbortedProcesses.AddOrReplace(currentActivity.Process); WfRuntime.ProcessContext.FireCancelProcessPrepareAction(); } }
public UserTaskCollection LoadUserTasksByActivity(string activityID, Action<InSqlClauseBuilder> action) { action.NullCheck("action"); InSqlClauseBuilder builder = new InSqlClauseBuilder(); action(builder); string sql = string.Format("SELECT * FROM WF.USER_TASK WHERE ACTIVITY_ID = {0}", TSqlBuilder.Instance.CheckUnicodeQuotationMark(activityID)); if (builder.Count > 0) sql += " AND " + builder.ToSqlStringWithInOperator(TSqlBuilder.Instance); UserTaskCollection result = new UserTaskCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { UserTask task = new UserTask(); ORMapping.DataRowToObject(row, task); result.Add(task); } return result; }
/// <summary> /// 如果请求是提醒对话框的,则处理该请求,显示提醒对话框的内容 /// </summary> private void DoNotifyDialog() { if (HttpContext.Current.Request.RequestType == "POST") { string taskID = HttpContext.Current.Request.QueryString["taskID"]; string taskSource = WebUtility.GetRequestFormString("taskSource", "userTask"); if (string.IsNullOrEmpty(taskID) == false && GetAutoTransferToCompletedTask()) { UserTask task = new UserTask(); task.TaskID = taskID; UserTaskCollection tasks = new UserTaskCollection(); tasks.Add(task); if (taskSource == "userTask") UserTaskAdapter.Instance.DeleteUserTasks(tasks); else UserTaskAdapter.Instance.DeleteUserAccomplishedTasks(tasks); } SaveAutoTransferToCompletedTaskFlag(); //WebUtility.ResponseRefreshParentWindowScriptBlock(); HttpContext.Current.Response.Write(ExtScriptHelper.GetRefreshBridgeScript()); WebUtility.ResponseTimeoutScriptBlock("top.close();", ExtScriptHelper.DefaultResponseTimeout); HttpContext.Current.Response.End(); } else { Page page = new Page(); HtmlGenericControl html = new HtmlGenericControl("html"); WebUtility.SetCurrentPage(page); page.Controls.Add(html); HtmlHead head = new HtmlHead(); html.Controls.Add(head); HtmlTitle title = new HtmlTitle(); title.Text = Translator.Translate(Define.DefaultCulture, "提醒消息"); head.Controls.Add(title); HtmlGenericControl body = new HtmlGenericControl("body"); html.Controls.Add(body); WebUtility.AttachPageModules(page); string temmplate = GetNotifyDialogHtml(); string pageHtml = InitNotifyDialogPage(temmplate); body.Controls.Add(new LiteralControl(pageHtml)); ((IHttpHandler)page).ProcessRequest(HttpContext.Current); HttpContext.Current.Response.End(); } }
internal static void AppendResourcesToNotifiers(IWfActivity currentActivity, UserTaskCollection notifyTasks, WfResourceDescriptorCollection resources) { foreach (IUser user in resources.ToUsers()) { UserTask task = BuildOneUserNotifyFromActivity(currentActivity); task.SendToUserID = user.ID; task.SendToUserName = user.DisplayName; notifyTasks.Add(task); } }
private static UserTaskCollection FilterCurrentUserTasks(UserTaskCollection sourceTasks) { UserTaskCollection result = new UserTaskCollection(); foreach (UserTask task in sourceTasks) { if (string.Compare(task.SourceID, DeluxeIdentity.CurrentUser.ID, true) == 0) { result.Add(task); } } return(result); }
/// <summary> /// 删除当前在上下文中的待办 /// </summary> /// <param name="actionParams"></param> /// <returns></returns> private static UserTaskCollection RemoveTasksInContext(WfActionParams actionParams) { UserTaskCollection result = new UserTaskCollection(); actionParams.Context.MoveToUserTasks.Remove(t => { bool remove = string.Compare(t.ProcessID, actionParams.Context.CurrentProcess.ID, true) == 0; if (remove) { result.Add(t); } return(remove); }); return(result); }
/// <summary> /// 给管里员批量发送待办 /// </summary> /// <param name="allUsers"></param> /// <param name="itemUserTask"></param> public static void SendUserTask(IEnumerable <IUser> allUsers, UserTask itemUserTask, string notificationID) { UserTaskCollection senuserTasks = new UserTaskCollection(); foreach (IUser user in allUsers) { UserTask item = itemUserTask.Clone(); item.TaskID = UuidHelper.NewUuidString(); item.ProcessID = item.TaskID; item.ResourceID = item.TaskID; item.Url = string.Format(item.Url, notificationID, item.TaskID); item.SendToUserID = user.ID; item.SendToUserName = user.Name; senuserTasks.Add(item); } UserTaskAdapter.Instance.SendUserTasks(senuserTasks); }
private static UserTaskCollection CreateNewUserTasks(UserTaskCollection originalTasks, IEnumerable <IUser> targetUsers) { UserTaskCollection result = new UserTaskCollection(); foreach (UserTask task in originalTasks) { foreach (IUser user in targetUsers) { UserTask newTask = task.Clone(); newTask.TaskID = UuidHelper.NewUuidString(); newTask.SendToUserID = user.ID; newTask.SendToUserName = user.DisplayName; newTask.TaskStartTime = DateTime.Now; result.Add(newTask); } } return(result); }
protected void Submitbtn_Click(object sender, EventArgs e) { try { UserTask clonedUserTask = UserTaskAdapter.Instance.LoadSingleUserTaskByID(this.UserTaskID); UserTaskCollection tasks = new UserTaskCollection(); tasks.Add(clonedUserTask); UserTaskAdapter.Instance.SetUserTasksAccomplished(tasks); UserTaskAdapter.Instance.DeleteUserTasks(tasks); /* * ORMappingItemCollection mapping = ORMapping.GetMappingInfo<UserTask>().Clone(); * mapping.TableName = "WF.USER_ACCOMPLISHED_TASK"; * clonedUserTask.Url = UriHelper.ReplaceUriParams(clonedUserTask.Url, nvs => * { * nvs["isTask"] = "false"; * }); * * mapping.Remove("CATEGORY_GUID"); * mapping.Remove("TOP_FLAG"); * * StringBuilder sqlBuilder = new StringBuilder(); * * sqlBuilder.Append(ORMapping.GetInsertSql(clonedUserTask, mapping, TSqlBuilder.Instance)); * sqlBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); * sqlBuilder.AppendFormat("DELETE FROM WF.USER_TASK WHERE TASK_GUID =N'{0}'", clonedUserTask.TaskID); * * DbHelper.RunSqlWithTransaction(sqlBuilder.ToString()); */ Page.ClientScript.RegisterStartupScript(this.GetType(), "关闭当前窗口", string.Format("top.close();"), true); } catch (Exception ex) { WebUtility.ShowClientError(ex.Message, ex.StackTrace, "错误"); } }
private static UserTaskCollection CreateUserTasksFromTemplate(UserTaskCollection originalTasks, IEnumerable <IUser> targetUsers) { UserTaskCollection result = new UserTaskCollection(); foreach (UserTask task in originalTasks) { foreach (IUser user in targetUsers) { UserTask newTask = task.Clone(); newTask.TaskID = UuidHelper.NewUuidString(); newTask.SendToUserID = user.ID; newTask.SendToUserName = user.DisplayName; newTask.TaskStartTime = SNTPClient.AdjustedTime; UserTaskActionBase.AddTaskContextParameters(newTask); result.Add(newTask); } } return(result); }
internal static UserTaskCollection BuildUserTasksFromActivity(IWfActivity activity, IEnumerable <IUser> users, TaskStatus status) { UserTaskCollection tasks = new UserTaskCollection(); foreach (IUser user in users) { UserTask task = BuildOneUserTaskFromActivity(activity, status); task.SendToUserID = user.ID; task.SendToUserName = user.DisplayName; task.Emergency = WfRuntime.ProcessContext.Emergency; task.Purpose = WfRuntime.ProcessContext.Purpose; task.Context["OperationType"] = WfRuntime.ProcessContext.OperationType; string opName = WfRuntime.ProcessContext.OperationType.ToDescription(); switch (WfRuntime.ProcessContext.OperationType) { case WfControlOperationType.MoveTo: case WfControlOperationType.ObligeEnd: case WfControlOperationType.Return: case WfControlOperationType.AddApprover: case WfControlOperationType.ChangeApprover: case WfControlOperationType.Circulate: case WfControlOperationType.Consign: opName = WfRuntime.ProcessContext.CurrentProcess.ApplicationRuntimeParameters.GetValue("CurrentTransitionName", opName); break; } task.Context["OperationName"] = opName; tasks.Add(task); } return(tasks); }
internal static UserTaskCollection BuildUserTasksFromActivity(IWfActivity activity, IEnumerable<IUser> users, TaskStatus status) { UserTaskCollection tasks = new UserTaskCollection(); foreach (IUser user in users) { UserTask task = BuildOneUserTaskFromActivity(activity, status); task.SendToUserID = user.ID; task.SendToUserName = user.DisplayName; task.Emergency = WfRuntime.ProcessContext.Emergency; task.Purpose = WfRuntime.ProcessContext.Purpose; task.Context["OperationType"] = WfRuntime.ProcessContext.OperationType; string opName = WfRuntime.ProcessContext.OperationType.ToDescription(); switch (WfRuntime.ProcessContext.OperationType) { case WfControlOperationType.MoveTo: case WfControlOperationType.ObligeEnd: case WfControlOperationType.Return: case WfControlOperationType.AddApprover: case WfControlOperationType.ChangeApprover: case WfControlOperationType.Circulate: case WfControlOperationType.Consign: opName = WfRuntime.ProcessContext.CurrentProcess.ApplicationRuntimeParameters.GetValue("CurrentTransitionName", opName); break; } task.Context["OperationName"] = opName; tasks.Add(task); } return tasks; }
private static UserTaskCollection CreateUserTasksFromTemplate(UserTaskCollection originalTasks, IEnumerable<IUser> targetUsers) { UserTaskCollection result = new UserTaskCollection(); foreach (UserTask task in originalTasks) { foreach (IUser user in targetUsers) { UserTask newTask = task.Clone(); newTask.TaskID = UuidHelper.NewUuidString(); newTask.SendToUserID = user.ID; newTask.SendToUserName = user.DisplayName; newTask.TaskStartTime = DateTime.Now; result.Add(newTask); } } return result; }
/// <summary> /// 给管里员批量发送待办 /// </summary> /// <param name="allUsers"></param> /// <param name="itemUserTask"></param> public static void SendUserTask(IEnumerable<IUser> allUsers, UserTask itemUserTask, string notificationID) { UserTaskCollection senuserTasks = new UserTaskCollection(); foreach (IUser user in allUsers) { UserTask item = itemUserTask.Clone(); item.TaskID = UuidHelper.NewUuidString(); item.ProcessID = item.TaskID; item.ResourceID = item.TaskID; item.Url = string.Format(item.Url, notificationID, item.TaskID); item.SendToUserID = user.ID; item.SendToUserName = user.Name; senuserTasks.Add(item); } UserTaskAdapter.Instance.SendUserTasks(senuserTasks); }
private static UserTaskCollection FilterCurrentUserTasks(UserTaskCollection sourceTasks) { UserTaskCollection result = new UserTaskCollection(); foreach (UserTask task in sourceTasks) { if (string.Compare(task.SourceID, DeluxeIdentity.CurrentUser.ID, true) == 0) { result.Add(task); } } return result; }
protected void Submitbtn_Click(object sender, EventArgs e) { try { UserTask clonedUserTask = UserTaskAdapter.Instance.LoadSingleUserTaskByID(this.UserTaskID); UserTaskCollection tasks= new UserTaskCollection(); tasks.Add(clonedUserTask); UserTaskAdapter.Instance.SetUserTasksAccomplished(tasks); UserTaskAdapter.Instance.DeleteUserTasks(tasks); /* ORMappingItemCollection mapping = ORMapping.GetMappingInfo<UserTask>().Clone(); mapping.TableName = "WF.USER_ACCOMPLISHED_TASK"; clonedUserTask.Url = UriHelper.ReplaceUriParams(clonedUserTask.Url, nvs => { nvs["isTask"] = "false"; }); mapping.Remove("CATEGORY_GUID"); mapping.Remove("TOP_FLAG"); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.Append(ORMapping.GetInsertSql(clonedUserTask, mapping, TSqlBuilder.Instance)); sqlBuilder.Append(TSqlBuilder.Instance.DBStatementSeperator); sqlBuilder.AppendFormat("DELETE FROM WF.USER_TASK WHERE TASK_GUID =N'{0}'", clonedUserTask.TaskID); DbHelper.RunSqlWithTransaction(sqlBuilder.ToString()); */ Page.ClientScript.RegisterStartupScript(this.GetType(), "关闭当前窗口", string.Format("top.close();"), true); } catch (Exception ex) { WebUtility.ShowClientError(ex.Message, ex.StackTrace, "错误"); } }
public UserTaskCollection LoadUserTasks(Action<WhereSqlClauseBuilder> action) { action.NullCheck("action"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); action(builder); string sql = string.Format("SELECT * FROM WF.USER_TASK WHERE {0}", builder.ToSqlString(TSqlBuilder.Instance)); UserTaskCollection result = new UserTaskCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { UserTask task = new UserTask(); ORMapping.DataRowToObject(row, task); result.Add(task); } return result; }
public UserTaskCollection GetUserAccomplishedTasks(UserTaskIDType idType, UserTaskFieldDefine returnFields, bool nolock, params string[] ids) { ExceptionHelper.FalseThrow<ArgumentNullException>(ids != null, "ids"); UserTaskCollection utc = new UserTaskCollection(); if (ids.Length > 0) { ORMappingItem keyItem = GetMappingItemFromIDType(idType); InSqlClauseBuilder iBuilder = new InSqlClauseBuilder(); iBuilder.AppendItem(ids); string sql = string.Format("SELECT {0} FROM WF.USER_ACCOMPLISHED_TASK{1} WHERE {2} {3}", GetUserTaskSelectFields(returnFields), nolock ? "(NOLOCK)" : string.Empty, GetMappingItemFromIDType(idType).DataFieldName, iBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { Database db = DatabaseFactory.Create(dbi); using (IDataReader dr = db.ExecuteReader(CommandType.Text, sql)) { while (dr.Read()) { UserTask ut = new UserTask(); ORMapping.DataReaderToObject(dr, ut); utc.Add(ut); } } } } return utc; }
/// <summary> /// 删除当前在上下文中的待办 /// </summary> /// <param name="actionParams"></param> /// <returns></returns> private static UserTaskCollection RemoveTasksInContext(WfActionParams actionParams) { UserTaskCollection result = new UserTaskCollection(); actionParams.Context.MoveToUserTasks.Remove(t => { bool remove = string.Compare(t.ProcessID, actionParams.Context.CurrentProcess.ID, true) == 0; if (remove) result.Add(t); return remove; }); return result; }
internal static UserTaskCollection BuildUserTasksFromActivity(IWfActivity activity, IEnumerable <IUser> users, TaskStatus status) { UserTaskCollection tasks = new UserTaskCollection(); foreach (IUser user in users) { UserTask task = BuildOneUserTaskFromActivity(activity, status); task.SendToUserID = user.ID; task.SendToUserName = user.DisplayName; task.Emergency = WfRuntime.ProcessContext.Emergency; task.Purpose = WfRuntime.ProcessContext.Purpose; AddTaskContextParameters(task); string opName = WfRuntime.ProcessContext.OperationType.ToDescription(); switch (WfRuntime.ProcessContext.OperationType) { case WfControlOperationType.MoveTo: case WfControlOperationType.ObligeEnd: case WfControlOperationType.Return: case WfControlOperationType.AddApprover: case WfControlOperationType.ChangeApprover: case WfControlOperationType.Circulate: case WfControlOperationType.Consign: opName = WfRuntime.ProcessContext.CurrentProcess.ApplicationRuntimeParameters.GetValue("CurrentTransitionName", opName); break; } task.Context["OperationName"] = opName; IWfTransitionDescriptor fromTransition = activity.FromTransitionDescriptor; if (fromTransition != null) { task.Context["IsReturn"] = fromTransition.IsBackward; //退回线标记为批退 if (fromTransition.IsBackward) { task.Context["ApprovalResult"] = false; } else { //线属性决定是否为批退 if (fromTransition.AffectProcessReturnValue) { task.Context["ApprovalResult"] = fromTransition.AffectedProcessReturnValue; } else { task.Context["ApprovalResult"] = true; } } } task.Context["AllowBatchMove"] = activity.Descriptor.Properties.GetValue("AllowBatchMove", false); tasks.Add(task); } return(tasks); }
/// <summary> /// 如果请求是提醒对话框的,则处理该请求,显示提醒对话框的内容 /// </summary> private void DoNotifyDialog() { if (HttpContext.Current.Request.RequestType == "POST") { string taskID = HttpContext.Current.Request.QueryString["taskID"]; string taskSource = WebUtility.GetRequestFormString("taskSource", "userTask"); if (string.IsNullOrEmpty(taskID) == false && GetAutoTransferToCompletedTask()) { UserTask task = new UserTask(); task.TaskID = taskID; UserTaskCollection tasks = new UserTaskCollection(); tasks.Add(task); if (taskSource == "userTask") { UserTaskAdapter.Instance.DeleteUserTasks(tasks); } else { UserTaskAdapter.Instance.DeleteUserAccomplishedTasks(tasks); } } SaveAutoTransferToCompletedTaskFlag(); //WebUtility.ResponseRefreshParentWindowScriptBlock(); HttpContext.Current.Response.Write(ExtScriptHelper.GetRefreshBridgeScript()); WebUtility.ResponseTimeoutScriptBlock("top.close();", ExtScriptHelper.DefaultResponseTimeout); HttpContext.Current.Response.End(); } else { Page page = new Page(); HtmlGenericControl html = new HtmlGenericControl("html"); WebUtility.SetCurrentPage(page); page.Controls.Add(html); HtmlHead head = new HtmlHead(); html.Controls.Add(head); HtmlTitle title = new HtmlTitle(); title.Text = Translator.Translate(Define.DefaultCulture, "提醒消息"); head.Controls.Add(title); HtmlGenericControl body = new HtmlGenericControl("body"); html.Controls.Add(body); WebUtility.AttachPageModules(page); string temmplate = GetNotifyDialogHtml(); string pageHtml = InitNotifyDialogPage(temmplate); body.Controls.Add(new LiteralControl(pageHtml)); ((IHttpHandler)page).ProcessRequest(HttpContext.Current); HttpContext.Current.Response.End(); } }
public UserTaskCollection LoadUserTasks(string tableName, IConnectiveSqlClause builder) { UserTaskCollection result = new UserTaskCollection(); if (builder.IsEmpty == false) { string sql = string.Format("SELECT * FROM {0} WHERE {1}", tableName, builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { UserTask task = new UserTask(); ORMapping.DataRowToObject(row, task); result.Add(task); } } return result; }
/// <summary> /// 根据TaskGuid得到UserAccomplishedTask /// </summary> /// <param name="strTaskGuid"></param> /// <returns></returns> public UserTaskCollection GetUserAccomplishedTasks(params string[] strTaskGuid) { UserTaskCollection utc = new UserTaskCollection(); if (strTaskGuid.Length > 0) { InSqlClauseBuilder builder = new InSqlClauseBuilder(); builder.AppendItem(strTaskGuid); string strSql = "SELECT * FROM WF.USER_ACCOMPLISHED_TASK WHERE (TASK_GUID " + builder.ToSqlStringWithInOperator(TSqlBuilder.Instance) + ")"; using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { Database db = DatabaseFactory.Create(dbi); using (IDataReader dr = db.ExecuteReader(CommandType.Text, strSql)) { while (dr.Read()) { UserTask ut = new UserTask(); ORMapping.DataReaderToObject(dr, ut); utc.Add(ut); } } } } return utc; }