SDK для серверных модулей расширения

Требования

Для создания серверных модулей расширения к Pilot-Server требуется один из следующих выпусков Visual Studio

Создание и настройка проекта расширения

Чтобы создать новое расширение для Pilot-Server выполните следующие действия:

Подключение SDK к проекту расширения

Для подключения SDK Pilot к проекту расширения можно воспользоваться встроенным в Visual Studio механизмом распространения пакетов - NuGet Packages Manager.
Для того, чтобы подключить SDK с помощью Nuget Package Manager выполните следующие шаги:

Содержание

Система расширений

Система расширений

Система расширений основана на стандартном механизме расширений приложений в .NET - Managed Extensibility Framework (MEF). SDK содержит ряд экспортируемых и импортируемых интерфейсов. К экспортируемым интерфейсам относятся интерфейсы, которые описывают тип расширения. К импортируемым интерфейсам относятся интерфейсы взаимодействия с клиентом и работы с данными.

Интерфейс IServerActivity

Данный интерфейс позволяет добавить новое действие, доступное в серверных скриптах автоматизаций.

string IServerActivity.Name { get; };

Имя действия, используемое в скрипте автоматизации.

Task IServerActivity.RunAsync(IModifierBase modifier, IModifierBackend backend, IServerActivityContext serverActivityContext, IAutomationEventContext automationEventContext);

Асинхронный метод обработки запуска действия.
где:

Пример IServerActivity:

[Export(typeof(IServerActivity))]
public class SetLastWriteTimeActivity : IServerActivity
{
    public string Name => "SetLastWriteTime";

    public Task RunAsync(IModifierBase modifier, IModifierBackend backend, IServerActivityContext serverActivityContext, IAutomationEventContext automationEventContext)
    {
        modifier.EditObject(automationEventContext.Source).SetAttribute("LastWriteTime", DateTime.UtcNow);
        return Task.CompletedTask;
    }
}

Интерфейс IServerActivityContext

Контекст запуска действия, позволяющий получить параметры запуска действия.

Dictionary<string, object> IServerActivityContext.Params { get; }

Словарь параметров запуска действия, заданных в json скрипта автоматизации.

List<string> IServerActivityContext.SourceTypes { get; }

Список типов, заданных в json скрипта автоматизации, для которых должно выполняться действие.

TargetType? IServerActivityContext.Target { get; }

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

RelationType? IServerActivityContext.RelationType { get; }

Определяет, к каким типам связанных объектов должно применяться действие (применимо только в случае IServerActivityContext.Target==TargetType.Relations).

RelationFilterByChangeKind? IServerActivityContext.RelationFilterByChangeKind { get; } { get; }

Определяет, должно ли применяться действие ко всем связанным объектам, или же только к добавленным или удаленным.

Dictionary<string, string> IServerActivityContext.Errors { get; }

Список ошибок при разборе json действия.

Интерфейс IAutomationEventContext

Контекст события-триггера действия.

INObject IAutomationEventContext.Source { get; }

Объект-источник события.

IEnumerable<INChange> IAutomationEventContext.Changes { get; }

Набор изменений, в результате которого сработал триггер. Включает в себя изменение по объекту-источнику события, если он был изменен.

INPerson IAutomationEventContext.InitiatingPerson { get; }

Пользователь-инициатор события.

DateTime IAutomationEventContext.EventDate { get; }

Время наступления события в формате UTC.