windows workflow foundation что это за программа

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

Среда выполнения рабочих процессов

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

WorkflowInvoker, который вызывает рабочий процесс как метод.

WorkflowApplication для явного управления выполнением одного экземпляра рабочего процесса.

WorkflowServiceHost для взаимодействия с помощью сообщений в многоэкземплярных сценариях.

Каждый из этих классов является оболочкой для среды выполнения основной операции, представленной как объект ActivityInstance, ответственный за выполнение операции. В домене приложения может быть несколько объектов ActivityInstance, работающих параллельно.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа
Компоненты рабочего процесса в хост-процессе

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

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

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

На предыдущей диаграмме используется метод Invoke класса WorkflowInvoker для вызова нескольких экземпляров рабочего процесса. WorkflowInvoker используется для упрощенных рабочих процессов, не требующих управления с сервера. Рабочие же процессы, требующие управления с сервера (например, возобновление Bookmark), должны выполняться с помощью Run. Чтобы вызвать экземпляр рабочего процесса, не обязательно ждать завершения другого. Среда выполнения допускает одновременное выполнение нескольких экземпляров рабочего процесса. Вызываются следующие рабочие процессы:

Действие Sequence, содержащее дочернее действие WriteLine. Переменная Variable родительского действия привязана к InArgument дочернего действия. Дополнительные сведения о переменных, аргументах и привязке см. в разделе переменные и аргументы.

Настраиваемое действие, происходящее от абстрактного класса CodeActivity. CodeActivity может обращаться к возможностям среды выполнения (например, к отслеживанию и свойствам) с помощью CodeActivityContext, доступного в качестве параметра метода Execute. Дополнительные сведения об этих функциях времени выполнения см. в разделе Отслеживание рабочего процесса и Свойства выполнения рабочего процесса.

Источник

Введение в Microsoft Workflow Foundation

Заинтересовались — читайте дальше.

Введение

Если оглянуться, то мир вокруг нас — это бесконечная череда сменяющих друг друга процессов. Мы сажаем зерно, оно прорастает, цветет, оставляет потомство, погибает. На его месте вырастает что-то новое. И так день за днем. Люди пытаются описать эти процессы, симулировать их на компьютере, придумывают что-то новое. Для этого создаются различные ментальные модели, которые упрощают описание повседневных процессов. Вводятся уровни абстракции. Например, придумали объектно-ориентированное программирование. С его помощью можно описывать объекты реального мира. Это легко и естественно. Достаточно посмотреть на вещь и в голове уже вырисовывается более или менее точная модель: какими свойствами обладает этот объект, какие действия может совершать.

Но объекты, которые никак не взаимодействуют между собой, не имеют никакого смысла. Жизнь — это движение, зачастую цикличное. С другой стороны в мире существует человек. Он вносит некоторую сумятицу своей разумностью. Многие вещи, которые он делает — непоследовательны. Мотивы не всегда ясны. Сроки не всегда соответствуют ожиданиям. Человек может о чем-то забыть, что-то сделать не так, как задумывал раньше. И в тоже время он тоже оперирует объектами. Будь то объекты реального мира, такие, как камни, цветы, вода, или виртуального: документы, информация, слова.

Именно для описания движения и взаимодействия объектов внутри программ создана технология Microsoft Workflow Foundation. Это связующее звено, которое позволяет создавать взаимодействия, связывающие объекты между собой или процессы, протекающие внутри самих объектов. Workflow Foundation (WF) разделяет все процессы на два основных типа: последовательные процессы (sequential) и процессы, основанные на состояниях (state machine).

Последовательные процессы

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программаПоследовательные процессы, в понимании WF, — это такие процессы, которые обычно происходят без вмешательства извне. Также, они занимают относительно немного времени. Хорошим примером такого процесса может послужить копирование файлов из одной папки в другую: мы задали папки в начале процесса, а потом в него не вмешиваемся до завершения. Т.е. это, по сути, отлаженный конвейер. Да, может что-то сломаться и потребовать каких-то действий, но это исключительные ситуации, которые обрабатываются отдельно.

