Поддерживаемые типы данных и действия с выражениями в Workflow Manager 1.0

 

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

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

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

    • Действия с DateTime

    • Действия с TimeSpan

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

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

  • Действия с GUID

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

    • ICollection

    • IDictionary

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

  • Действия с URI

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

Следующие действия поддерживают работу со строками.

Действия

Описание

Аргументы

CompareString

Сравнивает две строки аналогично IComparable.Поддерживает регулярные выражения и может не учитывать регистр.

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения)

InArgument<string> Left

InArgument<string> Right

InArgument<bool> IgnoreCase

OutArgument<int> Result

ConcatString

Соединяет набор строк.

Все входные данные должны относиться к строковым, а не объектным типам.

Collection<InArgument<string> Inputs

OutArgument<bool> Result

ContainsString

Возвращает true, если строка входит в другую строку.

При этом всегда учитывается регистр символов.

InArgument<string> Input

InArgument<string> SearchValue

OutArgument<bool> Result

EndsWithString

Возвращает true, если строка заканчивается другой строкой.Поддерживается проверка без учета регистра.

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения)

InArgument<string> Left

InArgument<string> Right

InArgument<bool> IgnoreCase

OutArgument<bool> Result

FormatString

Форматирует строку согласно набору аргументов.Аргументы могут относиться к любому типу (так как коллекция аргументов имеет тип InArgument).

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения)

Настраиваемые IFormatProvider не поддерживаются.

InArgument<string> Format

Collection<InArgument> Arguments

IndexOfString

Возвращает индекс вхождения строки в другую строку.

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения)

Флаг IgnoreCase для отмены учета регистра не поддерживается.

InArgument<string> Input

InArgument<string> SearchValue

InArgument<int> StartIndex

InArgument<int> Count

OutArgument<int> Index

IsEmptyString

Возвращает true, если строка пуста или содержит только пробелы.

InArgument<string> Input

InArgument<bool> CheckForWhiteSpace

OutArgument<bool> Result

IsEqualString

Возвращает true, если строки равны.Также поддерживает сравнение по регулярным выражениям и позволяет не учитывать регистр.

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения)

InArgument<string> Input

InArgument<string> Pattern

InArgument<string> Text

InArgument<bool> IgnoreCase

OutArgument<bool> Result

ReplaceString

Заменяет одну строку другой.Поддерживает регулярные выражения.

InArgument<string> Input

InArgument<string> Pattern

InArgument<string> ExistingValue

InArgument<string> Replacement

OutArgument<string> Result

SplitString

Возвращает массив строк, созданный на основе переданной строки.

InArgument<string> Input

InArgument<string> Separator

InArgument<StringSplitOptions> StringSplitOptions

OutArgument<string[]> Result

StartsWithString

Возвращает true, если строка начинается с другой строки.Поддерживается проверка без учета регистра.

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения).

InArgument<string> Left

InArgument<string> Right

bool IgnoreCase

OutArgument<bool> Result

StringLength

Возвращает длину строки.

InArgument<string> Input

OutArgument<int> Result

Substring

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

InArgument<string> Input

InArgument<int> StartIndex

InArgument<int> Length

OutArgument<string> Result

ToLowerCase

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

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения).

InArgument<string> Input

OutArgument<string> Result

ToString

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

Не поддерживает передачу IFormatProvider (можно использовать только имя языка и региональных параметров).

InArgument Object

InArgument<string> Format

InArgument<string> CultureName

OutArgument<string> Result

ToUpperCase

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

Не поддерживает явную передачу языка и региональных параметров (все сравнения используют инвариантные значения).

InArgument<string> Input

OutArgument<string> Result

Trim

Укорачивает строку.

Не поддерживает передачу набора удаляемых символов.

InArgument<string> Input

OutArgument<string> Result

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

Следующие действия используются для работы с типами DateTime и TimeSpan.

  • Действия с DateTime

  • Действия с TimeSpan

Действия с DateTime

Действия

Описание

Аргументы

AddToDate

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

InArgument<DateTime> Input

InArgument<int> Days

InArgument<int> Months

InArgument<int> Hours

InArgument<int> Minutes

InArgument<int> Milliseconds

InArgument<TimeSpan> TimeSpan

OutArgument<DateTime> Result

CompareDate

Сравнивает две даты аналогично IComparable.

InArgument<DateTime> Left

InArgument<DateTime> Right

OutArgument<int> Result

ConvertTimeZone

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

InArgument<DateTime> Input

InArgument<DateTime> SourceTimeZone

InArgument<DateTime> DestinationTimeZone

OutArgument<DateTime> Result

CreateDate

