Надежная контактная зона Workflow Manager 1.0

 

Опубликовано: Апрель 2016

В Диспетчер рабочих процессов 1.0 для создания рабочих процессов введено понятие надежной контактной зоны.Надежная контактная зона — это набор надежных типов и действий, доступных пользователям для создания рабочих процессов.Авторы рабочих процессов создают их декларативным способом, сочетая эти типы и действия.Набор разрешенных типов ограничен списком с набором типов, разрешенных в системе.Когда белый список включен, определения рабочих процессов при загрузке проверяются на использование исключительно разрешенных типов.В этом разделе приводится обзор создания декларативных рабочих процессов, использующих надежную контактную зону Диспетчер рабочих процессов 1.0.

Создание декларативных рабочих процессов для Диспетчер рабочих процессов 1.0

Рабочие процессы, размещенные в Диспетчер рабочих процессов 1.0, являются полностью декларативными и создаются с помощью надежной контактной зоны, обновления 4.0.3 для Microsoft .NET Framework 4 и Windows Workflow Foundation (WF4).Чтобы создать рабочий процесс для Диспетчер рабочих процессов 1.0, необходимо использовать действия, выражения и переменные из надежной контактной зоны.Используемые действия должны относиться к списку разрешенных действий. Также можно использовать настраиваемые действия XAML, составленные из надежных действий.Выражения Visual Basic нельзя использовать для определения рабочих процессов, размещаемых в Диспетчер рабочих процессов 1.0, но при этом можно использовать действия с выражениями из пространства имен Microsoft.Activities.Expressions.Выражения преобразуются в поддерживаемые действия перед отправкой определения рабочих процессов в Диспетчер рабочих процессов 1.0.Переменные в рабочем процессе могут иметь только типы данных из надежной контактной зоны.

Рабочие процессы можно создавать в конструкторе рабочих процессов Visual Studio, напрямую в XAML в размещенном конструкторе, а также в коде, создав действие с помощью ActivityBuilder, производного от Activity и сериализуемого в XAML.Примеры Диспетчер рабочих процессов 1.0 см. в статье Примеры для Workflow Manager 1.0.

 Надежная контактная зона Диспетчер рабочих процессов 1.0

Надежная контактная зона Диспетчер рабочих процессов 1.0 состоит из типов и действий рабочих процессов .NET Framework (версия 4), а также новых типов, появившихся в Диспетчер рабочих процессов 1.0.Поддерживаются самые разнообразные типы и многие стандартные действия.Поддерживаемые типы описаны в следующей таблице.Для каждого из них есть соответствующий набор действий, позволяющих манипулировать ими.

Тип

Вспомогательные действия

Строка

Действия со строками

Поддержка дат с DateTime и TimeSpan

Действия с датами

Поддержка чисел с Int32 и Double

Действия с числами

Boolean

Действия с логическими значениями

GUID

Действия с GUID

ICollection, включая IList

Действия с коллекциями

IDictionary и KeyValuePair

IDictionary

DynamicValue

Действия с DynamicValue

Исключение

Действия с исключениями

Uri

Действия с URI

System_CAPS_noteПримечание

Кроме действий, поддерживающих выражения и манипуляцию типами-примитивами, в Диспетчер рабочих процессов 1.0 представлены действия для поддержки выражений, обмена сообщениями, безопасности, манипуляции данными и настройки.Дополнительные сведения об этих действиях см. в статье Общие сведения о действиях в Workflow Manager 1.0.Эти действия также входят в надежную контактную зону.

Помимо новых действий, появившихся в Диспетчер рабочих процессов 1.0, с некоторыми исключениями поддерживаются следующие действия WF4 из перечисленных сборок рабочих процессов и соответствующих пространств имен.

  • System.Activities.dll

    • Все действия кроме

      • InvokeMethod

      • InvokeMethod<T>

      • New<T>

      • Cast<T>

      • VisualBasicValue<T>

      • VisualBasicReference<T>

      • LambdaValue<T>

      • LambdaReference<T>

      • TransactionScope

      • Persist

      • Большая часть действий из System.Activities.Expressions не поддерживаются, но у них есть аналоги в сборках Microsoft.Workflow.*.

        Поддерживаются VariableValue<T>, VariableReference<T>, ArgumentValue<T> и ArgumentReference<T>.

System_CAPS_noteПримечание

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

System_CAPS_importantВажно

Обратите внимание, что тот факт, что, например, выражения Visual Basic, не поддерживаются, не значит, что их нельзя использовать в рабочих процессах.Это означает лишь то, что их нельзя использовать в определениях рабочих процессов, размещаемых в Диспетчер рабочих процессов 1.0.Перед отправкой в Диспетчер рабочих процессов 1.0 рабочие процессы преобразовываются.Преобразование — это процесс оценки выражений и преобразования их в поддерживаемые действия из надежной контактной зоны.

В следующей таблице приведены дополнительные сведения о некоторых действиях, недоступных в надежной контактной зоне Диспетчер рабочих процессов 1.0.

Действия

Описание

По какой причине недоступно

InvokeMethod/InvokeMethod<TResult>

Вызывает экземпляр статического открытого метода типа в области.Метод может иметь возвращаемое значение.

Метод может содержать вредоносный или (шире) произвольный код.

New<TResult>

Создает новый экземпляр типа.

Конструктор может содержать вредоносный код.

System_CAPS_noteПримечание

Поддерживается New<Uri>.

Cast<TOperand, TResult>

Преобразует один тип в другой.

Приводит к вызову конструктора результирующего типа.Этот конструктор может содержать вредоносный код.

PropertyValue<TResult>

Вызывает метод чтения свойства.

Метод чтения может содержать вредоносный или (шире) произвольный код.

PropertyReference<TResult>

Вызывает метод записи свойства.

Метод записи может содержать вредоносный или (шире) произвольный код.

VisualBasicValue<TResult>

Оценивает выражение Visual Basic, возвращающее значение.

Может запускать произвольный (возможно, вредоносный) код Visual Basic.

VisualBasicReference<TResult>

Оценивает выражение Visual Basic, возвращающее ссылку на расположение.

Может запускать произвольный (возможно, вредоносный) код Visual Basic.

LambdaValue<TResult>

Оценивает лямбда-выражение, возвращающее значение.

Может запускать произвольный (возможно, вредоносный) код C# или Visual Basic.

LambdaReference<TResult>

Оценивает лямбда-выражение, возвращающее ссылку на расположение.

Может запускать произвольный (возможно, вредоносный) код C# или Visual Basic.