Использование действий .NET Framework 3.0 WF на платформе .NET Framework 4 с действием «Interop»
Данный раздел относится к версии Windows Workflow Foundation 4.
Действие Interop — это действие .NET Framework 4 (WF 4), служащее оболочкой для действия .NET Framework 3.5 (WF 3.5) в рабочем процессе .NET Framework 4. Действие WF 3 может быть отдельным действием или целым деревом действий. Выполнение (включая отмену и обработку исключений) и сохраняемость действий .NET Framework 3.5 происходят в контексте выполняющегося экземпляра рабочего процесса .NET Framework 4.
Примечание o Visual Basic. |
---|
Действие Interop не отображается в области элементов конструктора рабочих процессов, если параметру Целевая версия .NET Framework в проекте рабочего процесса не присвоено значение .NET Framework 4. |
Условия использования действия WF 3 совместно с действием взаимодействия (Interop)
Для успешного выполнения действия WF 3 в действии Interop необходимо соблюдение следующих условий:
Действие WF 3 должно быть производным от действия System.Workflow.ComponentModel.Activity.
Действие WF должно быть объявлено, как
public
, оно не может бытьabstract
.Действие WF 3 должно иметь открытый конструктор по умолчанию.
Из-за ограничений типов интерфейсов, поддерживаемых действием Interop, HandleExternalEventActivity и CallExternalMethodActivity не могут использоваться непосредственно, но можно использовать производные действия, созданные с помощью инструмента Workflow Communication Activity (WCA.exe). Более подробные сведения см. в разделе Средства Windows Workflow Foundation.
Настройка действия WF 3 внутри действия взаимодействия
Для настройки, отправки и получения данных из действия WF 3 через границы взаимодействия свойства и метаданные действия WF 3 представляются действием Interop. Свойства метаданных действия WF 3 (например, Name) предоставляются посредством коллекции ActivityMetaProperties. Это коллекция пар имя-значение, используемых для определения значений для свойств метаданных действия WF 3. Свойство метаданных — это свойство, поддерживаемое свойством зависимости, для которого установлен флаг Metadata.
Свойства действия WF 3 предоставляются посредством коллекции ActivityProperties. Это набор пар имя-значение, где каждое значение — это объект Argument, используемый для определения аргументов для свойств действия WF 3. Поскольку направление свойства действия WF 3 не может быть выведено, каждое свойство отображается как пара InArgument/OutArgument. В зависимости от способа использования свойства действием может потребоваться предоставить запись InArgument, запись OutArgument или обе эти записи. Ожидаемое имя записи InArgument в коллекции — это имя свойства, определенное в действии WF 3. Ожидаемое имя записи OutArgument в коллекции — это объединение имени свойства и строки Out.
Ограничения использования действия WF 3 в действии взаимодействия
Действия WF 3, предоставленные системой, могут быть непосредственно обернуты в оболочку действия Interop. Для некоторых действий WF 3, например для DelayActivity, это вызвано тем, что существует аналогичное действие WF 4. Для других это вызвано тем, что функциональные возможности действия не поддерживаются. Многие действия WF 3, предоставляемые системой, могут быть использованы в рабочих процессах, обернутых в оболочку действия Interop, со следующими ограничениями:
Действия Send и Receive не могут использоваться в действии Interop.
Действия WebServiceInputActivity, WebServiceOutputActivity и WebServiceFaultActivity не могут использоваться внутри действия Interop.
Действие InvokeWorkflowActivity не может быть использовано внутри действия Interop.
Действие SuspendActivity не может быть использовано внутри действия Interop.
Действия, связанные с компенсацией, не могут использоваться внутри действия Interop.
Существуют некоторые особенности поведения действий WF 3, используемых в действии Interop:
Действия WF 3, содержащиеся в действии Interop, инициализируются при выполнении действия Interop. В WF 4 отсутствует фаза инициализации экземпляра рабочего процесса до его выполнения.
Среда выполнения WF 4 не расставляет контрольные точки состояния экземпляра рабочего процесса при запуске транзакции вне зависимости от того, где начинается транзакция (в действии Interop или за его границами).
Записи отслеживания WF 3 для действий в действии Interop предоставляются участникам отслеживания WF 4 в виде объектов InteropTrackingRecord. Объект InteropTrackingRecord является производным от CustomTrackingRecord.
Пользовательское действие WF 3 может осуществлять доступ к данным, используя очереди рабочего процесса в среде взаимодействия точно таким же образом, что и в среде выполнения рабочего процесса в WF 3. Вносить изменения в пользовательский код действия не требуется. В ведущем приложении данные вносятся в очередь рабочего процесса WF 3 посредством возобновления закладки Bookmark. Имя закладки — это строковая форма имени очереди рабочего процесса IComparable.