Меню Рубрики

Windows workflow foundation основы

Общие сведения о Windows Workflow Windows Workflow Overview

Рабочий процесс — это набор элементов, которые называются действиями , которые хранятся в виде модели, описывающей реальный процесс. A workflow is a set of elemental units called activities that are stored as a model that describes a real-world process. Рабочие процессы позволяют описывать порядок выполнения этапов краткосрочных и долгосрочных работ, а также зависимости между этими этапами. Workflows provide a way of describing the order of execution and dependent relationships between pieces of short- or long-running work. Работа проходит по модели от начала и до конца, а действия могут выполняться как людьми, так и системными функциями. This work passes through the model from start to finish, and activities might be executed by people or by system functions.

Среда выполнения рабочих процессов Workflow Run-time Engine

Каждый работающий экземпляр рабочего процесса создается и обслуживается внутрипроцессной подсистемой среды выполнения, с которой ведущий процесс взаимодействует с помощью одного из следующих инструментов: Every running workflow instance is created and maintained by an in-process run-time engine that the host process interacts with through one of the following:

WorkflowInvoker, который вызывает рабочий процесс как метод. A WorkflowInvoker, which invokes the workflow like a method.

WorkflowApplication для явного управления выполнением одного экземпляра рабочего процесса. A WorkflowApplication for explicit control over the execution of a single workflow instance.

WorkflowServiceHost для взаимодействия с помощью сообщений в многоэкземплярных сценариях. A WorkflowServiceHost for message-based interactions in multi-instance scenarios.

Каждый из этих классов является оболочкой для среды выполнения основной операции, представленной как объект ActivityInstance, ответственный за выполнение операции. Each of these classes wraps the core activity runtime represented as a ActivityInstance responsible for activity execution. В домене приложения может быть несколько объектов ActivityInstance, работающих параллельно. There can be several ActivityInstance objects within an application domain running concurrently.

Каждый из трех предыдущих объектов взаимодействия узлов создается из дерева операций, называемого программой рабочего процесса. Each of the preceding three host interaction objects is created from a tree of activities referred to as a workflow program. Используя эти типы или пользовательский узел, который является оболочкой ActivityInstance , рабочие процессы могут выполняться внутри любого процесса Windows, включая консольные приложения, приложения на основе форм, службы Windows, веб-сайты ASP.NET и службы Windows Communication Foundation (WCF). Using these types or a custom host that wraps ActivityInstance, workflows can be executed inside any Windows process including console applications, forms-based applications, Windows Services, ASP.NET Web sites, and Windows Communication Foundation (WCF) services.


Компоненты рабочего процесса в хост-процессе Workflow components in the host process

Взаимодействие между компонентами рабочего процесса Interaction between Workflow Components

На следующей диаграмме показано взаимодействие компонентов рабочего процесса. The following diagram demonstrates how workflow components interact with one another.

На предыдущей диаграмме используется метод Invoke класса WorkflowInvoker для вызова нескольких экземпляров рабочего процесса. In the preceding diagram, the Invoke method of the WorkflowInvoker class is used to invoke several workflow instances. WorkflowInvoker используется для упрощенных рабочих процессов, не требующих управления с сервера. Рабочие же процессы, требующие управления с сервера (например, возобновление Bookmark), должны выполняться с помощью Run. WorkflowInvoker is used for lightweight workflows that do not need management from the host; workflows that need management from the host (such as Bookmark resumption) must be executed using Run instead. Чтобы вызвать экземпляр рабочего процесса, не обязательно ждать завершения другого. Среда выполнения допускает одновременное выполнение нескольких экземпляров рабочего процесса. It isn’t required to wait for one workflow instance to complete before invoking another; the runtime engine supports running multiple workflow instances simultaneously. Вызываются следующие рабочие процессы: The workflows invoked are as follows:

Действие Sequence, содержащее дочернее действие WriteLine. A Sequence activity that contains a WriteLine child activity. Переменная Variable родительского действия привязана к InArgument дочернего действия. A Variable of the parent activity is bound to an InArgument of the child activity. Дополнительные сведения о переменных, аргументах и привязке см. в разделе переменные и аргументы. For more information about on variables, arguments, and binding, see Variables and Arguments.

Настраиваемое действие ReadLine . A custom activity called ReadLine . OutArgument действия ReadLine возвращается в вызывающий метод Invoke. An OutArgument of the ReadLine activity is returned to the calling Invoke method.

