Сценарий добавления комментариев к задаче

В данной статье рассмотрен способ автоматического добавления комментариев к задачам при помощи сценариев.
Рассмотрим два случая:

  • добавление комментария к произвольной задаче;
  • добавление комментария к задаче текущего бизнес-процесса .

Добавление комментария к произвольной задаче

Пусть ранее была создана задача. В примере показан поиск задач по некоторому параметру (например, по id).

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
var task = PublicAPI.Portal.TaskBase.Task.LoadOrNull(380); // Загружаем задачу по идентификатору
PublicAPI.Portal.TaskBase.Task.AddComment(task, "Комментарий к задаче"); //Добавляем комментарий к задаче

Пример сценария без использования PublicAPI

Пространства имен:

using EleWise.ELMA.Tasks.Managers;

Текст сценария:

var instance = TaskBaseManager.Instance;
var task = instance.LoadOrNull(380); //Загружаем задачу по идентификатору
instance.AddComment(task, "Комментарий к задаче"); //Добавляем комментарий к задаче

Добавление комментария к задаче текущего бизнес-процесса

Рассмотрим добавление комментария на примере следующего бизнес-процесса (см. рисунок ниже). В процессе есть шлюз: по первой ветке выполняется пользовательская задача Задача 2, вторая ветка заканчивается сценарием. Если вторая ветка успела выполниться раньше, чем была выполнена пользовательская задача Задача 2, то сценарий в конце второй ветки добавляет комментарий к задаче Задача 2. Графическая модель данной задачи выглядит следующим образом:

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.

Пространство имен:

using EleWise.ELMA.Tasks.Models;

Текст сценария:

var nz = PublicAPI.Portal.TaskBase.Filter().Subject(context.X)  // поиск задачи по названию(теме)
                                    .Statuses(new List<TaskBaseStatus>
                                    {
                                        PublicAPI.Enums.Tasks.TaskBaseStatus.NewOrder,
                                        PublicAPI.Enums.Tasks.TaskBaseStatus.Read,
                                        PublicAPI.Enums.Tasks.TaskBaseStatus.InProgress
                                    }) //проверка статуса задачи
                                    .Find();
foreach (var task in nz)
{
    PublicAPI.Portal.TaskBase.AddComment(task, context.Txt);
}

Пример сценария без использования PublicAPI

Пространства имен:

using EleWise.ELMA.Tasks.Models;
using EleWise.ELMA.Model.Services;
using EleWise.ELMA.Tasks.Managers;

Текст сценария:

var instance = TaskBaseManager.Instance;
var zdch = InterfaceActivator.Create<TaskBaseFilter>(); //создаем фильтр по задачам
zdch.Subject = "Задача 1"; // поиск задачи по названию(теме)
zdch.Statuses = new List<TaskBaseStatus>
    {
        TaskBaseStatus.NewOrder, 
        TaskBaseStatus.Read, 
        TaskBaseStatus.InProgress
    }; //проверка статуса задачи
foreach (var task in instance.Find(zdch, null))
{
	instance.AddComment(task, "Комментарий к задаче"); //Добавляем комментарий к задаче
}
Параметр subject записан в контекстную переменную «X» После прохождения сценария будет добавлен комментарий к задаче с указанным названием Задача 2. Если в процессе найдено более одной задачи с таким именем, то комментарий будет добавлен ко всем задачам. В комментарии отображается информация, записанная в контекстную переменную (в данном случае Txt).