Создание напоминания о завершении задачи в сценарии
Создать напоминание о завершении задачи можно с помощью приведённых ниже сценариев. В результате их выполнения пользователю будет отправлено сообщение с указанием задачи и оставшегося времени до её завершения. Естественно, потребуется знать конкретную задачу, о завершении которой следует напомнить, в приведённых ниже примерах она хранится в контекстной переменной.
Эти сценарии создаются в разделе Сценарии и вставляются в процесс. Сценарий можно отдельно не вызывать. Он переопределит создание всех процессных задач текущего процесса.
Пример сценария, который позволяет создать напоминание для пользователя, указанного в настройках ЗО (с использованием PublicAPI)
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.
Пространства имён:
Текст сценария:
var r = ReferenceOnEntity.Create(context.Zadacha); //создание ссылки на задачу
var rem = PublicAPI.Portal.Objects.Common.Reminder.Create(); //создание напоминания
rem.RefObject = r; //ссылка на задачу, о которой следует напомнить
rem.RemindDate = context.SendTime; //время, в которое следует посылать напоминание
rem.RemindTo = context.Interval; //интервал времени, который остался до завершения задачи и который указывается в напоминании
rem.PropertyName = "StartDate"; //для задачи это может быть строка "StartDate" или "EndDate"
rem.Save(); //сохранение напоминания
Пример сценария, который позволяет создать напоминание для определённого пользователя (без использования PublicAPI)
Для корректной работы сценария нужно подключить сборки:
EleWise.ELMA.Tasks
EleWise.ELMA.Workflow
Пространства имён:
using EleWise.ELMA.Model.Entities.EntityReferences;
using EleWise.ELMA.Common.Models;
using EleWise.ELMA.Tasks.Models;
Текст сценария:
/// <summary>
/// Переопределение метода создания задачи
/// </summary>
/// <param name="task">Задача</param>
/// <param name="context">Контекст процесса</param>
public override void OnTaskCreate(ITaskBase task, Context context)
{
base.OnTaskCreate(task, context); //Исполнение основного сценария
var user = PublicAPI.Portal.Security.User.LoadByLogin("admin"); //Пользователь, которому будет создано напоминание
//Выполнение сценария от имени пользователя определяет, кому будет направлено напоминание. На каждого пользователя необходимо создать своё напоминание
PublicAPI.Services.Security.RunByUser(user, () => {
if (task != null && task.EndDate.HasValue){
ReferenceOnEntity r = ReferenceOnEntity.Create(task); //Создание ссылки на задачу
var reminder = new Reminder(); //Создание напоминания
reminder.RefObject = r; //Ссылка на задачу, о которой следует напомнить
reminder.RemindDate = task.EndDate.Value.AddMinutes(-10); //Время, в которое следует посылать напоминание
reminder.RemindTo = task.EndDate.Value - reminder.RemindDate.Value; //Интервал времени, который остался до завершения задачи
reminder.PropertyName = "EndDate"; //Для задачи принимает значения "StartDate" или "EndDate"
reminder.Save(); //Сохранение напоминания
}
});
}