Настраиваемое действие, происходящее от абстрактного класса CodeActivity. A custom activity that derives from the CodeActivity abstract class. CodeActivity может обращаться к возможностям среды выполнения (например, к отслеживанию и свойствам) с помощью CodeActivityContext, доступного в качестве параметра метода Execute. The CodeActivity can access run-time features (such as tracking and properties) using the CodeActivityContext that is available as a parameter of the Execute method. Дополнительные сведения об этих функциях времени выполнения см. в разделе Отслеживание рабочего процесса и Свойства выполнения рабочего процесса. For more information about these run-time features, see Workflow Tracking and Tracing and Workflow Execution Properties.

Источник

Особенности возможностей Windows Workflow Foundation Windows Workflow Foundation Feature Specifics

.NET Framework 4 добавляет ряд функций для Windows Workflow Foundation. .NET Framework 4 adds a number of features to Windows Workflow Foundation. В этом документе описываются некоторые новые функциональные возможности и приведены подробные сведения о сценариях, в которых они могут оказаться полезными. This document describes a number of the new features, and gives details about scenarios in which they may be useful.

Действия обмена сообщениями Messaging Activities

Действия обмена сообщениями ( Receive ,, SendReply Send , ReceiveReply ) используются для отправки и получения сообщений WCF из рабочего процесса. The messaging activities (Receive, SendReply, Send, ReceiveReply) are used to send and receive WCF messages from your workflow. ReceiveSendReplyдействия и используются для формирования операции службы Windows Communication Foundation (WCF), которая доступна через WSDL так же, как стандартные веб-службы WCF. Receive and SendReply activities are used to form a Windows Communication Foundation (WCF) service operation that is exposed via WSDL just like standard WCF web services. Send и ReceiveReply используются для использования веб-службы, подобной WCF ChannelFactory ; Кроме того, для Workflow Foundation существует Добавление ссылки на службуный опыт, создающий предварительно настроенные действия. Send and ReceiveReply are used to consume a web service similar to a WCF ChannelFactory; an Add Service Reference experience also exists for Workflow Foundation that generates pre-configured activities.

Приступая к работе с действиями обмена сообщениями Getting Started with Messaging Activities

В Visual Studio 2012 создайте проект приложения службы рабочего процесса WCF. In Visual Studio 2012, create a WCF Workflow Service Application project. На полотне будут расположены Receive и SendReply. A Receive and SendReply pair will be placed on your canvas.

Щелкните проект правой кнопкой мыши и выберите Добавление ссылки на службу. Right-click on the project and select Add Service Reference. Укажите существующий язык WSDL веб-службы и нажмите кнопку ОК. Point to an existing web service WSDL and click OK. Создайте проект, чтобы отобразить созданные действия (реализованные с помощью Send и ReceiveReply ) на панели элементов. Build your project to show the generated activities (implemented using Send and ReceiveReply) in your toolbox.

Пример сценария действий обмена сообщениями Messaging Activities Example Scenario

BestPriceFinder Служба обращается к нескольким службам авиакомпании, чтобы найти лучшую тарифную сумму для конкретного маршрута. A BestPriceFinder service calls out to multiple airline services to find the best ticket price for a particular route. Для реализации этого сценария потребуется использовать действия с сообщениями для получения цены, получения цен из внутренних служб и ответа на запрос цены с максимальной ценой. Implementing this scenario would require you to use the message activities to receive the price request, retrieve the prices from the back-end services, and reply to the price request with the best price. Также потребуется использовать другие готовые действия для создания бизнес-логики для вычисления лучшей цены. It would also require you to use other out-of-box activities to create the business logic for calculating the best price.

WorkflowServiceHost WorkflowServiceHost

WorkflowServiceHostЯвляется готовым узлом рабочего процесса, поддерживающим несколько экземпляров, конфигураций и сообщений WCF (хотя рабочие процессы не требуют использования обмена сообщениями для размещения). The WorkflowServiceHost is the out-of-box workflow host that supports multiple instances, configuration, and WCF messaging (although the workflows aren’t required to use messaging in order to be hosted). Он также реализует сохраняемость, отслеживание и контроль за экземплярами через набор поведений службы. It also integrates with persistence, tracking, and instance control through a set of service behaviors. Как и WCF ServiceHost , объект WorkflowServiceHost может быть размещен в консоли, в приложении WPF или в службе Windows или в веб-среде (как XAMLX-файл) в IIS или WAS. Just like WCF’s ServiceHost, the WorkflowServiceHost can be self-hosted in a console/WinForms/WPF application or Windows service, or web-hosted (as a .xamlx file) in IIS or WAS.

Приступая к работе со службой рабочего процесса Getting Started with Workflow Service Host

В Visual Studio 2010 создайте проект приложения службы рабочего процесса WCF: этот проект будет настроен для использования WorkflowServiceHost в среде веб-узла. In Visual Studio 2010, create a WCF Workflow Service Application project: this project will be set up to use WorkflowServiceHost in a web-host environment.

