Ошибки в процессе. Отслеживание с помощью списка экземпляров и уведомлений
Введение
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 чел.