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(); } }
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; }
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); }
public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e) { }