Чтобы разместить рабочий процесс, не связанный с обменом сообщениями, добавьте пользовательский класс WorkflowHostingEndpoint, который создаст экземпляр на основе сообщения. In order to host a non-messaging workflow, add a custom WorkflowHostingEndpoint that will create the instance based on a message.

Экземплярами рабочих процессов можно управлять (приостанавливать или завершать их работу). Это делается путем добавления WorkflowControlEndpoint в WorkflowServiceHost с последующим вызовом WorkflowControlClient. Workflow instances can be controlled (e.g. suspended or terminated) by adding a WorkflowControlEndpoint to the WorkflowServiceHost and then using a WorkflowControlClient.

Образцы WorkflowServiceHost приведены в следующих разделах: Samples for the WorkflowServiceHost can be found in the following sections:

Сценарий WorkflowServiceHost WorkflowServiceHost Scenario

Служба Бестприцефиндер обращается к нескольким службам авиакомпании, чтобы найти лучшую тарифную сумму для конкретного маршрута. A BestPriceFinder service calls out to multiple airline services to find the best ticket price for a particular route. Для реализации этого сценария потребуется разместить рабочий процесс в WorkflowServiceHost . Implementing this scenario would require you to host the workflow in WorkflowServiceHost. Она также будет использовать действия сообщений для получения ценового запроса, получения цен от внутренних служб и ответа на запрос цены с максимальной ценой. It would also use the message activities to receive the price request, retrieve the prices from the back-end services, and reply to the price request with the best price.

Корреляция Correlation

Корреляцией называют два следующих явления: A correlation is one of two things:

Способ группирования сообщений, т. е. связь между сообщением с запросом и ответом на него. A way of grouping messages together; that is, the relationship between a request message and its reply.

Способ сопоставления порции данных с экземпляром службы. A way of mapping a piece of data to a service instance

Приступая к работе Getting Started

Чтобы начать работу с корреляцией, создайте новый проект в Visual Studio. To get started with correlation, create a new project in Visual Studio. Создайте переменную типа CorrelationHandle. Create a variable of type CorrelationHandle.

Примером корреляции для группирования сообщений является корреляция по схеме «запрос-ответ», группирующая сообщения. An example of correlation used to group messages together is a Request-Reply correlation that groups messages together.

В Receive действии щелкните CorrelationInitializers свойство и добавьте RequestReplyCorrelationInitializer с помощью коррелатионхандле, созданного на первом шаге выше. On a Receive activity, click on the CorrelationInitializers property and add a RequestReplyCorrelationInitializer using the CorrelationHandle created in the first step above.

Создайте SendReply действие, щелкнув правой кнопкой мыши Receive и выбрав команду «Создать SendReply». Create a SendReply activity by right-clicking on the Receive and clicking «Create SendReply». Вставьте его в рабочий процесс после действия Receive. Paste it into your workflow after the Receive activity.

Примером сопоставления порции данных с экземпляром службы является корреляция на основе содержимого, сопоставляющая данные (например, идентификатор заказа) с определенным экземпляром рабочего процесса. An example of mapping a piece of data to a service instance is content-based correlation which maps a piece of data (for example, an order ID) to a particular workflow instance.

  • Для любого действия обмена сообщениями щелкните свойство CorrelationInitializers и добавьте QueryCorrelationInitializer с помощью переменной CorrelationHandle, созданной ранее. On any messaging activity, click on the CorrelationInitializers property and add a QueryCorrelationInitializer using the CorrelationHandle variable created above. Дважды щелкните нужное свойство сообщения (например, OrderID) в раскрывающемся меню. Double-click on the desired property on the message (e.g. OrderID) from the drop-down menu. Установите свойство CorrelatesWith в значение переменной CorrelationHandle, определенной выше. Set the CorrelatesWith property to the CorrelationHandle variable used above.

Сценарий корреляции Correlation Scenario

Рабочий процесс обработки заказов используется для обработки нового создания заказа и обновления существующих заказов, которые находятся в процессе. An order-processing workflow is used to handle new order creation and updating existing orders that are in process. Для реализации этого сценария потребуется разместить рабочий процесс в WorkflowServiceHost и использовать действия обмена сообщениями. Implementing this scenario would require you to host the workflow in WorkflowServiceHost and use the messaging activities. Также требуется корреляция на основе, orderId чтобы гарантировать, что обновления вносятся в нужный рабочий процесс. It would also require correlation based on the orderId to ensure that updates are made to the correct workflow.

Упрощенная конфигурация Simplified Configuration

