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

Ошибки в процессе. Отслеживание с помощью списка экземпляров и уведомлений

Введение

Comindware Platform позволяет моделировать и реализовывать исполняемые бизнес-процессы с назначением задач исполнителям, выполнением сценариев, отправкой внутренних и внешних сообщений, просмотром журнала действий.

В ходе выполнения процесса могут возникнуть различные ошибки, например в задачах, сценариях, C#-скриптах.

Comindware Platform предлагает различные встроенные механизмы по отслеживанию ошибок, а также даёт возможность настроить свои собственные.

Здесь представлены инструкции по настройке отслеживания ошибок в процессах с помощью следующих инструментов:

  • таблицы со списком экземпляров процесса, в которых имеются ошибки;
  • атрибута для отслеживания ошибок при выполнении C#-скрипта и отправки уведомлений администратору процесса.

Настройка таблицы для отслеживания ошибок в экземплярах процесса

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

  1. Откройте шаблон процесса.
  2. Перейдите на вкладку «Таблицы».
  3. Создайте таблицу «Процессы с ошибками».
  4. На панели «Свойства таблицы» в поле «Системный фильтр» введите следующее выражение на N3:

    # Импортируем функции для работы с процессами
    @prefix process: <http://comindware.com/ontology/process#>.
    @prefix cmw: <http://comindware.com/logics#>.
    {
    # Собираем все экземпляры процесса
    ?item process:businessObject ?.
    # Возвращаем экземпляры процесса, в которых есть ошибки
    ?item process:hasTokenError true.
    }
  5. Сохраните таблицу.

  6. Перейдите к списку экземпляров процесса.
  7. Откройте вкладку с таблицей «Процессы с ошибками».
  8. Должен отобразиться список процессов, при выполнении которых произошли ошибки.

Отслеживание ошибок в задаче-выполнении сценария с отправкой уведомлений

Для использования C#-скриптов в процессах предусмотрена задача-выполнение сценария. Если при её выполнении произойдёт ошибка, процесс будет остановлен. Чтобы отследить ошибки в C#-скрипте задачи-выполнении сценария, но не останавливать процесс, можно воспользоваться конструкцией try..catch. С помощью этого приёма можно отследить проблемы выполнении C#-скрипта, поместив сообщение об ошибке в текстовый атрибут и вывести уведомление об ошибке в пользовательской задаче.

  1. Создайте атрибут «Отслеживание ошибок» с системным именем ErrorMonitoring в шаблоне записи, связанном с процессом.
  2. Добавьте в диаграмму процесса задачу-выполнение сценария с 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);
    }
    }
  3. Создайте на диаграмме процесса пользовательскую задачу «Ошибка выполнения скрипта».

  4. Поместите на форму задачи «Ошибка выполнения скрипта» атрибут «Отслеживание ошибок».
  5. После задачи-выполнения сценария добавьте развилку «или/или».
  6. Соедините развилку «или/или» с задачей «Ошибка выполнения скрипта» и следующим элементом процесса.
  7. Настройте исходящие потоки развилки «или/или»:

    Поток «иначе» Конечная точка Условие
    Флажок установлен Пользовательская задача «Ошибка выполнения скрипта»  
      Следующий этап процесса Формула:
    $ErrorMonitoring == "Нет ошибок выполнения скрипта"

     

  8. Настройте остальные действия процесса согласно бизнес-логике.

Диаграмма процесса с использованием задачи «Ошибка выполнения скрипта»

Диаграмма процесса с использованием задачи «Ошибка выполнения скрипта»

Тестирование

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