public bool TurnTask(string taskId, WfAppRunner runner)
        {
            TaskManager tim  = new TaskManager(_dataAccessor, _loggerFactory);
            WfTask      task = tim.GetTask(taskId);

            if (task == null)
            {
                throw new FapException("任务不存在");
            }

            Performer turner                 = runner.Turners[0];
            ActivityInstanceManager aim      = new ActivityInstanceManager(_dataAccessor, _loggerFactory);
            WfActivityInstance      activity = aim.GetByFid(task.ActivityInsUid);

            activity.AssignedToUserIds   = activity.AssignedToUserIds.Replace(runner.UserId, turner.UserId);
            activity.AssignedToUserNames = activity.AssignedToUserNames.Replace(runner.UserName, turner.UserName);
            aim.Update(activity);

            task.ExecutorEmpUid  = turner.UserId;
            task.ExecutorEmpName = turner.UserName;
            task.UpdateBy        = runner.UserId;
            task.UpdateName      = runner.UserName;
            task.UpdateDate      = DateTimeUtils.CurrentDateStr;
            tim.Update(task);

            TaskAdviceManager tam = new TaskAdviceManager(_dataAccessor, _applicationContext, _loggerFactory);

            tam.RecordWhenTurnTask(runner.ProcessUid, runner.CurrNodeId, runner.Comment, turner.UserId, turner.UserName);


            return(true);
        }
Exemple #2
0
        /// <summary>
        /// 设置活动实例的定时作业为完成状态
        /// (用于HangFire后台轮询任务)
        /// </summary>
        /// <param name="conn">链接</param>
        /// <param name="activityInstanceID">活动实例ID</param>
        /// <param name="trans">事务</param>
        public void SetActivityJobTimerCompleted(IDbConnection conn, int activityInstanceID, IDbTransaction trans)
        {
            var aim = new ActivityInstanceManager();
            var activityInstance = aim.GetById(conn, activityInstanceID, trans);

            activityInstance.JobTimerStatus          = (short)JobTimerStatusEnum.Completed;
            activityInstance.JobTimerTreatedDateTime = System.DateTime.Now;
            aim.Update(conn, activityInstance, trans);
        }