Перейти к содержанию

Статья для устаревшей неподдерживаемой версии ПО!

Текущая рекомендованная версия — Comindware Platform 5.0. См. документацию к версии 5.0.

Настройка периодических напоминаний об открытых задачах

Comindware Business Application Platform поддерживает в базовой конфигурации отправку системных уведомлений (См. Настройка системных уведомлений) пользователю по поставленной задаче или процессного уведомления (См. Настройка отправки уведомлений по эл. почте) с информацией из бизнес-процесса.

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

Для данной настройки создайте 2 бизнес-процесса:

  • Поиск сотрудников для отправки напоминания;
  • Оправка ежедневного напоминания.

Первый процесс будет запускаться по таймеру ежедневно, например, в 7:00 и искать сотрудников, у которых есть открытые задачи в этот момент времени, и по каждому запускать параллельно в цикле подпроцесс «Отправка ежедневного напоминания», который в свою очередь будет формировать и отправлять перечень открытых задач сотрудника на эл. почту в виде таблицы.

 

Настройка процесса «Поиск сотрудников для отправки напоминания»

1. Создайте новый шаблон процесса.

Создание шаблона процесса

Создание шаблона процесса

2. В связанном с процессом шаблоне записи создайте атрибут:

  • Сотрудники (Sotrudniki) — вычисляемый атрибут с типом данных «Пользователь». Вставьте выражение:
 

@prefix cmw: <http://comindware.com/logics#>.

@prefix container: <http://comindware.com/ontology/container#>.

@prefix account: <http://comindware.com/ontology/account#>.

@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.

 

{

           ?class cmw:className "Account".

           ?value a ?class.

           ?value account:active true.

           not {?value cmw:isDisabled true.}.

           or {?tasks cmw:assignee ?value.}

           or {?tasks cmw:possibleAssignee ?value.}.

           ?tasks cmw:taskStatus taskStatus:inProgress.

}

3. Нарисуйте схему процесса по типу:

Типовая схема процесса

Типовая схема процесса

4. Настройте стартовое событие-таймер.

Настройка таймера

Настройка таймера

Примечание : если нужно, предусмотрите также простое стартовое событие для запуска процесса вручную без необходимости ожидания нового рабочего дня.

5. Настройте запуск повторно-используемого подпроцесса.

Данный шаг рекомендуется делать после настройки процесса «Отправка ежедневного напоминания».

Настройка подпроцесса

Настройка подпроцесса

Вставьте следующее выражение:

from a in db-> Poiskisotrudnikovdlyaotpravkinapominaniya where a->id==$id select a->Sotrudniki

 

Настройка процесса «Отправка ежедневного напоминания»

1. Создайте новый шаблон процесса.

Создание шаблона процесса

Создание шаблона процесса

2. В связанном с процессом шаблоне записи создайте атрибуты:

  • Сотрудник (Sotrudnik) — атрибут с типом данных «Пользователь», кому будет отправляться напоминание;
  • Тело письма (body) — вычисляемый атрибут с типом данных «Текст» и форматом отображения «HTML» с таблицей задач. Вставьте следующее выражение:
 

@prefix cmw: <http://comindware.com/logics#>.

@prefix string: <http://www.w3.org/2000/10/swap/string#>.

@prefix cmwstring: <http://comindware.com/logics/string#>.

@prefix object: <http://comindware.com/ontology/object#>.

@prefix configuration: <http://comindware.com/ontology/configuration#>.

@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.

 

{

           ?confid a configuration:Configuration.

           ?confid configuration:baseUri ?baseUri.

           ("Poiskisotrudnikovdlyaotpravkinapominaniya" "Sotrudnik") object:findProperty ?Sotrudnik.

 

           ?item ?Sotrudnik ?SotrudnikVal.

                      

    #First table

    ("<p style='font-size: 100%' >Перечень задач на исполнение</p>" "<table border='1' style='width: 60%; border-collapse: collapse; border: 1px solid black' ><tbody> <tr><td style='padding: 2px; width: 200px; border: 1px solid black'>Задача</td> <td style='width: 200px; padding: 2px; border: 1px solid black'>Срок</td></tr>") string:concatenation ?firstHeaderRow.

 

    from {

                       ?tasks a cmw:UserTask.

                       or {?tasks cmw:assignee ?SotrudnikVal.}

                       or {?tasks cmw:possibleAssignee ?SotrudnikVal.}.

                       ?tasks cmw:taskStatus taskStatus:inProgress.

                       ?tasks cmw:title ?title.

                       ?tasks cmw:id ?id.

        ("{0}" ?title) string:format ?titleVal.

        ("{0}" ?id) string:format ?idVal.

                      

                       or {?tasks cmw:dueDate ?dueDate.}

                       or {"" -> ?dueDate.}.

                      

        ("{0}" ?dueDate) string:format ?dueDateVal.

                      

        ("<tr><td class='A' style='padding: 2px; border: 1px solid black; '><a href='" ?baseUri "#task/" ?idVal "'>" ?titleVal "</a></td><td align='right' style='padding: 2px; border: 1px solid black; text-align: right'>" ?dueDateVal "</td></tr>") string:concatenation ?firstRow.

    } select ?firstRow -> ?firstFactrow.

    (" " ?firstFactrow) cmwstring:join ?firstFact.

    (?firstHeaderRow ?firstFact "</tbody></table> <br/>") string:concatenation ?first.

    ?first  -> ?value.

}

  • Кому (to) — вычисляемый атрибут с типом данных «Текст» с адресом эл. почты сотрудника. Вставьте следующее выражение:
$SotrudnikRef->cmw.account.mbox

3. Нарисуйте схему процесса по типу:

Типовая схема процесса

Типовая схема процесса

4. Настройте параметры отправки напоминания (См. Настройка События-отправка сообщения).

В выбранный шаблон сообщения настройте передачу значений соответствующих атрибутов шаблона записи.

5. Опубликуйте оба процесса и протестируйте.

Перед началом тестирования проверьте работоспособность канала связи (см. Добавление канала для отправки почты) и правильность настройки исходящего пути передачи данных (см. Добавление исходящего пути передачи данных).

Примечание : для корректной работы вычисляемых полей и формулы запуска подпроцесса проверьте точное соответствие системного имени каждого шаблона записи и атрибутов, а также шаблонов процессов.