Создает новый экземпляр DateTime по переданным компонентам даты.Даты могут задаваться по местному времени или в формате UTC.

Не поддерживает создание даты по числу тактов.

InArgument<int> Day

InArgument<int> Month

InArgument<int> Year

InArgument<int> Hour

InArgument<int> Minute

InArgument<int> Second

InArgument<DateTimeKind> Kind

OutArgument<DateTime> Result

CurrentDate

Возвращает текущую дату с сервера в формате UTC.

OutArgument<Result> DateTime

DateInRange

Возвращает true, если дата находится между двумя другими датами.

InArgument<DateTime> Input

InArgument<DateTime> Start

InArgument<DateTime> End

OutArgument<bool> Result

DelayUntil

Ждет до указанной даты.

InArgument<DateTime> Date

GetDateField

Возвращает поля экземпляра DateTime.

InArgument<DateTime> Input

DateField DateField

OutArgument<int> Result

GetDateFields

Возвращает поле экземпляра DateTime.

InArgument<DateTime> Input

OutArgument<int> Year

OutArgument<int> Month

OutArgument<int> Day

OutArgument<int> Hour

OutArgument<int> Minute

OutArgument<int> Second

GetElapsedDays

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

InArgument<DateTime> Start

InArgument<DateTime> End

InArgument<bool> ExcludeWeekends

InArgument<IEnumerable<DateTime>> ExcludedDates

OutArgument<int> Result

GetElapsedTime

Возвращает время между двумя датами.

InArgument<DateTime> Start

InArgument<DateTime> End

OutArgument<TimeSpan> Result

SubtractFromDate

Вычитает временной период из даты.Пользователь может передать фрагмент даты (например, часы или дни) либо TimeSpan.

InArgument<DateTime> Input

InArgument<int> Days

InArgument<int> Hours

InArgument<int> Minutes

InArgument<int> Seconds

InArgument<TimeSpan> TimeSpan

OutArgument<DateTime> Result

ParseDate

Анализирует строку как DateTime.Поддерживает передачу CultureName (язык и региональные параметры создаются внутри действия) и DateTimeStyle.

InArgument<string> Value

InArgument<DateTimeStyles> DateTimeStyles

InArgument<string> CultureName

Действия с TimeSpan

Действия

Описание

Подпись

CreateTimeSpan

Создает экземпляр класса TimeSpan.

InArgument<int> Days

InArgument<int> Minutes

InArgument<int> Hours

InArgument<int> Seconds

OutArgument<TimeSpan> Result

Delay

Ждет в течение указанного TimeSpan.

InArgument<TimeSpan> Duration

GetTimeSpanFields

Возвращает разные поля TimeSpan.

InArgument<TimeSpan> Input

OutArgument<int> Days

OutArgument<int> Hours

OutArgument<int> Minutes

OutArgument<int> Seconds

OutArgument<int> TotalDays

OutArgument<int> TotalHours

OutArgument<int> TotalMinutes

OutArgument<int> TotalSeconds

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

Следующие действия поддерживают работу с типами данных Int32 и Double.

Действия

Описание

Аргументы

Add<T>

Складывает два числа.

InArgument<T> Left

InArgument<T> Right

OutArgument<T> Result

Divide<T>

Делит одно число на другое.

InArgument<T> Left

InArgument<T> Right

OutArgument<T> Result

IsEqualNumber<T>

Возвращает true, если числа равны.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

IsGreaterThan<T>

Возвращает true, если одно число больше другого.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

IsGreaterThanOrEqual<T>

Возвращает true, если одно число больше другого или равно ему.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

IsLessThan<T>

Возвращает true, если одно число меньше другого.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

IsLessThanOrEqual<T>

Возвращает true, если одно число меньше другого или равно ему.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

Mod<T>

Остаток от деления.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

Multiply<T>

Умножает два числа.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

ParseNumber<T>

Анализирует число.

InArgument<string> Value

InArgument<string> CultureName

InArgument<NumberStyles> NumberStyles

OutArgument<bool> Result

Subtract<T>

Вычитает одно число из другого.

InArgument<T> Left

InArgument<T> Right

OutArgument<bool> Result

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

Следующие действия поддерживают работу с логическими значениями.

Действия

Описание

Аргументы

и

Логическое "и".

InArgument<bool> Left

InArgument<bool> Right

InArgument<bool> Result

IsEqualBoolean

Логическое сравнение двух значений на равенство.

InArgument<bool> Left

InArgument<bool> Right

InArgument<bool> Result

IsFalse

Возвращает true, если значение ложно.

InArgument<bool> Input

InArgument<bool> Result

IsTrue