Процессы, основанные на состояниях

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программаЛучший пример процесса, основанного на состояниях, кроется в его переводе. State machine буквально означает государственный аппарат. Это такой процесс, который имеет множество состояний, которые в зависимости от различных событий могут переходить из одного в другое. Все это мы обычно видим в бюрократическом аппарате: государственная страховка, продажа квартиры и т.д. Требуются подписи различных чиновников, которые могут быть в отпуске или на больничном. Такой процесс может длиться очень долго: дни, недели, а то и месяцы. Именно для таких ситуаций создан state-machine workflow.

Что нам дает WF

Давайте теперь посмотрим, что нам дает WF. В первую очередь это наглядность. Все мы постоянно рисуем какие-то схемки, наброски. В более сложных случаях мы детально углубляемся в проектирование, например, рисуем временные диаграммы. Теперь мы можем перенести эти эскизы в Microsoft Visual Stuidio 2008 с помощью встроенного редактора. Вот как это выглядит:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Даже далекий от программирования человек сможет разобраться в том, что происходит на диаграмме.
Но все эти эскизы оторваны от действующей программы, никак с нею не взаимодействуют. Если нам надо изменить течение процесса, то необходимо открыть исходники, вспомнить места, в которых необходимо сделать изменения согласно новому эскизу. Эти задачи позволяет решить WF. Мы можем просто взять и перенести участок кода на другое место. Тут же его скомпилировать и сравнить с исходным вариантом.

Также использование WF помогает более наглядно представить работу системы. Выделить процессы, которые могут быть разделены на составляющие или наоборот, объединены. Также поддерживаются транзакционные системы: можно задать компенсирующий процесс для случая, когда что-то пошло не так. Этот процесс вернет систему в состояние, в котором она находилась до наступления ошибки.

Есть возможность опубликовать процесс в качестве сервиса или веб-сервиса, доступного через интернет. Более того, можно создать так называемый Durable web-service, который сохраняет идентификатор сессии и состояние сервиса в промежутках между вызовами, позволяя выполнять процесс в течение длительного времени, не поддерживая соединение. Вы даже можете остановить процесс, сохранить состояние и запустить его на другом компьютере с того же самого места.

Средства разработки

Наиболее удобным средством разработки является визуальный редактор, встроенный в Visual Studio 2008. Он позволяет быстро и гибко создавать и модифицировать процессы. При этом нет необходимости разбираться в том, как это устроено на низком уровне. Также можно создавать процессы, используя язык разметки XAML или при помощи C#.

Давайте взглянем на основные элементы интерфейса для работы с процессами в студии. Вот как выглядит окно в процессе разработки:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Рассмотрим назначение каждой панели.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Это основной документ, в котором мы моделируем процесс. Сейчас мы видим приглашение перетащить туда какие-нибудь элементы для создания последовательного процесса.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Процесс состоит из базовых элементов, называемых Activity. Они находятся в панели Toolbox под номером два. В ней находится множество элементов. Часть из них вполне понятна по их названию. Например, While или IfElse. ConditionedActivityGroup звучит более загадочно.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Естественно, понадобится панель Properties для настройки всевозможных параметров.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

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

Заключение

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

Источник

Windows Workflow Foundation – для чего и в каких случаях применять

Помню, еще в университете перед реализацией любого алгоритма мы описывали его в виде блок схемы, и только после этого переходили непосредственно к кодированию. Workflow, как одна из парадигм программирования, на ряду с процедурным и объектно ориентированным подходами, как раз и позволяет нам визуально реализовать любой процесс, используя набор предопределенных функциональных блоков (Activity), при этом, избавляя от его последующего кодирования.

Библиотека WF, являясь одной из реализаций парадигмы Workflow, предоставляет следующие основные возможности:

— богатый набор функциональных блоков;
— расширение набора стандартных функциональных блоков пользовательскими;
— сохранение и возобновление экземпляров Workflow в процессе их исполнения;
— использование Workflow дизайнера в вашем приложении;
— интеграция с WCF;
— пошаговая диагностика непосредственно в Workflow дизайнере;
— и многое другое.

Как известно, каждой технологии своя область применения. Для определения необходимости использования WF при реализации конкретного алгоритма/процесса я применяю 3 критерия:

1. Реализация алгоритма/процесса постоянно меняется.

В нашей компании мы разработали подсистему Workflow, которая является ядром всех продуктов. Имея, к примеру, десятки клиентов наших продуктов, у которых десятки процессов, получаем сотни разных изменяющихся процессов.

