Меню

РАЗРАБОТКА АКТИВНОСТЕЙ
Активность (Activity) - сущность, описывающее некоторое действие, которое выполняется в шаге (step) скрипта (script). Содержит описание входящих и исходящих параметров.
Подгрузка активностей в рабочий процесс

Активности поставляются в виде DLL. Список всех подгруженных Activity к текущему работающему процессу, содержится в свойстве List статичного класса ActivityManager. При загрузке, происходит считывание файлов с маской "Activities.*.dll" из рабочей папки процесса. Из сборки подгружаются все классы, которые реализуют абстрактный класс Activity.
Разработка

Новый набор активностей разрабатывается в новом проекте. Наименование проекта с набором активностей начинается с "Activities".
Активность реализуется через абстрактный класс BR.Core.Activity. Интерфейс можно найти в dll, которое поставляется вместе с платформой: Core.dll. Его необходимо подключить к проекту активности.
Все свойства активности описываются через специальные атрибуты.
Для корректной реализации активности, требуется реализация метода Execute (int? optionID).
Конкретную реализацию логики активности, необходимо вносить в отдельные вспомогательные классы (или в другие проекты, если понадобиться).
Атрибуты

Атрибуты относятся либо только к классу (Path, CanHasChilds и др.), либо только к свойству (IsRequired, IsOut и др.), либо универсальные (ScreenName, Description и др.). Также имеются их версии для локализации. В такие атрибуты требуется передача типа данных ресурсов проекта и имени ресурса.

Отдельно стоит описать работу с атрибутом Icon. В нем передается URI на картинку, которая содержится в сборке, проекте или в любом месте, на который можно разместить ссылку. Пример реализации атрибута: [Icon("pack://application:,,,/Core;component/BaseActivities/Icons/sleep.png")]
Пример
Небольшой пример активности: на вход будут подаваться два числа, а на выходе будем записывать сумму в переменную.
using BR.Core;
using BR.Core.Attributes;

namespace Activities.Custom
{
    [ScreenName("Сумма чисел")] // Имя активности, отображаемое в списке активностей и в заголовке шага
    [Representation("[FirstNumber] + [SecondNumber] = [Result]")] // Представление шага. Позиции в квадратных скобках заменяются значениями свойств.
    [Path("Custom activities")] // Путь к активности в панели "Активности"
    public class SummNumbers : Activity
    {
        [ScreenName("Число 1")] 
        [Description("Первое слагаемое")]
        [IsRequired]
        public int FirstNumber { get; set; }

        [ScreenName("Число 2")]
        [Description("Второе слагаемое")]
        [IsRequired]
        public int SecondNumber { get; set; }
        
        [ScreenName("Результат")]
        [Description("Результат сложения 2-х чисел")]
        [IsOut]
        public int Result { get; set; }


        public override void Execute(int? optionID)
        {
            Result = FirstNumber + SecondNumber;
        }
    }
}