Пример #1
0
        private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task nextTask)
        {
            var iTask = new WF_InstanceTask();

            iTask.InitializeId();
            iTask.DCreate       = DateTime.Now;
            iTask.Prev_Id       = result.InstanceTask.Id;
            iTask.AppInstanceId = runner.AppInstanceId;
            iTask.Process_Id    = result.Process.Id;
            iTask.Process_Name  = result.Process.Name;
            iTask.Task_Id       = nextTask.Id;
            iTask.Task_Name     = nextTask.Name;
            iTask.Status        = WfTaskStatus.Pending;
            iTask.Audit         = WfAuditState.Pending;
            iTask.Action        = WfActionType.Forward;
            iTask.CreateUser_Id = runner.AC.User.Id;
            iTaskService.Insert(iTask);
        }
Пример #2
0
        private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task backTask)
        {
            var iTask = new WF_InstanceTask();

            iTask.InitializeId();
            iTask.DCreate       = DateTime.Now;
            iTask.Prev_Id       = result.InstanceTask.Id;
            iTask.AppInstanceId = runner.AppInstanceId;
            iTask.Process_Id    = result.Process.Id;
            iTask.Process_Name  = result.Process.Name;
            iTask.Task_Id       = backTask.Id;
            iTask.Task_Name     = backTask.Name;
            iTask.Status        = WfTaskStatus.Dealing;
            iTask.DFetch        = DateTime.Now;
            iTask.Audit         = result.Instance.StartTask_Id == backTask.Id ? WfAuditState.UnSend : WfAuditState.Pending;
            iTask.Action        = WfActionType.Backward;
            iTask.CreateUser_Id = runner.AC.User.Id;
            iTask.User_Id       = result.BackInstanceTask.User_Id;
            iTask.User_Name     = result.BackInstanceTask.User_Name;
            iTaskService.Insert(iTask);
        }
Пример #3
0
        public WfResult Execute(WfRunner runner)
        {
            var result = instanceService.GetInstance(runner);

            if (result.Instance == null)
            {
                // create instance
                var instance = new WF_Instance();
                instance.InitializeId();
                instance.DCreate         = DateTime.Now;
                instance.AppInstanceId   = runner.AppInstanceId;
                instance.CreateUser_Id   = runner.AC.User.Id;
                instance.CreateUser_Name = runner.AC.User.UserName ?? runner.AC.User.NickName;
                instance.Process_Id      = result.Process.Id;
                instance.Process_Name    = result.Process.Name;
                instance.StartTask_Id    = result.Task.Id;
                instance.Status          = WfProcessStatus.Running;
                instanceService.Insert(instance);

                var iTask = new WF_InstanceTask();
                iTask.InitializeId();
                iTask.DCreate       = DateTime.Now;
                iTask.AppInstanceId = runner.AppInstanceId;
                iTask.Process_Id    = result.Process.Id;
                iTask.Process_Name  = result.Process.Name;
                iTask.Task_Id       = result.Task.Id;
                iTask.Task_Name     = result.Task.Name;
                iTask.DFetch        = DateTime.Now;
                iTask.Status        = WfTaskStatus.Dealing;
                iTask.Audit         = WfAuditState.UnSend;
                iTask.Action        = WfActionType.Begin;
                iTask.CreateUser_Id = runner.AC.User.Id;
                iTask.User_Id       = instance.CreateUser_Id;
                iTask.User_Name     = instance.CreateUser_Name;
                iTaskService.Insert(iTask);

                result.Instance     = instance;
                result.InstanceTask = iTask;
            }

            if (runner.LoadPrevInstanceTask && result.InstanceTask.Prev_Id.HasValue)
            {
                result.PrevInstanceTask = iTaskService.Get(result.InstanceTask.Prev_Id.Value);
            }

            if (runner.LoadBackInstanceTask)
            {
                result.BackInstanceTask = GetBackInstanceTask(result);
            }

            if (runner.LoadNextTasks)
            {
                result.NextTasks = GetNextTasks(result);
            }

            if (runner.LoadCanWithdraw)
            {
                if (result.InstanceTask.Status == WfTaskStatus.Processed)
                {
                    result.CanWithdraw = CanWithdraw(runner, result);
                }
                else
                {
                    result.CanWithdraw = false;
                }
            }

            return(result);
        }