Схема конфигурации WCF является сложной и предоставляет пользователям много сложностей для поиска функций. The WCF configuration schema is complex and provides users with many hard to find features. В мы настроили .NET Framework 4.6.1 .NET Framework 4.6.1 помощь пользователям WCF по настройке служб с помощью следующих функций: In .NET Framework 4.6.1 .NET Framework 4.6.1 , we have focused on helping WCF users configure their services with the following features:

Устранена необходимость явной настройки каждой службы отдельно. Removing the need for explicit per-service configuration. Если вы не настроили какие-либо элементы для службы, и ваша служба не определяет программно любую конечную точку, в службу будет автоматически добавлен набор конечных точек, по одному для каждого базового адреса службы и по контракту, реализованному службой. If you do not configure any elements for your service, and your service does not define programmatically any endpoint, then a set of endpoints will be automatically added to your service, one per service base address and per contract implemented by your service.

Позволяет пользователю определять для привязок WCF и поведений значения по умолчанию, которые будут применяться к службам без явно заданной конфигурации. Enables the user to define default values for WCF bindings and behaviors, which will be applied to services with no explicit configuration.

Стандартные конечные точки определяют повторно используемые, заранее настроенные конечные точки, имеющие фиксированные значения для одного или нескольких свойств (адрес, привязка и контракт), а также позволяют определить пользовательские свойства. Standard endpoints define reusable preconfigured endpoints, which have fixed values for one or more of the endpoint properties (address, binding and contract), and allow defining custom properties.

Наконец, ConfigurationChannelFactory позволяет централизованно управлять конфигурацией клиента WCF, что полезно в сценариях, в которых конфигурация выбирается или изменяется после времени загрузки домена приложения. Finally, the ConfigurationChannelFactory allows you to do central management of WCF client configuration, useful in scenarios in which configuration is selected or changed after the application domain load time.

Приступая к работе Getting Started

Сценарии упрощенной конфигурации Simplified Configuration Scenarios

Опытный разработчик ASMX хочет начать использовать WCF. An experienced ASMX developer wants to start using WCF. Однако WCF кажется слишком сложным. However, WCF seems way too complicated! Что означает вся информация, которую нужно указать в файле конфигурации? What is all that information that I need to write in a configuration file? В .NET 4 можно вообще не использовать файл конфигурации. In .NET 4, you can even decide to not have a configuration file at all.

Существующий набор служб WCF очень сложно настраивать и обслуживать. An existing set of WCF services are very difficult to configure and maintain. Файл конфигурации содержит тысячи строк XML-кода, которые очень опасно трогать. The configuration file has thousands of lines of XML code that are extremely dangerous to touch. Потребуется помощь, чтобы уменьшить объем кода и сделать его более управляемым. Help is needed to reduce that amount of code to something more manageable.

Арбитр контрактов данных Data Contract Resolver

В .NET 3.5 имелись некоторые ограничения в разработке известных типов. In .NET 3.5, there were a few limitations in the design of known types:

Было невозможно динамически добавлять известные типы во время сериализации и десериализации. Adding known types dynamically, during serialization or deserialization, was not possible.

Сериализаторы не могли работать с неизвестными данными в xsi:type. Serializers could not deal with unknown xsi:type information.

Пользователи не смогли указать xsi:type, который должен появиться в канале, например уменьшить размер экземпляра сериализации в канале. It was not possible for users to specify what xsi:type they would like to have appear on the wire to, for instance, make the size of a serialization instance on the wire smaller.

DataContractResolver решает эти проблемы в .NET 4,5. The DataContractResolver solves these issues in .NET 4.5.

Приступая к работе Getting Started

Сценарии арбитра контрактов данных Data Contract Resolver Scenarios

Как избежать необходимости объявлять десятки объектов KnownTypeAttribute в службе. Avoiding having to declare tens of KnownTypeAttribute objects in a service.

Уменьшение размера большого двоичного объекта XML. Reducing the size of the XML blob.

Блок-схема Flowchart

Блок-схема — это распространенный способ визуального представления проблем домена. Flowchart is a well-known paradigm to visually represent domain problems. Это новый стиль потока управления, представляемый в .NET 4. It is a new control flow style we’re introducing in .NET 4. Основная особенность блок-схемы заключается в том, что в определенное время выполняется только одно действие. A core characteristic of Flowchart is that only one activity is executed at any given time. Блок-схемы могут представлять циклы и альтернативные результаты, но не могут стандартно представлять параллельное выполнение нескольких узлов. Flowcharts can express loops and alternative outcomes, but cannot natively express concurrent execution of multiple nodes.

Приступая к работе Getting Started

В Visual Studio 2012 создайте консольное приложение рабочего процесса. In Visual Studio 2012, create a workflow console application. В конструкторе рабочих процессов добавьте блок-схему. Add a Flowchart in the workflow designer.

