logo

[ELMA3] Создание собственного типа данных для списка получателей оповещений

В данной статье приведен пример создания собственного типа данных для списка получателей оповещений. В системе существует множество типов данных для списка получателей оповещений, о которых Вы можете прочитать в следующей статье. В данном примере показан пример создания типа данных, принимающего группу пользователей, затем выбирает всех пользователей этой группы и добавляет их в список оповещаемых.

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

1
2
3
<RecipientSet>
  <Group>{$New.GruppaPoljzovateley}</Group> <!-- Где New – Ваш объект, а GruppaPoljzovateley – свойство в объекте типа Группа пользователей -->
</RecipientSet>

Методы интерфейса

1
2
3
4
5
6
7
8
9
10
11
/// <summary>
/// Имя типа получателя сообщения (соответствует имени в шаблоне)
/// </summary>
string Name { get; }
 
/// <summary>
/// Получить список получателей (пользователей)
/// </summary>
/// <param name="value">Значение</param>
/// <returns>Список получателей (пользователей)</returns>
IEnumerable<object> GetRecipients(object value);

Пример реализации точки расширения (интерфейса)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[Component]
public class GroupNotificationType : INotificationRecipientTypeHandler
{
    public string Name
    {
        get { return "Group"; }
    }
 
    public IEnumerable<object> GetRecipients(object value)
    {
        if (value == null)
        {
            return new object[0];
        }
 
        var group = value as IUserGroup;
 
        if (group != null)
        {
            var recipients = new List<object>();
            if (group.Users.Count > 0)
            {
                foreach (var user in group.Users)
                {
                    recipients.Add(user);
                }
                return recipients;
            }
        }
        return new object[0];
    }
}
Примечание
Вы можете использовать любой тип объекта при реализации точки расширения, например, справочник, тип задачи, проект, взаимоотношение и так далее. Главное при реализации данной точки расширения – составить список пользователей, которые получат оповещение.

Ссылки на элементы API

INotificationRecipientTypeHandler (для версий 3.13, 3.15, 4.0)