2. Процесс/алгоритм имеет длительный срок выполнения.

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

3. Нужно предоставить возможность изменения алгоритма/процесса конечному пользователю без вмешательства программиста.

Мы разработали свой собственный дизайнер, чтобы максимально упростить и облегчить редактирование процессов конечному пользователю (бизнес-аналитику). Это позволяет снять нагрузку с разработчиков. А возможность видеть и самим с легкостью менять свои процессы очень привлекательна для клиентов.

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

В качестве ознакомительного примера использования WF я как раз и реализую Workflow процесс, который ответит на вопрос о целесообразности использования WF.
1. Создаю новый проект IsWWFUsefullSample используя шаблон Blank Solution:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

2. Добавляю новый проект IsWWFUsefullSample.Activities используя шаблон Activity Designer Library:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

3. Удаляю сущеcтвующий файл ActivityDesigner1.xaml и добавляю новый элемент используя шаблон Activity:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

4. Открываю Activity в дизайнере и добавляю необходимые параметры типа Boolean:

— три входящих параметра соответствующих нашим критериям: IsLongRunning, IsChangeable, IsDesignerNecessary;

— один исходящий параметр для возврата результата: Result.

Стоит упомянуть, что на данный момент для описания выражений и типов внутри Workflow Activity можно использовать только синтаксис VB.Net. Обещают добавить поддержку С#.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

6. Workflow процесс готов. Для его использования добавляю новое приложение IsWWFUsefullSample.TestClient на основании шаблона Workflow Console Application:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

7. Удаляю файл Workflow1.xaml.

8. Добавляю ссылку на проект IsWWFUsefullSample.Activities.

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

9. Реализую Main метод. Он предлагает пользователю ответить на три вопроса, запускает процесс Workflow с полученными исходными данными и выводит результат вычисления.

namespace IsWWFUsefullSample.TestClient
<
using System;
using System.Activities;
using System.Collections.Generic;
using System.Linq;
using System.Text;

///
/// Console program class.
///
public class Program
<
///
/// Program starting point.
///
///

public static void Main(string[] args)
<
// Question answers
const string Yes = «yes»;
const string No = «no»;
var answers = new List < Yes, No >;

// Create new activity instance
var activity = new IsWWFUsefull();
var parameters = new Dictionary ();

do
<
Console.WriteLine(«Please, answer following questions to determine necessity of using WWF.»);
Console.WriteLine();

// Read activity input parameters
parameters[«IsLongRunning»] = ReadAnswer(«Is process/algorithm long running?», answers) == Yes;
parameters[«IsChangeable»] = ReadAnswer(«Is process/algorithm frequently changed?», answers) == Yes;
parameters[«IsDesignerNecessary»] =
ReadAnswer(«Do you need a visual designer for your process/algorithm?», answers) == Yes;

// Execute activity
var result = WorkflowInvoker.Invoke(activity, parameters);

// Show result
Console.WriteLine();
if ((bool)result[«Result»])
<
Console.WriteLine(«Use WWF!»);
>
else
<
Console.WriteLine(«You don’t need WWF but still can use it if you like it :).»);
>
Console.WriteLine(«———————————————————————«);
Console.WriteLine();
>
while (ReadAnswer(«Do you want to proceed?», answers) == Yes);

/// Answer text.
private static string ReadAnswer(string question, IList answers)
<
// Prepare answers prompting string
var answersString = new StringBuilder();
for (var i = 0; i a == text.ToLower()).FirstOrDefault();
>
while (answer == null);

10. Запускаю и тестирую приложение:

windows workflow foundation что это за программа. Смотреть фото windows workflow foundation что это за программа. Смотреть картинку windows workflow foundation что это за программа. Картинка про windows workflow foundation что это за программа. Фото windows workflow foundation что это за программа

Исходники проекта можно загрузить здесь.

Всем удачных архитектурных решений и приятного кодирования!

Источник

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

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

Приступая к работе с действиями обмена сообщениями

в Visual Studio 2012 создайте проект приложения службы рабочего процесса WCF. На полотне будут расположены Receive и SendReply.

