Beispiel #1
0
        public TaskActionResultDto SendFirst(TaskSendDto input)
        {
            TaskActionResultDto actionResult = new TaskActionResultDto();
            var task = _repository.FirstOrDefault(x => x.TenantId == AbpSession.TenantId && x.InstanceCode == input.InstanceCode);

            if (task == null)
            {
                throw new Abp.UI.UserFriendlyException("TaskInstanceIsNotExists.");
            }
            var originator = task.Originator;
            var phases     = _repoPhase.GetAllList(x => x.TenantId == AbpSession.TenantId && x.TaskCode == task.TaskCode).OrderBy(x => x.PhaseCode).ToList();
            var nextPhase  = phases.FirstOrDefault(x => int.Parse(x.PhaseCode) > int.Parse(task.CurrentPhaseCode));

            //查询原记录插入到执行记录
            _repoExecute.Insert(new TaskExecuteLog
            {
                InstanceCode = task.InstanceCode,
                PhaseCode    = task.CurrentPhaseCode,
                Actor        = originator,
                HandleResult = "0",
                Memo         = input.Memo,
                TenantId     = AbpSession.TenantId,
                CreationTime = Abp.Timing.Clock.Now,
                Creator      = originator
            });
            //更新新路由控制
            task.CurrentActors           = input.NextActors;
            task.CurrentPhaseCode        = nextPhase.PhaseCode;
            task.LastPhaseHandleTime     = Abp.Timing.Clock.Now;
            task.NeedToCallMiddleService = nextPhase.NeedToCallMiddleService;
            //如果有StartService的返回调用端继续执行
            actionResult.FollowedServiceConfig = task.StartService;
            //发出通知
            //to do
            actionResult.ResultCode = 1;
            return(actionResult);
        }
Beispiel #2
0
        public TaskActionResultDto Send(TaskSendDto input)
        {
            TaskActionResultDto actionResult = new TaskActionResultDto();
            var task = _repository.FirstOrDefault(x => x.TenantId == AbpSession.TenantId && x.InstanceCode == input.InstanceCode);

            if (task == null)
            {
                throw new Abp.UI.UserFriendlyException("TaskInstanceIsNotExists.");
            }
            var originator = task.Originator;
            var phases     = _repoPhase.GetAllList(x => x.TenantId == AbpSession.TenantId && x.TaskCode == task.TaskCode).OrderBy(x => x.PhaseCode).ToList();
            var nextPhase  = phases.FirstOrDefault(x => int.Parse(x.PhaseCode) > int.Parse(task.CurrentPhaseCode));
            //查询原记录插入到执行记录
            var handleResult = input.HandleResult;

            if (handleResult == "1" && AbpSession.UserName == originator)
            {
                handleResult = "0";
            }
            _repoExecute.Insert(new TaskExecuteLog
            {
                InstanceCode = task.InstanceCode,
                PhaseCode    = task.CurrentPhaseCode,
                Actor        = AbpSession.UserName,
                HandleResult = handleResult,
                Memo         = input.Memo,
                TenantId     = AbpSession.TenantId,
                CreationTime = Abp.Timing.Clock.Now,
                Creator      = originator
            });
            //更新新路由控制
            task.LastPhaseHandleTime = Abp.Timing.Clock.Now;
            if (input.HandleResult == "1")
            {
                if (nextPhase != null)
                {
                    task.CurrentActors    = input.NextActors;
                    task.CurrentPhaseCode = nextPhase.PhaseCode;
                    task.Status           = "1";//进行中
                    //当前节点需要调用中间服务时
                    if (task.NeedToCallMiddleService == true)
                    {
                        actionResult.FollowedServiceConfig = task.PhaseService;
                    }
                    //更新下一节点是否需要调用中间服务
                    task.NeedToCallMiddleService = nextPhase.NeedToCallMiddleService;
                }
                else
                {
                    task.CurrentActors    = "";
                    task.CurrentPhaseCode = "";
                    task.Status           = "9";//完成
                    //如果有finalservice
                    actionResult.FollowedServiceConfig = task.FinalService;
                }
            }
            else if (input.HandleResult == "2")
            {
                string returnPhase = input.ReturnedActor.Substring(0, 2);
                string returnActor = input.ReturnedActor.Substring(3);
                task.CurrentActors    = returnActor;
                task.CurrentPhaseCode = returnPhase;
                task.Status           = "2";//退回
            }
            else if (input.HandleResult == "3")
            {
                task.CurrentActors    = "";
                task.CurrentPhaseCode = "";
                task.Status           = "6";//终止
                actionResult.FollowedServiceConfig = task.AbortService;
            }

            //发出通知
            //to do
            actionResult.ResultCode = 1;
            return(actionResult);
        }