В блок-схеме используются следующие классы: The flowchart feature uses the following classes:

Документация по конструктору: Designer Documentation:

Сценарии блок-схем Flowchart Scenarios

Действие блок-схемы можно использовать для реализации игры по угадыванию числа. A flowchart activity can be used to implement a guessing game. Эта игра очень проста: компьютер выбирает случайное число, а игрок должен его угадать. The guessing game is very simple: the computer selects a random number and the player has to guess that number. Когда игрок отправляет каждое предположение, компьютер показывает их подсказку (т. е. «попробуйте меньшее число»). When the player submits each guess, the computer shows them a hint (i.e. «try a lower number»). Если игрок находит число в течение менее 7 попыток, он получает от компьютера Специальный конгратулатион. If the player finds the number in less than 7 attempts, they receive a special congratulation from the computer. Эта игра может быть реализована с помощью сочетания следующих процедурных действий: This game can be implemented with a combination of the following procedural activities:

Процедурные действия (Sequence, If, ForEach, Switch, Assign, DoWhile, While) Procedural activities (Sequence, If, ForEach, Switch, Assign, DoWhile, While)

Процедурные действия предоставляют механизм моделирования последовательного потока управления, используя знакомые программистам концепции. Procedural activities provide a mechanism to model sequential control flow using concepts that are familiar to programmers. Эти действия включают в себя стандартные конструкции языка программирования и, при необходимости, обеспечивают языковую четность с помощью распространенных процедурных языков, таких как C# и Visual Basic. These activities enable traditionally structured programming language constructs and, when appropriate, provide language parity with common procedural languages such as C# and Visual Basic.

Приступая к работе Getting Started

В Visual Studio 2012 создайте консольное приложение рабочего процесса. In Visual Studio 2012, create a workflow console application. Добавьте в конструкторе рабочих процессов процедурные действия. Add procedural activities in the workflow designer.

Документация по конструктору: Designer Documentation:

Сценарии процедурных действий Procedural Activity Scenarios

Parallel: В системе управления документами интрасети есть рабочий процесс утверждения документов. Parallel: An intranet document management system has a document approval workflow. Документы перед публикацией в интрасети должны утверждаться сотрудниками нескольких отделов. Documents need to be approved by people in several departments before they can be published to the intranet. Не установлен порядок для утверждений. они могут происходить в любое время, когда документ находится на этапе «ожидается утверждение». There isn’t an established order for the approvals; they can occur at any time while the document is in the «approval pending» phase. Когда пользователь отправляет документ для проверки, он должен быть одобрен его прямым менеджером, администратором интрасети и диспетчером внутренней связи. When a user submits a document for review, it must be approved by their direct manager, the intranet administrator, and the internal communications manager.

ParallelForEach : приложение WF управляет корпоративными закупками в большой компании. ParallelForEach : A WF application manages corporate buys within a large company. Корпоративные правила предписывают перед планированием каждой операции закупки произвести оценку трех разных поставщиков. The corporate rules dictate that before planning any purchase operation, the valuations of three different vendors is required. Сотрудник из отдела покупателя выбирает трех поставщиков из списка поставщиков компании. An employee from the buying department selects three vendors from the company’s vendor list. После того как эти поставщики выбраны и проинформированы, компания ожидает от них коммерческих предложений. After these vendors have been selected and notified, the company will wait for their economic proposals. Предложения могут поступить в любом порядке. The proposals can come in any order. Чтобы реализовать этот сценарий в WF, выполните действие ParallelForEach для всех поставщиков в коллекции, запросив от них коммерческие предложения. To implement this scenario in WF, we use a ParallelForEach that will iterate through our collection of vendors and ask for their economic proposals. После того как все предложения собраны, выбирается и отображается лучшее из них. After all offers are gathered, the best one is selected and displayed.

InvokeMethod InvokeMethod

Действие InvokeMethod позволяет вызывать открытые методы для объектов или типов в области. The InvokeMethod activity allows invoking public methods in objects or types in scope. Оно поддерживает вызов методов экземпляров и статических методов с параметрами или без параметров (включая массивы параметров) и универсальных методов. It supports invoking instance and static methods with or without parameters (including parameter arrays), and generic methods. Оно также позволяет выполнять метод синхронно и асинхронно. It also allows executing method synchronously and asynchronously.

Приступая к работе Getting Started

В Visual Studio 2012 создайте консольное приложение рабочего процесса. In Visual Studio 2012, create a workflow console application. Добавьте действие InvokeMethod в конструкторе рабочих процессов и настройте для него метод экземпляра и статический метод. Add an InvokeMethod activity in the workflow designer, and configure static and instance methods on it.