Щелкните проект правой кнопкой мыши и выберите Добавление ссылки на службу. Укажите существующий язык WSDL веб-службы и нажмите кнопку ОК. Создайте проект, чтобы отобразить созданные действия (реализованные с помощью Send и ReceiveReply ) на панели элементов.

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

BestPriceFinder Служба обращается к нескольким службам авиакомпании, чтобы найти лучшую тарифную сумму для конкретного маршрута. Для реализации этого сценария потребуется использовать действия с сообщениями для получения цены, получения цен из внутренних служб и ответа на запрос цены с максимальной ценой. Также потребуется использовать другие готовые действия для создания бизнес-логики для вычисления лучшей цены.

WorkflowServiceHost

Приступая к работе со службой рабочего процесса

в Visual Studio 2010 создайте проект приложения службы рабочего процесса WCF: этот проект будет настроен для использования WorkflowServiceHost в среде веб-узла.

Чтобы разместить рабочий процесс, не связанный с обменом сообщениями, добавьте пользовательский класс WorkflowHostingEndpoint, который создаст экземпляр на основе сообщения.

Экземплярами рабочих процессов можно управлять (приостанавливать или завершать их работу). Это делается путем добавления WorkflowControlEndpoint в WorkflowServiceHost с последующим вызовом WorkflowControlClient.

Образцы WorkflowServiceHost приведены в следующих разделах:

Сценарий WorkflowServiceHost

Correlation

Корреляцией называют два следующих явления:

Способ группирования сообщений, т. е. связь между сообщением с запросом и ответом на него.

Способ сопоставления порции данных с экземпляром службы.

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

Чтобы начать работу с корреляцией, создайте новый проект в Visual Studio. Создайте переменную типа CorrelationHandle.

Примером корреляции для группирования сообщений является корреляция по схеме «запрос-ответ», группирующая сообщения.

В Receive действии щелкните CorrelationInitializers свойство и добавьте RequestReplyCorrelationInitializer с помощью коррелатионхандле, созданного на первом шаге выше.

Создайте SendReply действие, щелкнув правой кнопкой мыши Receive и выбрав команду «Создать SendReply». Вставьте его в рабочий процесс после действия Receive.

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

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

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

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

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

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

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

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

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

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

Существующий набор служб WCF очень сложно настраивать и обслуживать. Файл конфигурации содержит тысячи строк XML-кода, которые очень опасно трогать. Потребуется помощь, чтобы уменьшить объем кода и сделать его более управляемым.

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

Было невозможно динамически добавлять известные типы во время сериализации и десериализации.

Сериализаторы не могли работать с неизвестными данными в xsi:type.

Пользователи не смогли указать xsi:type, который должен появиться в канале, например уменьшить размер экземпляра сериализации в канале.

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

Сценарии арбитра контрактов данных

Как избежать необходимости объявлять десятки объектов KnownTypeAttribute в службе.

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

Блок-схема

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

в Visual Studio 2012 создайте консольное приложение рабочего процесса. В конструкторе рабочих процессов добавьте блок-схему.

В блок-схеме используются следующие классы:

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

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

Действие блок-схемы можно использовать для реализации игры по угадыванию числа. Эта игра очень проста: компьютер выбирает случайное число, а игрок должен его угадать. Когда игрок отправляет каждое предположение, компьютер показывает их подсказку (т. е. «попробуйте меньшее число»). Если игрок находит число в течение менее 7 попыток, он получает от компьютера Специальный конгратулатион. Эта игра может быть реализована с помощью сочетания следующих процедурных действий:

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

Процедурные действия предоставляют механизм моделирования последовательного потока управления, используя знакомые программистам концепции. Эти действия включают в себя стандартные конструкции языка программирования и, при необходимости, обеспечивают языковую четность с помощью распространенных процедурных языков, таких как C# и Visual Basic.

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

в Visual Studio 2012 создайте консольное приложение рабочего процесса. Добавьте в конструкторе рабочих процессов процедурные действия.

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

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

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

ParallelForEach : приложение WF управляет корпоративными закупками в большой компании. Корпоративные правила предписывают перед планированием каждой операции закупки произвести оценку трех разных поставщиков. Сотрудник из отдела покупателя выбирает трех поставщиков из списка поставщиков компании. После того как эти поставщики выбраны и проинформированы, компания ожидает от них коммерческих предложений. Предложения могут поступить в любом порядке. Чтобы реализовать этот сценарий в WF, выполните действие ParallelForEach для всех поставщиков в коллекции, запросив от них коммерческие предложения. После того как все предложения собраны, выбирается и отображается лучшее из них.

