Ошибки в процессе. Отслеживание с помощью списка экземпляров и уведомлений
Введение
Comindware Platform позволяет моделировать и реализовывать автоматизированные бизнес-процессы с назначением задач исполнителям, выполнением сценариев, отправкой внутренних и внешних сообщений, просмотром журнала действий.
В ходе выполнения процесса могут возникнуть различные ошибки, например в задачах, сценариях, C#-скриптах.
Comindware Platform предлагает различные встроенные механизмы по отслеживанию ошибок, а также даёт возможность настроить свои собственные.
Здесь представлены инструкции по настройке отслеживания ошибок в процессах с помощью следующих инструментов:
- таблицы со списком экземпляров процесса, в которых имеются ошибки;
- атрибута для отслеживания ошибок при выполнении C#-скрипта и отправки уведомлений администратору процесса.
Настройка таблицы для отслеживания ошибок в экземплярах процесса
Чтобы отслеживать экземпляры процесса, в которых произошли ошибки, настройте таблицу со списком экземпляров процесса и фильтром по наличию ошибок.
- Откройте шаблон процесса.
- Перейдите на вкладку «Таблицы».
- Создайте таблицу «Процессы с ошибками».
-
На панели «Свойства таблицы» в поле «Системный фильтр» введите следующее выражение на N3:
# Импортируем функции для работы с процессами@prefix process: <http://comindware.com/ontology/process#>.@prefix cmw: <http://comindware.com/logics#>.{# Собираем все экземпляры процесса?item process:businessObject ?.# Возвращаем экземпляры процесса, в которых есть ошибки?item process:hasTokenError true.} -
Сохраните таблицу.
- Перейдите к списку экземпляров процесса.
- Откройте вкладку с таблицей «Процессы с ошибками».
- Должен отобразиться список процессов, при выполнении которых произошли ошибки.
Отслеживание ошибок в задаче-выполнении сценария с отправкой уведомлений
Для использования C#-скриптов в процессах предусмотрена задача-выполнение сценария. Если при её выполнении произойдёт ошибка, процесс будет остановлен. Чтобы отследить ошибки в C#-скрипте задачи-выполнении сценария, но не останавливать процесс, можно воспользоваться конструкцией try..catch. С помощью этого приёма можно отследить проблемы выполнении C#-скрипта, поместив сообщение об ошибке в текстовый атрибут и вывести уведомление об ошибке в пользовательской задаче.
- Создайте атрибут «Отслеживание ошибок» с системным именем
ErrorMonitoringв шаблоне записи, связанном с процессом. -
Добавьте в диаграмму процесса задачу-выполнение сценария с C#-скриптом по следующему образцу:
using System;using System.Collections.Generic;using System.Linq;using Comindware.Data.Entity;using Comindware.TeamNetwork.Api.Data.UserCommands;using Comindware.TeamNetwork.Api.Data;class Script{public static string Main(Comindware.Process.Api.Data.ScriptContext context, Comindware.Entities entities){// Добавьте входные данные.int Result = 0;try{// Добавьте код, который должен отработать в штатном режиме.// Result = 1 — код успешного выполнения скриптаResult = 1;// ErrorMonitoring — системное имя атрибута «Отслеживание ошибок».// Присваиваем атрибуту «Отслеживание ошибок» значение "Нет ошибок выполнения скрипта".var data = new Dictionary<string, object>('ErrorMonitoring', 'Нет ошибок выполнения скрипта');Api.TeamNetwork.ObjectService.EditWithAlias(context.BusinessObjectId, data);}catch{// Добавьте код, который должен отработать в случае ошибки.// Result = -1 — код ошибки при выполнении скриптаResult = -1;// ErrorMonitoring — системное имя атрибута «Отслеживание ошибок».// Присваиваем атрибуту «Отслеживание ошибок» значение "Ошибка выполнения скрипта".var data = new Dictionary<string, object>('ErrorMonitoring', 'Ошибка выполнения скрипта');Api.TeamNetwork.ObjectService.EditWithAlias(context.BusinessObjectId, data);}// Возвращаем результат выполнения скрипта.// Эта строка отобразится в поле «Выходные данные»// в событии «Скрипт выполнен» в цепочке событий для задачи-выполнения сценария.return string.Format("Результат: {0}", Result);}} -
Создайте на диаграмме процесса пользовательскую задачу «Ошибка выполнения скрипта».
- Поместите на форму задачи «Ошибка выполнения скрипта» атрибут «Отслеживание ошибок».
- После задачи-выполнения сценария добавьте развилку «или/или».
- Соедините развилку «или/или» с задачей «Ошибка выполнения скрипта» и следующим элементом процесса.
-
Настройте исходящие потоки развилки «или/или»:
Поток «иначе» Конечная точка Условие Флажок установлен Пользовательская задача «Ошибка выполнения скрипта» Следующий этап процесса Формула: $ErrorMonitoring == "Нет ошибок выполнения скрипта" -
Настройте остальные действия процесса согласно бизнес-логике.

Тестирование
- Запустите экземпляр процесса.
- Дождитесь завершения выполнения C#-скрипта.
- Если в C#-скрипте произойдут ошибки, на странице «Мои задачи» появится задача «Ошибка выполнения скрипта».
- Откройте задачу «Ошибка выполнения скрипта» и просмотрите сообщение в поле «Отслеживание ошибок».
- В задаче нажмите кнопку и выберите пункт «Перейти к диаграмме процесса».
- Откроется диаграмма экземпляра процесса.
- Откройте журнал изменений и нажмите значок
рядом с названием задачи-выполнения сценария. - Откроется цепочка событий с информацией о ходе выполнения C#-скрипта на панели «Выполнение элемента процесса».
Эта статья была полезна 1 чел.