/// <summary> /// بعد از اساين تسك /// </summary> /// <param name="taskEventArg"></param> private void OnAfterAssignTask(AssignTaskEventArgs taskEventArg) { if (AfterAssignTask != null) { AfterAssignTask(this, taskEventArg); } }
/// <summary> /// قبل از اساين تسك /// </summary> /// <param name="taskEventArg"></param> protected virtual void OnBeforeAssignTask(AssignTaskEventArgs taskEventArg) { if (BeforeAssignTask != null) { BeforeAssignTask(this, taskEventArg); } if (taskEventArg.Cancel == true) { throw new WFUserException(taskEventArg.CancelMessage); } }
/// <summary> /// يك فعاليت را به شخص ديگري انتصاب مي دهد /// </summary> /// <param name="WorkflowHistory">شناسه نمونه فعاليت</param> /// <param name="Description">توضيحات</param> /// <param name="UserName">نام كاربري</param> /// <param name="NewPerformer">نام شخصي كه بايد فعاليت به آن انتصاب يابد</param> /// <param name="ds">ديتاست</param> public void AssignTask(Guid taskInstanceID, string UserName, string NewPerformer, string Description) { try { TaskInstance TaskInstance = wfs.GetTaskInstanceByID(taskInstanceID); if (TaskInstance.TaskInstanceStatusID != 0) { throw new WFUserException("وضعيت اين كار در حال انتظار نيست و بنابراين قابل انتقال نيست."); } TaskAction ta = wfs.TaskGetAssignTaskAction(TaskInstance.TaskID); if (ta == null) { throw new WFUserException("اين كار قابل انتقال نيست."); } TaskInstance prevTask = wfs.GetTaskInstanceByID(TaskInstance.TaskInstanceID); prevTask.UpdateUser = UserName; prevTask.UpdateDate = DateTime.Now; prevTask.CompletedActionID = ta.TaskActionID; prevTask.CompletedActionCode = "Assign"; prevTask.TaskInstanceStatusID = (int)TaskInstanceStatusEnum.Complete; // تمام شده //TaskInstanceService service = (TaskInstanceService)EntityFactory.GetServiceByEntityName("TaskInstance", ""); //service.AssignTask(WorkflowHistory.WorkflowHistoryID, Description, UserName, NewPerformer, ds); TaskInstance ti = new TaskInstance(); ti.TaskInstanceID = Guid.NewGuid(); ti.WorkflowInstanceID = TaskInstance.WorkflowInstanceID; ti.TaskID = TaskInstance.TaskID; ti.TaskCode = TaskInstance.TaskCode; ti.TaskTitle = TaskInstance.TaskTitle; ti.PerformerID = NewPerformer; ti.EntityName = TaskInstance.EntityName; ti.EntityID = TaskInstance.EntityID; ti.EntityTitle = TaskInstance.EntityTitle; ti.EntityUrl = TaskInstance.EntityUrl; ti.EntityDateTime = TaskInstance.EntityDateTime; ti.PreviousTaskInstanceID = TaskInstance.TaskInstanceID; ti.InsertUser = UserName; ti.InsertDate = DateTime.Now; ti.TaskInstanceStatusID = (int)TaskInstanceStatusEnum.Waiting; // در حال انتظار ti.TaskDueDate = TaskInstance.TaskDueDate; ti.PriorityID = TaskInstance.PriorityID; ti.Comment = Description; ti.NotificationStatusID = (int)NotificationStatusEnum.Waiting; ti.ExtraInt = TaskInstance.ExtraInt; ti.ExtraInt2 = TaskInstance.ExtraInt2; ti.ExtraDateTime = TaskInstance.ExtraDateTime; ti.ExtraVarchar = TaskInstance.ExtraVarchar; ti.ExtraDouble = ti.ExtraDouble; AssignTaskEventArgs taskEventArg = new AssignTaskEventArgs() { TaskInstance = TaskInstance, Description = Description, UserName = UserName, NewPerformer = NewPerformer, IsBefore = true }; OnBeforeAssignTask(taskEventArg); wfs.ObjectContext.TaskInstance.AddObject(ti); taskEventArg.IsBefore = true; OnAfterAssignTask(taskEventArg); wfs.ObjectContext.SaveChanges(); } catch (Exception) { throw; } }