InvokeMethod

Действие InvokeMethod позволяет вызывать открытые методы для объектов или типов в области. Оно поддерживает вызов методов экземпляров и статических методов с параметрами или без параметров (включая массивы параметров) и универсальных методов. Оно также позволяет выполнять метод синхронно и асинхронно.

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

в Visual Studio 2012 создайте консольное приложение рабочего процесса. Добавьте действие InvokeMethod в конструкторе рабочих процессов и настройте для него метод экземпляра и статический метод.

Сценарии InvokeMethod

Необходимо вызвать метод для объекта в области. Например, в словарь необходимо добавить значение. Вызывается метод Add для экземпляра словаря, указываются ключ и значение.

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

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

TryCatchДействие предоставляет механизм для перехвата исключений, происходящих во время выполнения набора вложенных операций (аналогично конструкции try/catch в C# и Visual Basic). TryCatch обеспечивает обработку исключений на уровне рабочего процесса. При возникновении необработанного исключения рабочий процесс прерывается и блок finally не выполняется. Такое поведение согласуется с C#.

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

в Visual Studio 2012 создайте консольное приложение рабочего процесса. В конструкторе рабочих процессов добавьте действие TryCatch.

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

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

Действие Pick

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

в Visual Studio 2012 создайте консольное приложение рабочего процесса. В конструкторе рабочих процессов добавьте действие Pick.

Сценарий Pick

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

Обработка ошибок была сложной задачей, так как эта логика должна была быть жестко закодирована в клиенте.

Клиенты и службы должны были всегда использовать одни и те же привязки.

Службы редко были хорошо факторизованы: проще настроить клиент для работы с одной службой, реализующей все, что нужно, чем выбирать из множества служб.

Маршрутизация на основе содержимого (Объекты MessageFilter исследуют сообщение и определяют, куда оно должно быть отправлено.)

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

Обработка ошибок (маршрутизатор перехватывает исключения и при возникновении сбоя переходит к резервным конечным точкам)

Динамическое (в памяти) обновление MessageFilterTable и конфигурации маршрутизации.

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

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

Служба маршрутизации полезна в следующих сценариях.

Клиенты могут работать с несколькими службами, не обращаясь к ним непосредственно.

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

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

Клиенты и службы могут согласовать различные привязки с различными параметрами безопасности.

Клиенты могут быть более устойчивыми к сбоям или недоступности служб.

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

Продукт создается по стандарту WS-Discovery. Она разработана как взаимодействующая, расширяемая и универсальная. Продукт поддерживает два режима функционирования.

Управляемый: в сети имеется сущность, осведомленная о существующих службах; клиенты направляют запросы непосредственно к ней. Такая схема работы аналогична Active Directory.

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

Более того, сообщения обнаружения не зависят от сетевого протокола; их можно использовать с любым протоколом, поддерживающим требования режима. Например, многоадресные сообщения обнаружения могут отправляться по каналу UDP или любой другой сети, поддерживающей многоадресную передачу сообщений. Эти точки проектирования в сочетании с гибкостью функций позволяют адаптировать обнаружение специально для вашего решения.

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

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

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

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

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

В Visual Studio 2010 создайте новый проект служебного приложения рабочего процесса WCF. Пара Receive и SendReply будет расположена на полотне для запуска.

Откройте файл web.config и добавьте поведение отслеживания трассировки событий Windows без профиля.

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

откройте средство просмотра событий и включите канал аналитики на следующем узле: Просмотр событий, журналы приложений и служб, Microsoft, Windows, сервер приложений — приложения. Щелкните правой кнопкой мыши аналитика и выберите Включить журнал.

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

Просмотрите события отслеживания рабочего процесса в средстве просмотра событий.

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

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

в Visual Studio 2012 создайте рабочий процесс, содержащий неявное или неявное Persist действие. Добавьте поведение SqlWorkflowInstanceStore на узел службы рабочего процесса. Это можно сделать в коде или в файле конфигурации приложения.

Источник

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

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