Example #1
0
 /// <summary>
 /// بعد از اساين تسك
 /// </summary>
 /// <param name="taskEventArg"></param>
 private void OnAfterAssignTask(AssignTaskEventArgs taskEventArg)
 {
     if (AfterAssignTask != null)
     {
         AfterAssignTask(this, taskEventArg);
     }
 }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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;
            }
        }