コード例 #1
0
        public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e)
        {
            _obj.ExecutionState = ExecutionState.Aborted;

            // Если прекращён черновик, прикладную логику по прекращению выполнять не надо.
            if (_obj.State.Properties.Status.OriginalValue == Workflow.Task.Status.Draft)
            {
                return;
            }

            // Обновить статус исполнения документа - исполнен, статус контроля исполнения - снято с контроля.
            if (_obj.DocumentsGroup.OfficialDocuments.Any())
            {
                Functions.ActionItemExecutionTask.SetDocumentStates(_obj);
            }

            // При программном вызове не выполнять рекурсивную остановку подзадач.
            if (!e.Params.Contains(RecordManagement.Constants.ActionItemExecutionTask.WorkingWithGUI))
            {
                return;
            }

            // Рекурсивно прекратить подзадачи.
            Functions.Module.AbortSubtasksAndSendNotices(_obj);

            // Прекратить задачу на запрос отчёта, если она есть.
            var reportRequestTasks = StatusReportRequestTasks.GetAll(r => Equals(r.ParentTask, _obj) &&
                                                                     r.Status == Workflow.Task.Status.InProcess);

            foreach (var reportRequestTask in reportRequestTasks)
            {
                reportRequestTask.Abort();
            }
        }
コード例 #2
0
        public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e)
        {
            // Если прекращен черновик, прикладную логику по прекращению выполнять не надо.
            if (_obj.State.Properties.Status.OriginalValue == Workflow.Task.Status.Draft)
            {
                return;
            }

            // Обновить статус исполнения - пустой.
            var document = _obj.DocumentForReviewGroup.OfficialDocuments.First();

            document.ExecutionState = null;
        }
コード例 #3
0
        public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e)
        {
            // Если прекращён черновик, прикладную логику по прекращению выполнять не надо.
            if (_obj.State.Properties.Status.OriginalValue == Workflow.Task.Status.Draft)
            {
                return;
            }

            var document = _obj.DocumentGroup.OfficialDocuments.First();

            var subject       = string.Empty;
            var threadSubject = string.Empty;

            // Отправить уведомления о прекращении.
            using (TenantInfo.Culture.SwitchTo())
            {
                threadSubject = ApprovalTasks.Resources.AbortNoticeSubject;
                subject       = string.Format(Sungero.Exchange.Resources.TaskSubjectTemplate, threadSubject, Docflow.PublicFunctions.Module.TrimSpecialSymbols(document.Name));
            }

            var allApprovers = ApprovalAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList();

            allApprovers.AddRange(ApprovalManagerAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList());
            allApprovers.AddRange(ApprovalSigningAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList());
            var author           = _obj.Author;
            var reworkAssignment = Functions.ApprovalTask.GetLastReworkAssignment(_obj);

            if (reworkAssignment != null)
            {
                allApprovers.Add(reworkAssignment.Performer);
                if (!Equals(_obj.Author, reworkAssignment.Performer))
                {
                    allApprovers.Add(_obj.Author);
                    author = reworkAssignment.Performer;
                }
            }
            allApprovers.Remove(Users.Current);
            if (allApprovers.Any())
            {
                Functions.Module.SendNoticesAsSubtask(subject, allApprovers, _obj, _obj.AbortingReason, author, threadSubject);
            }

            // Обновить статус согласования - аннулирован.
            Functions.ApprovalTask.UpdateApprovalState(_obj, OfficialDocument.InternalApprovalState.Aborted);
        }
コード例 #4
0
 public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e)
 {
 }