Сценарии InvokeMethod InvokeMethod Scenarios

Необходимо вызвать метод для объекта в области. A method in an object in scope needs to be invoked. Например, в словарь необходимо добавить значение. For example, a value needs to be added to a dictionary. Вызывается метод Add для экземпляра словаря, указываются ключ и значение. The Add method of the instance of the dictionary is invoked, and the key and value are provided.

Метод необходимо вызывать для унаследованного объекта CLR. A method needs to be invoked on a legacy CLR object. Вместо создания пользовательского действия для заключения вызова унаследованного класса в оболочку, если он находится в области во время выполнения рабочего процесса, можно использовать InvokeMethod. Instead of creating a custom activity to wrap the call to that legacy class, if it is in scope during the workflow execution, InvokeMethod can be used.

Действия по обработке ошибок Error handling activities

TryCatchДействие предоставляет механизм для перехвата исключений, происходящих во время выполнения набора вложенных операций (аналогично конструкции try/catch в C# и Visual Basic). The TryCatch activity provides a mechanism for catching exceptions that occur during the execution of a set of contained activities (similar to the Try/Catch construct in C# and Visual Basic). TryCatch обеспечивает обработку исключений на уровне рабочего процесса. TryCatch provides exception handling at the workflow level. При возникновении необработанного исключения рабочий процесс прерывается и блок finally не выполняется. When an unhandled exception is thrown, the workflow is aborted and the Finally block won’t be executed. Такое поведение согласуется с C#. This behavior is consistent with C#.

Приступая к работе Getting Started

В Visual Studio 2012 создайте консольное приложение рабочего процесса. In Visual Studio 2012, create a workflow console application. В конструкторе рабочих процессов добавьте действие TryCatch. Add a TryCatch activity in the workflow designer.

Сценарии обработки ошибок Error handling scenarios

При возникновении ошибки должен быть выполнен набор действий и определенная логика. A set of activities needs to be executed, and specific logic needs to be executed when an error occurs. Если логика обработки ошибок обнаружила, что ошибку устранить нельзя, то исключение будет выдано повторно и проблема будет обрабатываться родительским действием (или узлом). If during that error handling logic it is found that the error is not recoverable, the exception will be rethrown, and the parent activity (or the host) will deal with the problem.

Действие Pick Pick activity

Действие Pick обеспечивает моделирование потока управления на основе событий в WF. The Pick Activity provides event-based control flow modeling in WF. Класс Pick содержит множество ветвей, каждая из которых перед выполнением ожидает наступления конкретного события. Pick contains many branches where each branch waits for a particular event to occur before running. В такой конфигурации действие Pick ведет себя подобно Switch , в котором действие выполнено только для одного события из набора прослушиваемых событий. In this setup, a Pick behaves similar to a Switch to which the Activity will execute only one of the set of events it is listening. Всеми ветвями управляют события, и появившееся событие запускает соответствующую ветвь. Each branch is event driven and the event that occurs runs the corresponding branch first. Все другие ветви отменяются и прекращают ожидать передачу данных, связанных с событиями. All other branches cancel and stop listening for events.

Приступая к работе Getting Started

В Visual Studio 2012 создайте консольное приложение рабочего процесса. In Visual Studio 2012, create a workflow console application. В конструкторе рабочих процессов добавьте действие Pick. Add a Pick activity in the workflow designer.

Документация по конструктору: Выбор конструктора действий Designer documentation: Pick Activity Designer

Сценарий Pick Pick Scenario

Пользователь должен получать приглашение ввести данные. A user needs to be prompted for input. В обычных обстоятельствах разработчик будет использовать вызов метода ReadLine , например, для запроса ввода данных пользователем. Under normal circumstances, the developer would use a method call like ReadLine to prompt for a user’s input. Проблема в данном случае состоит в том, что программа должна ожидать ввода данных пользователем. The problem with this setup is that the program waits until the user enters something. В этом сценарии для разблокирования блокирующего действия необходимо время ожидания. In this scenario, a time-out is needed to unblock a blocking activity. В распространенном сценарии задача должна быть выполнена в течение заданного промежутка времени. A common scenario is one that requires a task to be completed within a given time duration. Использование времени ожидания для блокирующего действия — это сценарий, где действие Pick имеет очень большое значение. Timing out a blocking activity is a scenario where Pick adds a lot of value.

Служба маршрутизации WCF WCF Routing Service

Служба Routing Service разработана как универсальный программный маршрутизатор, позволяющий управлять передачей сообщений WCF между клиентами и службами. The Routing Service is designed to be a generic software Router that allows you to control how WCF messages flow in between your clients and services. Служба Routing Service позволяет отделить клиентов от служб, что обеспечивает гораздо большую свободу в отношении конфигураций, которые вы можете поддерживать, и гибкости, которую вы используете при рассмотрении размещения служб. The Routing Service allows you to decouple your clients from your services, which gives you much more freedom in terms of the configurations that you can support and the flexibility you have when considering how to host your services. В .NET 3,5 Клиенты и службы тесно связаны. клиенту пришлось узнать обо всех службах, которые он должен поговорить и где они были размещены. In .NET 3.5, clients and services were tightly coupled; a client had to know about all of the services it needed to talk to and where they were located. Кроме того, в WCF в .NET Framework 3,5 имелись следующие ограничения. In addition, WCF in .NET Framework 3.5 had the following limitations:

Обработка ошибок была сложной задачей, так как эта логика должна была быть жестко закодирована в клиенте. Error handling was complex, as this logic had to be hard-coded into the client.

Клиенты и службы должны были всегда использовать одни и те же привязки. Clients and services had to always use the same bindings.

Службы редко были хорошо факторизованы: проще настроить клиент для работы с одной службой, реализующей все, что нужно, чем выбирать из множества служб. Services were rarely well factored: it is easier to have the client talk to one service which implements everything, rather than needing to choose between multiple services.

Служба маршрутизации в .NET 4 призвана упростить решение этих проблем. The routing service in .NET 4 is designed to make these problems easier to solve. Новая служба маршрутизации имеет следующие функциональные возможности: The new routing service has the following features:

Маршрутизация на основе содержимого (Объекты MessageFilter исследуют сообщение и определяют, куда оно должно быть отправлено.) Content based routing (MessageFilter objects examine a message to determine where it should be sent.)

Мост протокола (сообщение транспорта &) Protocol bridging (transport & message)

Обработка ошибок (маршрутизатор перехватывает исключения и при возникновении сбоя переходит к резервным конечным точкам) Error handling (the router catches communication exceptions and fails over to backup endpoints)

Динамическое (в памяти) обновление MessageFilterTable и конфигурации маршрутизации. Dynamic (in memory) update of MessageFilterTable and Routing Configuration.

Приступая к работе Getting Started

Сценарии маршрутизации Routing Scenarios

Служба маршрутизации полезна в следующих сценариях. The routing service is useful in the following scenarios:

Клиенты могут работать с несколькими службами, не обращаясь к ним непосредственно. Clients can talk to multiple services without having to address them all directly.

Клиенты могут выполнять дополнительные операции с запросами, чтобы определить, куда их направить. Clients can perform additional logic on a client request to determine where to route it

Распределение операций, выполняемых клиентом, между несколькими реализациями службы без оптимизации кода клиента. Decompose the operations a client performs into multiple service implementations without refactoring the client.

Клиенты и службы могут согласовать различные привязки с различными параметрами безопасности. Clients and services can speak different bindings with different security settings.

Клиенты могут быть более устойчивыми к сбоям или недоступности служб. Clients can be enabled to be more robust against failure or the unavailability of services.

Обнаружение WCF WCF Discovery

Обнаружение WCF — это технология платформы, которая позволяет внедрить механизм обнаружения в инфраструктуру приложений. WCF Discovery is a framework technology that allows you to incorporate a discovery mechanism to your application infrastructure. Его можно использовать для того, чтобы сделать службы доступными для обнаружения и настроить на клиентах поиск служб. You can use this to make your service discoverable, and configure your clients to search for services. Конечные точки больше не нужно жестко прописывать в клиентах, что позволяет делать приложения более надежными и отказоустойчивыми. Clients no longer need to be hard coded with endpoint, making your application more robust and fault tolerant. Обнаружение — это превосходная основа для создания возможностей автоматической настройки приложений. Discovery is the perfect platform to build auto-configuration capabilities into your application.

Продукт создается по стандарту WS-Discovery. The product is built on top of the WS-Discovery standard. Она разработана как взаимодействующая, расширяемая и универсальная. It’s designed to be interoperable, extensible, and generic. Продукт поддерживает два режима функционирования. The product supports two modes of operation:

Управляемый: в сети имеется сущность, осведомленная о существующих службах; клиенты направляют запросы непосредственно к ней. Managed: where there is an entity on the network knowledgeable about existing services, clients query it directly for information. Такая схема работы аналогична Active Directory. This is analogous to Active Directory.

Нерегламентированный: клиенты используют многоадресные сообщения для обнаружения служб. Ad-hoc: where clients use multicast messages to locate services.

Более того, сообщения обнаружения не зависят от сетевого протокола; их можно использовать с любым протоколом, поддерживающим требования режима. Furthermore, discovery messages are network protocol agnostic; you can use them on top any protocol that supports the mode requirements. Например, многоадресные сообщения обнаружения могут отправляться по каналу UDP или любой другой сети, поддерживающей многоадресную передачу сообщений. For example, discovery multicast messages can be sent over the UDP channel or any other network that supports multicast messaging. Эти точки проектирования в сочетании с гибкостью функций позволяют адаптировать обнаружение специально для вашего решения. These design points, combined with feature flexibility, allow you to adapt the discovery specifically to your solution.

Приступая к работе Getting Started

Сценарии обнаружения Discovery Scenarios

Разработчик не хочет жестко задавать конечные точки, хотя неизвестно, когда служба будет доступна. A developer doesn’t want to hard code endpoints, since it is unknown when my service will be available. Вместо этого разработчик хочет выбирать службу во время выполнения. Instead, the developer wants to choose a service at runtime. Компоненты в приложении должны быть лучше разделены, более надежны и доступны для автоматической настройки. More decoupling, robustness, and auto-configuration is needed between the components in the application.

Отслеживание Tracking

Отслеживание рабочих процессов позволяет понять выполнение экземпляра рабочего процесса. Workflow tracking provides insight into the execution of a workflow instance. События отслеживания выдаются из рабочего процесса на уровне экземпляра рабочего процесса и при выполнении действий в рабочем процессе. The tracking events are emitted from a workflow at the workflow instance level and when activities within the workflow execute. Участник отслеживания в рабочем процессе должен быть добавлен к узлу рабочего процесса для подписки на записи отслеживания. A workflow tracking participant needs to be added to the workflow host to subscribe to tracking records. Записи отслеживания фильтруются с помощью профиля отслеживания. The tracking records are filtered using a tracking profile. В .NET Framework предоставляется участник отслеживания ETW (Event Tracing для Windows), а в файле machine.config устанавливается базовый профиль. The .NET Framework provides an ETW (Event Tracing for Windows) tracking participant, and a basic profile is installed in the machine.config file.

Приступая к работе Getting Started

В Visual Studio 2010 создайте новый проект служебного приложения рабочего процесса WCF. In Visual Studio 2010, create a WCF Workflow Service Application project. Пара Receive и SendReply будет расположена на полотне для запуска. A Receive and SendReply pair will be placed on your canvas to start.

Откройте файл web.config и добавьте поведение отслеживания трассировки событий Windows без профиля. Open the web.config and add an ETW tracking behavior with no profile.

Будет использован профиль по умолчанию. The default profile is used.

Откройте средство просмотра событий и включите канал аналитики на следующем узле: Просмотр событий, журналы приложений и служб, Microsoft, Windows, сервер приложений — приложения. Open event viewer and enable the analytic channel in the following node: Event Viewer, Applications and Services Logs, Microsoft, Windows, Application Server-Applications. Щелкните правой кнопкой мыши аналитика и выберите Включить журнал. Right-click Analytic and select Enable Log.

Запустите службу рабочего процесса. Run the workflow service.

Просмотрите события отслеживания рабочего процесса в средстве просмотра событий. Observe the workflow tracking events in event viewer.

Хранилище экземпляров рабочих процессов SQL SQL Workflow Instance Store

SqlWorkflowInstanceStore — это реализация хранилища экземпляров на основе SQL Server. The SqlWorkflowInstanceStore is a SQL Server-based implementation of an instance store. Хранилище экземпляров служит для хранения состояния запущенного экземпляра вместе со всеми данными, необходимыми для загрузки и возобновления работы экземпляра. An instance store stores the state of a running instance together with all data necessary to load and resume that instance. Узел службы сохраняет состояние экземпляра в хранилище экземпляров при сохранении рабочего процесса, а также загружает состояние экземпляра при получении сообщения для этого экземпляра или после истечения срока действия действий задержки. The service host instructs the instance store to save the instance state if the workflow persists, and it instructs the instance store to load the instance state when a message arrives for that instance or a delay activity expires.

Приступая к работе Getting Started

В Visual Studio 2012 создайте рабочий процесс, содержащий неявное или неявное Persist действие. In Visual Studio 2012, create a Workflow that contains an implicit or explicit Persist activity. Добавьте поведение SqlWorkflowInstanceStore на узел службы рабочего процесса. Add the SqlWorkflowInstanceStore behavior to your workflow service host. Это можно сделать в коде или в файле конфигурации приложения. This can be done in code or in the application configuration file.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Windows wireless drivers для ubuntu
  • Windows winsock fix windows 7
  • Windows wifi key finder
  • Windows wi11 now check the disk
  • Windows whistler startup sound