Сохранение сценария в виде сборки

Начиная с версии Docsvision 4.5 в функцию "Сценарий" добавлена возможность компиляции кода для получения готовой сборки (DLL), которую можно повторно использовать в бизнес-процессах.

Последовательность получения сборки следующая:
  1. Создайте новый бизнес-процесс или используйте имеющийся.

  2. Добавьте в бизнес-процесс функцию "Сценарий".

    Компиляция скрипта из Docsvision
    Рисунок 1. Компиляция скрипта из Docsvision
  3. В сценарии напишите скрипт, который будет содержать необходимую функциональность и будет соответствовать следующим требованиям:

    1. Должен содержать минимум один публичный (publiс) класс.

    2. Должны присутствовать публичные статические (public static) методы. В рамках одного сценария возможно наличие произвольного числа таких методов — каждый из них будет выступать как отдельная функция в "Универсальной функции".

      Аргументы данного метода, так же как и возвращаемое значение (если предусмотрено) должны иметь тип, реализованный шлюзами Workflow (включая шлюз к базовым типам).

      Ниже приведён пример скрипта, в котором доступен один метод SaveCard, подразумевающий выполнение действий над переданной карточкой card.

      using System;
      using System.Xml;
      using System.ComponentModel; (1)
      
      using DocsVision.Workflow.Gates; (2)
      
      namespace SampleCode
      {
       public class SampleFunc
       {
        public static void SaveCard(DVCard card)
        {
      (3)
        }
       }
      }
      1 Подключение системных библиотек.
      2 Подключение библиотек СУБП.
      3 Выполнение действие с объектом card.
  4. Выполните проверку корректности скрипта (кнопка Компилировать).

  5. Если ошибок при компиляции не обнаружено, нажмите кнопку Создать сборку.

    Система предложит выбрать место для сохранения библиотеки. Нужно учитывать, что итоговая сборка должна быть доступна сервису Workflow. Для этого её достаточно поместить в каталог приложения Workflow (исполняемый файл ExecLogic.exe), либо зарегистрировать в GAC.

  6. Выполните сохранение, нажмите OK.

    Ссылка на сборку будет автоматически добавлена в список сборок Workflow (справочника Системных настроек). Это позволит в дальнейшем использовать данный сценарий в других процессах в виде функции, без необходимости копирования его исходного кода.

Чтобы обратиться к методам полученной сборки:
  1. Создайте новый бизнес-процесс или используйте имеющийся.

  2. Добавьте в процесс функцию "Универсальная функция".

  3. Выберите Тип.

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

  4. Выберите Функцию.

    Для выбора доступны статические публичные методы класса, выбранного ранее.

  5. При необходимости укажите значения Параметров функции.

    Параметры функции соответствую параметрам выбранного метода.

  6. Сохраните настройки нажатием кнопки ОК.

    Созданный скрипт в области "Параметры функции"
    Рисунок 2. Созданный скрипт в области "Параметры функции"

Чтобы реализованные классы и методы имели локализованное название, при отображении в окне параметров "Универсальной функции", пометьте эти сущности специальным атрибутом ResName.

using System;
using System.Xml;
using System.ComponentModel; (1)

using DocsVision.Workflow.Gates; (2)

namespace SampleCode
{
 [ResName("Пример функции")]
 public class SampleFunc
 {
  [ResName("Пример метода функции")]
  public static void SaveCard([ResName("Переменная")] DVCard card)
  {
(3)

  }
 }

 // internal sealed class ResNameAttribute : DescriptionAttribute
}
1 Подключение системных библиотек.
2 Подключение библиотек СУБП.
3 Выполнение действий с объектом card.
Класс ResNameAttribute требуется реализовать самостоятельно по следующему примеру:
[System.AttributeUsage(System.AttributeTargets.All)]
internal sealed class ResNameAttribute : DescriptionAttribute
{
 public ResNameAttribute(string name) : base(name) { }
}

Данный класс может быть включён в сборку с получаемым сценарием, либо вынесен в отдельную библиотеку.

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

Параметры универсальной функции
Рисунок 3. Параметры универсальной функции

Помимо сборок, созданных на базе сценариев, возможно подключение в таком качестве любых произвольных сборок, отвечающих тем же требованиям. Данные библиотеки должны быть самостоятельно зарегистрированы в качестве модуля Workflow. Регистрация осуществляется в категории "Настройки Workflow/Сборки" справочника "Системные настройки" (папка "Конструкторы и справочники") приложения Docsvision Windows-клиент. Сборка должна быть доступна сервису Workflow (см. выше).