Возвращает true, если значение истинно.

InArgument<bool> Input

InArgument<bool> Result

Не

Отрицание.

InArgument<bool> Input

InArgument<bool> Result

— или —

Логическое "или".

InArgument<bool> Left

InArgument<bool> Right

InArgument<bool> Result

ParseBoolean

Анализирует логическое значение.

InArgument<string> Input

InArgument<bool> Result

Действия с GUID

Следующие действия поддерживают работу с GUID.

Действия

Описание

Аргументы

IsEmptyGuid

Возвращает true, если GUID пуст.

InArgument<Guid> Value

OutArgument<bool> Result

IsEqualGuid

Возвращает true, если GUID равны.

InArgument<Guid> Left

InArgument<Guid> Right

OutArgument<bool> Result

NewGuid

Создает и возвращает новый GUID.

OutArgument<Guid> Result

ParseGuid

Анализирует строку как GUID

InArgument<string> Value

OutArgument<Guid> Result

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

Следующие действия поддерживают работу с коллекциями.Действия с ICollection полезны для работы с коллекциями элементов, поддерживающих индексацию, а действия с IDictionary полезны для работы с коллекциями из пар "ключ-значение".

  • ICollection

  • IDictionary

ICollection

Действия

Описание

Аргументы

AddToCollection<T>

Добавляет элемент в коллекцию (из System.Activities).

InArgument<ICollection<T>> Collection

InArgument<T> Item

RemoveFromCollection<T>

Удаляет элемент из коллекции (из System.Activities).

InArgument<ICollection<T>> Collection

InArgument<T> Item

OutArgument<bool> Result

ExistsInCollection<T>

Возвращает true, если элемент есть в коллекции (из System.Activities).

InArgument<ICollection<T>> Collection

InArgument<T> Item

OutArgument<bool> Result

ClearCollection<T>

Очищает коллекцию (из System.Activities).

InArgument<ICollection<T>> Collection

BuildCollection<T>

Создает и инициализирует коллекцию.

InArgument<IEnumerable<T>> Collection

ICollection<InArgument<T>> ValuesOutArgument<Collection<T>> Result

CountCollection<T>

Считает элементы в коллекции.

InArgument<ICollection<T>> Collection

OutArgument<int> Result

GetItemFromCollection<T>

Получает элемент из коллекции.

InArgument<ICollection<T>> Collection

InArgument<int> Index

OutArgument<T> Result

IDictionary

Действия

Описание

Аргументы

AddToDictionary<K,V>

Добавляет элемент в коллекцию (из System.Activities).

InArgument<IDictionary<K,V>> Dictionary

InArgument<K> Key

InArgument<V> Value

RemoveFromDictionary<T>

Удаляет элемент из словаря (из System.Activities).

InArgument<IDictionary<K,V>> Dictionary

InArgument<K> Key

DictionaryContains<K,V>

Возвращает true, если элемент есть в словаре (из System.Activities).

InArgument<IDictionary<K,V>> Dictionary

InArgument<K> Key

InArgument<V> Value

OutArgument<bool> Result

ClearDictionary<K,V>

Очищает коллекцию (из System.Activities).

InArgument<IDictionary<K,V>> Dictionary

BuildDictionary<K,V>

Создает и инициализирует коллекцию.

InArgument<IDictionary<K,V>> Dictionary

IDictionary<TKey, InArgument<TValue>> Values

OutArgument<IDictionary<K,V>> Result

CountDictionary<K,V>

Считает элементы в коллекции.

InArgument<IDictionary<K,V>> Dictionary

OutArgument<int> Result

SplitKeyValuePair<K,V>

Делит KeyValuePair на ключ и значение.

InArgument<KeyValuePair<K,V>> Dictionary

OutArgument<K> Key

OutArgument<V> Value

GetDictionaryValue<K,V>

Получает значение из словаря.

InArgument<IDictionary<K,V>> Dictionary

InArgument<K> Key

OutArgument<V> Result

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

Следующие действия поддерживают обработку исключений.

Действия

Описание

Аргументы

TryCatch

Обработка исключений в рабочих процессах.

Это действие из WF4.

Throw

Порождает исключение.

Это действие из WF4.

InArgument<Exception> Exception

Rethrow

Повторно порождает исключение (аналог throw без аргументов в C#).

Это действие из WF4.

CreateException<T>

Создает экземпляр исключения.

InArgument<string> Message

InArgument<Exception> InnerException

Действия с URI

Тип данных Uri поддерживается надежным списком и может использоваться в других действиях, принимающих Uri как параметр.Его можно создать с помощью действия New<Uri> или CreateUriFromDynamicValue.