Windows workflow foundation что это за программа и нужна ли она

Время на прочтение
8 мин

Количество просмотров 22K

Базовое понимание

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

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

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

Критерии применения

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

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

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

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

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

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

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

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

Ознакомительный пример

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

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

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

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

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

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

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

5. Для анализа входящих праметров использую три вложенных If Activities (Toolbox -> Control Flow -> If), хотя конечно можно обойтись и одним. Для присвоения результата использую Assign Activity (Toolbox -> Primitives -> Assign). В итоге получается следующий алгоритм:

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

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

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

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

// ==============================================================
// <copyright file="Program.cs" company="The World as a Workflow">
//     Copyright (c) The World as a Workflow. All rights reserved.
// </copyright>
// <author>Alexander Nechyporenko</author>
// <date>2011-07-12</date>
// ==============================================================

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

    using IsWWFUsefullSample.Activities;

    /// <summary>
    /// Console program class.
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Program starting point.
        /// </summary>
        /// <param name="args">Program parameters.</param>
        public static void Main(string[] args)
        {
            // Question answers
            const string Yes = "yes";
            const string No = "no";
            var answers = new List<string> { Yes, No };

            // Create new activity instance
            var activity = new IsWWFUsefull();
            var parameters = new Dictionary<string, object>();

            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);

            return;
        }

        /// <summary>
        /// Read answer from console.
        /// </summary>
        /// <param name="question">Question text.</param>
        /// <param name="answers">A list of posible</param>
        /// <returns>Answer text.</returns>
        private static string ReadAnswer(string question, IList<string> answers)
        {
            // Prepare answers prompting string
            var answersString = new StringBuilder();
            for (var i = 0; i < answers.Count; i++)
            {
                answersString.AppendFormat(i == 0 ? "{0}" : "/{0}", answers[i]);
            }

            // Read and validate the answer
            var text = string.Empty;
            var answer = string.Empty;
            do
            {
                if (!string.IsNullOrEmpty(text))
                {
                    Console.WriteLine(
                        string.Format("'{0}' doesn't belong to list of posible answers: '{1}'.", text, answersString));
                }

                Console.Write(string.Format("{0} ({1}): ", question, answersString));

                text = Console.ReadLine();
                answer = answers.Where(a => a == text.ToLower()).FirstOrDefault();
            }
            while (answer == null);

            return answer;
        }
    }
}

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

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

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

From Wikipedia, the free encyclopedia

Windows Workflow Foundation (WF)

Developer(s) Microsoft
Initial release November 21, 2006; 16 years ago
Stable release

WF45
/ August 15, 2012; 11 years ago

Operating system Microsoft Windows
Platform .NET Framework
Type Software framework
Website docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/

dot net three point zero windows stack diagram

This subsystem is a part of .NET Framework 3.0

Windows Workflow Foundation (WF[2]) is a Microsoft technology that provides an API, an in-process workflow engine, and a rehostable designer to implement long-running processes as workflows within .NET applications. The latest version of WF was released as part of the .NET Framework version 4.5 and is referred to as (WF45).[3]

A workflow, as defined here, is a series of distinct programming steps or phases. Each step is modeled in WF as an Activity. The .NET Framework provides a library of activities (such as WriteLine, an activity that writes text to the console or other form of output). Custom activities can also be developed for additional functionality. Activities can be assembled visually into workflows using the Workflow Designer, a design surface that runs within Visual Studio. The designer can also be hosted in other applications.

Encapsulating programming functionality into the activities allows the developer to create more manageable applications; each component of execution can be developed as a Common Language Runtime object whose execution will be managed by the workflow runtime.

Workflow Foundation versions[edit]

  • Workflow Foundation was first released in Version 3 of the .NET Framework,[4] and primarily uses the System.Workflow.Activities, System.Workflow.ComponentModel, and System.Workflow.Runtime namespaces. Workflows in version 3 were created using either the Sequential model (in which activities are executed in order, with the completion of one activity leading to the next), or the State Machine model (in which activities are executed in response to external events). Microsoft SharePoint 2007 uses WF 3.
  • In .NET Framework 3.5, messaging activities were introduced that integrated Workflow with Windows Communication Foundation (WCF). With the new ReceiveActivity, workflows could respond to incoming WCF messages. The new features of Workflow in version 3.5 use the System.ServiceModel namespace. Microsoft SharePoint 2010 uses WF 3.5.
  • In .NET Framework 4, Windows Workflow Foundation was updated extensively, with new features such as Data Contract Resolver, Flowchart, and other flow control activities added. Workflow in .NET 4 uses the System.Activities namespace. Most notably, there is no longer a Workflow Runtime object in version 4; workflows are executed directly using WorkflowApplication or WorkflowInvoker instead.
  • Activities created in previous versions of the .NET Framework can be executed by .NET 4 workflows using the Interop activity.
  • Future versions and releases of Windows Phone will include an updated State Machine and Dynamic Update.

Workflow usage scenarios[edit]

Windows Workflow Foundation is used to create applications that execute an ordered business process, such as the steps needed to approve a document, hire a candidate for a position, or make a purchase. These processes can execute in a short amount of time, but are typically long-running, in which the application will need to shut down to conserve memory between steps. Typically, business processes to be modeled as workflows have the following features:

  • Have specific business logic that may need to change periodically, such as the tax or shipping calculation needed to determine the purchase price of an item, or the series of steps needed to approve a purchase, hire, or process.
  • Have several inputs into the workflow that may come hours or days apart
  • Have advanced business logic that might require workflow execution to travel down different branches depending on different circumstances.
  • Need to interact with other systems, such as a database, website or other client application, or web service.

[edit]

Workflows are created either by being defined in XAML Extensible Application Markup Language using the workflow designer, or by being assembled programmatically in a .NET language such as C# or VB.NET.
If the designer is used, activities are assembled on the workflow designer canvas by dragging them from the toolbox. Workflow arguments and variables are also created and assigned within the designer. If a workflow is assembled in code, activities are instantiated like other CLR objects, and assembled into collections of a single parent activity, usually a Sequence or Flowchart. The single parent activity is then executed using WorkflowApplication or WorkflowInvoker, and runs as a workflow. The term «Workflow» here usually refers to the root activity that is executed by the host. Workflows can use both out-of-box activities and custom activities. Out-of-box activities include flow control activities such as DoWhile, Flowchart-related activities such as FlowDecision, WCF Messaging activities such as Send, and primitive activities that perform simple tasks like Assign and WriteLine. Custom activities are user-created CLR objects that derive from the class System.Activities.Activity, and provide declarative functionality by allowing the developer to define the execution behavior of the activity in code. Custom activities can benefit from having a custom activity designer associated with them to enhance the visual authoring experience in the Visual Studio IDE.

Books on Workflow[edit]

.NET Framework 3.0 and 3.5[edit]

  • Dharma Shukla, Bob Schmidt: Essential Windows Workflow Foundation, Addison-Wesley Professional, 13 October 2006, ISBN 0-321-39983-8
  • Michael Stiefel: Building Applications with Windows Workflow Foundation (WF): Basics of Windows Workflow Foundation (Digital Short Cut), June 5, 2007, Kindle, ISBN 0-321-51454-8
  • Brian Noyes: Developing Applications with Windows Workflow Foundation (WF) (Video Training), June 7, 2007, Brian Noyes, ISBN 0-321-50313-9
  • Brian R. Myers: Foundations of WF, Apress, 23 October 2006, ISBN 1-59059-718-4
  • Bruce Bukovics: Pro WF: Windows Workflow in .NET 3.0, Apress, 19 February 2007, ISBN 1-59059-778-8
  • Todd Kitta: Professional Windows Workflow Foundation, Wrox, 12 March 2007, ISBN 0-470-05386-0
  • Kenn Scribner: Microsoft Windows Workflow Foundation Step by Step, Microsoft Press, 28 February 2007, ISBN 0-7356-2335-X

.NET Framework 4.0[edit]

  • Mark Collins: Beginning WF: Windows Workflow in .NET 4.0, Apress, March 19, 2010, ISBN 978-1-4302-2485-3
  • Bruce Bukovics: Pro WF: Windows Workflow in .NET 4, Apress, June 29, 2010, ISBN 978-1-4302-2721-2
  • Andrew Zhu: Microsoft Windows Workflow Foundation 4.0 Cookbook, Packt Publishing, September 24, 2010, ISBN 978-1-84968-078-3

.NET Framework 4.5[edit]

  • Bayer White: Pro WF 4.5, Apress, November 14, 2012, ISBN 978-1-4302-4383-0

References[edit]

  1. ^ «Windows Workflow Foundation (WF) FAQ». Microsoft. 22 December 2018. Retrieved 25 January 2021. WF is an acceptable abbreviation for Windows Workflow Foundation. WWF is not acceptable because it is a registered trademark of the World Wildlife Fund
  2. ^ Abbreviation WWF is not used because it’s trademarked by World Wide Fund for Nature[1]
  3. ^ «A Developer’s Introduction to Windows Workflow Foundation (WF) in .NET 4». Retrieved August 21, 2012.
  4. ^ .NET Framework 3.0

External links[edit]

  • Microsoft Docs: Windows Workflow Foundation
Знакомство с Windows Workflow Foundation

Мы продолжаем знакомство с технологиями Visual Studio 2005 и Windows Vista. Сегодня речь пойдет еще об одном нововведении, претендующем на революционность, – это Windows Workflow Foundation (WWF).

Вячеслав Колдовский
koldovsky@mail.ru

Мы продолжаем знакомство с технологиями Visual Studio
2005 и Windows Vista. Сегодня речь пойдет еще об одном нововведении,
претендующем на революционность, – это Windows Workflow Foundation (WWF).
Полная реализация WWF планируется в следующем поколении среды .NET
Framework – WinFX, которая положена в основу Windows Vista, однако она
будет доступна и для нынешних операционных систем Microsoft. Текущая
бета-версия WWF (msdn.microsoft.com/windowsvista/building/workflow)
предназначена для использования с Visual Studio 2005.

После написания первой программы «Hello, world!» в дальнейшем
обучении будущих разработчиков обычно применяются блок-схемы, которые
очень наглядно отображают логику программ. Но, к сожалению, блок-схемы
исчезают сразу после того, как усвоены циклы и условные переходы. А ведь
сложные программные конструкции напрочь лишены наглядности, что
порождает множество проблем, с которыми вынуждены бороться все участники
процесса создания ПО.

Существует, конечно, множество инструментов и методик, поддерживающих
«визуализацией» различные этапы разработки, – от конструкторов кода до
UML и RAD-сред, даже не предполагающих программирования. Но большинство
из них не являются столь простыми и наглядными, как обычные блок-схемы.
Нередко, однако, возвращение к старым идеям на более современном уровне
дает весьма интересные результаты.

Так, среди значительного числа других нововведений WinFX Microsoft
предлагает и свой взгляд на то, каким образом визуальная разработка на
основе блок-схем может быть использована при создании приложений. Для
этих целей рекомендуется применять некую интерпретацию понятия «workflow»,
реализованную в WWF.

Определимся с терминологией

Термин «workflow» достаточно распространен в IT-индустрии и
воспринимается прежде всего в контексте систем электронного
документооборота. Однако, как это часто происходит в том случае, когда
вначале формируется рынок, а лишь потом согласовывается терминология,
существует несколько различных толкований данного понятия, каждое из
которых имеет определенное право на существование. Здесь мы не будем их
анализировать, поскольку, как это станет ясно ниже, в случае WWF в
«workflow» вкладывается смысл, несколько отличающийся от принятого в
бизнес-системах.

В наиболее широком понимании термин workflow означает упорядоченную
последовательность действий (или работ), призванных решать какую-либо
задачу. В такой трактовке достаточно прозрачно определена суть понятия,
однако нет даже намека на ту форму, в которой оно предстанет перед
потребителем. Здесь мы вполне можем принять точку зрения, наверное,
самой авторитетной в данной области международной организации Workflow
Management Coalition (WfMC, wfmc.org). Не вдаваясь в нюансы, отметим,
что WfMC предусматривает ряд требований к workflow-системам, включая
наличие специального инструментария для определения моделей процессов,
«движка», который будет их исполнять, средств для мониторинга,
управления и составления отчетности.

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

Однако если рассматривать программирование в широком смысле – как
создание набора инструкций, предусматривающих обратную связь и
возможность повторного использования, то станет ясно, что под это
определение вполне попадает моделирование любых рабочих процессов, так
или иначе укладывающихся в модели workflow. Именно от этого
отталкивалась Microsoft, разрабатывая WWF.

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

Соответственно, очень важная особенность WWF – универсальность.
Поскольку визуальное программирование отличается от традиционных
подходов к разработке программных систем только внешне, но никак не
своей сутью, то WWF практически равноценна самой платформе .NET
Framework 2.0, на основе которой она реализована. Это, впрочем, ни в
коей мере не означает, что WWF может полностью заменить традиционные
подходы, однако для определенного круга задач (в том числе, пожалуй, и
для реализации workflow-систем в обычном понимании) данное решение
действительно может оказаться предпочтительным.

Архитектура

Архитектурно Windows Workflow Foundation состоит из нескольких
уровней (таблица). На нижнем находится родительский процесс (Host
Process). Характерно, что WWF работает не изолированно, а выполняется
именно в рамках родительского процесса, который посредством
стандартизированных интерфейсов предоставляет набор сервисов,
определяющих функциональность WWF. Похожий подход применяется в
Microsoft Windows Scripting Host (WSH) для обеспечения доступа к
внутренним объектам.

Архитектура WWF

Уровень Задача
Workflow Model Поддержка предопределенных типов моделей, действий
(activities) и соответствующего API
Runtime Layer Исполнение модели и поддержка управления ее жизненным циклом
Hosting Layer Интеграция с родительским процессом, предоставление
интерфейсов для ключевых процессов WWF, реализация которых
зависит от родительского процесса
Host Process Обеспечение объектов и функциональности, которые полностью
или частично доступны в WWF

Взаимодействие с родительским процессом осуществляется посредством
родительского уровня (Hosting Layer). Его интерфейсы для ключевых
процессов уровня исполнения WWF должны реализовать разработчики,
интегрирующие WWF в свои приложения. Microsoft также собирается
реализовать Hosting Layer для своих ключевых платформ, в частности
ASP.NET 2.0, SQL Server 2005 и Microsoft Office 12, соответственно,
вскоре в их рамках можно будет использовать workflow-модели.

Ядром технологии WWF является уровень исполнения (Runtime Layer),
который отвечает непосредственно за workflow-моделирование и содержит
необходимые для этого службы. Он же управляет жизненным циклом
(менеджмент состояний и активация) моделей, что позволяет исполнять
значительное количество моделей, не расходуя понапрасну системные
ресурсы в том случае, если часть из них находится в режиме ожидания.

На самом верху архитектуры WWF – уровень workflow-модели (Workflow
Model Layer). Он отвечает за поддержку различных типов моделей, содержит
предопределенные действия (activities) и реализует соответствующий API.

Также WWF включает встроенный визуальный редактор, благодаря которому
можно конструировать модели без программирования. Хотя при необходимости
они могут быть реализованы исключительно посредством программного кода,
поскольку фактически представляют собой обычные классы. Кроме того,
поддерживается возможность хранения описания моделей в XML-файлах, что
позволит применять разнообразный инструментарий.

Сама технология WWF изначально ориентирована на расширения. Отдельные
элементы workflow-модели – действия (activities) – выполнены в виде
компонентов, которые могут создаваться сторонними поставщиками с помощью
Visual Studio и WWF SDK. Помимо этого, WWF поддерживает динамическое
обновление моделей во время исполнения, а также позволяет встраивать
редактор моделей в собственные приложения.

Использование на практике

На текущий момент создавать и исполнять workflow-модели можно с
помощью соответствующего расширения для Visual Studio 2005, доступного
на сайте Microsoft.

После установки Visual Studio 2005 Extensions for Windows
Workflow Foundation в среде Visual Studio появляется возможность
создавать новые проекты на основе WWF

WWF стандартно поддерживает два типа моделей – последовательные
(sequential) и конечные автоматы (state machine). Первые представляют
собой набор последовательно исполняемых действий и в наибольшей мере
соответствуют классическим блок-схемам. Вторые позволяют моделировать
переходы между несколькими предопределенными состояниями, что особенно
актуально при конструировании сложных программных систем, например
управления бизнес-процессами.

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

В стандартной поставке WWF идет обширный набор доступных
действий для создания моделей разного уровня сложности

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

Для построения условий система предлагает визуальный конструктор,
позволяющий без программирования работать с бинарными операторами. Если
же требуется создать более сложное условие, то применяются традиционные
возможности одного из языков программирования – на уровне метода класса,
реализующего модель.

Несмотря на то что workflow-модели можно создавать и исполнять сами
по себе, полностью их потенциал раскрывается только при интеграции с
приложением, обеспечивающим объекты для манипуляции. Для того чтобы
модель получила доступ к внутреннему устройству родительского процесса,
как уже говорилось, необходимо реализовать определенные интерфейсы,
описанные в документации к WWF.

Модели также поддерживают режим отладки. Несмотря на определенные
проблемы в текущей версии, Microsoft обещает, что будут доступны точки
прерывания и пошаговое исполнение как в графическом представлении, так и
в виде программного кода.

Модели конечных автоматов хорошо подходят для решения
бизнес-задач

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

Также WWF хорошо подходит для формализации взаимодействия различных
исполняющих устройств, и даже человека и машины. Эта особенность
пригодится не только в бизнес-системах, но и в бытовой сфере. К примеру,
посредством WWF можно создать некий «конструктор», предназначенный для
управления логикой работы составляющих «умного дома» – от включения
нагревательных приборов до алгоритма уборки помещений с помощью
роботизированного пылесоса.

Последовательные модели в наибольшей степени схожи с
обычными блок-схемами

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

Одно из первых «показательных» применений WWF будет реализовано в
грядущей двенадцатой версии Microsoft Office. До сих пор для организации
полноценного корпоративного документооборота с помощью этого пакета
приходилось либо применять сторонние продукты, либо инвестировать
значительные усилия в разработку решений на базе Exchange и/или
SharePoint. Теперь базовые возможности обеспечения документооборота
войдут в стандартную поставку Microsoft Office, а создавать новые
сценарии движения документов опытные пользователи смогут самостоятельно
без привлечения программистов.

Реальные преимущества

Попробуем выделить некоторые достоинства новой технологи.

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

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

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

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

Перспективы

На наш взгляд, WWF имеет все шансы на успех и признание. Благодаря
активной поддержке Microsoft эта технология обещает стать стандартом (на
платформе Windows) при решении любых задач, требующих графического
представления логики исполнения и гибкой ее модификации. Естественно,
WWF не претендует на то, чтобы заменить привычное программирование, но
разнообразить и дополнить его сможет вполне.

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

Расширяемость платформы подразумевает появление значительного числа
компонентов, реализующих действия (activities), которые позволят
применять WWF для взаимодействия с широким спектром
аппаратно-программных решений – от составляющих «умного дома» до сложных
корпоративных платформ. Уже сейчас на официальном сайте WWF (windowsworkflow.net)
доступно для загрузки больше десятка различных компонентов от сторонних
поставщиков, и это несмотря на то, что сама технология WWF находится в
стадии разработки.

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

Источник: Компьютерное обозрение, 7 февраля 2006

Share feedback

Thanks for sharing your feedback!

This page will talk about the Windows Workflow Foundation technology.

What is it?

Windows Workflow Foundation (WF) is a framework technology which provides a level of abstraction for developing workflow based applications. Windows Workflow provides the core functionality you would need in a workflow such as flow control, persistence of workflow state, error management and instance management.

I addition to these core concepts of a workflows runtime requirements WF also provides an activity which is a unit of work which you can implement with out of the box activities or extension to your own custom requirements.

WF can be used directly by your own code to implement custom workflows or you could be using WF in directly within a product such as SharePoint or Dynamics CRM which lets you build something like a SharePoint workflow which under the hood use the WF framework.

It is probably fair to say uptake of WF by developers within their own custom applications has been limited and the main reason for that was that WF is a framework technology and you needed to host it inside your own application which would host the WF runtime as there wasn’t really an enterprise ready host available. That said since Microsoft started using the WF framework more in their own products this has given developers the option to create workflows at a higher level of abstraction with the confidence that there is a robust host for the workflow. In this space WF usage has increased significantly but also got developers more accustomed to the underlying framework and given developers more confidence to use it in custom applications too.

The below picture shows an example of how WF implements the process manager enterprise integration pattern.

image.png

Features

Windows Workflow Foundation has the following features:

Workflow Runtime

The workflow runtime is the runtime engine under which the WF workflow will execute. The runtime provides access to some of the features mentioned below but the runtime requires something to host it which can be your own code or an application such as SharePoint. The Workflow Runtime contains a class called WorkflowServiceHost which is the one which you would use to self host the runtime inside something like a Windows Service or custom application.

Persistence

Within the Workflow Runtime there are features which support persistence of the workflow. This means that when a workflow is to perform certain activities the state can be saved so there is a known recovery point the workflow can be returned to in the case of an error.

Correlation

Correlation is a way to relate a message and a workflow instance. This is important when interacting with applications outside of the workflow so that a message is able to be returned to the correct workflow instance.

Activities

An activity is a unit of work within a workflow. Your workflow may be comprised of a number of activities chained together in an order which represents the workflow.

Messaging Activities
Messaging Activities allow your to send and receive WCF messages in a workflow. This allows your workflow to interact with services outside of the workflow or to expose an endpoint that an application can use to make a call to your workflow.

Versioning

In .net 4.5 the WF runtime has introduced support for side-by-side versioning of workflows within a host. This means any in flight workflows can continue to work against the older versions of code after a new deployment of an updated workflow.

Patterns

WF provides some support for common workflow patterns such as a sequential workflow and a state machine workflow. This can make it easier to implement these specific patterns.

Strengths

The key strength of WF is that Microsoft is eating its own dog food and using WF as a core part of some of its most important products such as Sharepoint, Office 365, Dynamics CRM and its also into Azure BizTalk Services. This should give WF a strong future and some good investment. The fact that WF can be used at a higher abstraction layer in these products makes WF easier to use and more reliable than when you have to do the plumbing work your self when self hosting it.

Weaknesses

Originally there were 2 key weaknesses with WF:

  • Lack of an enterprise strength host
  • Lack of a super user focused authoring story
  • I think that these have both been addressed to a large degree by presenting workflow within the container of another product.
  • Lack of wide spread adoption except by product vendors

In addition to this Windows Workflow Manager is now being used by a lot of these products internally hot the hosting of Workflow and this is also something that you can use yourself to solve the problem of the Enterprise Host if you want to run Workflow for your self.

Dependencies

WF itself doesn’t need have a requirement for any dependencies other than the .net framework however to build an enterprise solution using WF your likely to need to combine it with other products to get all of the features you need. If your using WF indirectly within another product then this is likely to have been taken care of for you, but if your self hosting then Workflow Manager and SQL Server are two things you will probably need.

Costs

WF itself is free and part of the core .net framework. However be aware of the dependencies section above which may mean to deliver a WF based solution you need other supporting technologies which may have a cost associated with them.

The following technologies have a relationship or similarity to WF:

Microsoft Flow & Logic Apps

The core use cases for each product are:

  • Microsoft Flow is a way for super users to create their own workflows connecting systems and automating their daily tasks.
  • Logic Apps is a platform for a developer to build an enterprise ready workflow by using a designer and connecting applications
  • WF would be used by a developer to write a workflow in code with some designer support

The big difference is that Logic Apps and Flow come with a hosting environment and runtime platform for the workflows to execute on. With WF you would need to get or build a host.

WF and Flow have overlaps in that they could be used to create a workflow, but their use cases are very different.

Really a more likely comparison is that WF would be comparable to the underlying framework that Logic Apps and Flow use to implement their workflows. A bit like comparing a finished car with a car chassis.

BizTalk Server

BizTalk offers a feature called orchestration based on the XLANG framework in BizTalk. This is a more constrained workflow framework which is specific to BizTalk Server and is specific around working with the BizTalk message box. From an integration architects perspective there can be some confusion between the overlap of WF and BizTalk Orchestration. The key difference is that BizTalk provides a whole bunch of other features for integration solutions and using a BizTalk orchestration within that context is fine. WF offers a more open workflow framework which can be used for any kind of workflow scenario not just for integration, but WF does not have the other features which BizTalk offers which integration needs.

The BizTalk XLANG workflows are ideal for implementing complex EAI patterns where you need to do the common nasty work to integrate with line of business applications.

I think creating Service Based solutions where a business workflow was hosted in WF and could be called by BizTalk when it is making the transition from an EAI piece of work to a service based piece of work would be a good way to combine the use of these two products.

Windows Server AppFabric

AppFabric contains a WF hosting feature. This was used by some customers but has been superseeded by Workflow Manager. If you are starting a new project today with WF then Workflow Manager should be the place to look for self hosting options rather than AppFabric.

Windows Workflow Manager

Workflow Manager is now the recommended host if you want to host WF yourself and provides a lot of the features you may need which will save you custom development.

WCF

WCF is used along side WF for calling out to external systems from a workflow or to expose a workflow as a service

Recommended Positioning

I believe that WF is a technology that is pretty niche today. Some vendors (inc Microsoft) have used this under the hood in their products with plenty of success but there is a strong trend of those who have used WF in this manner to be looking to move away from WF to things like Flow and Logic Apps today. We can see examples of this in Dynamics and SharePoint.

I think for an enterprise company WF is there are some that have implemented their own solutions using WF but not a huge number.

I would also say at this stage WF is tied to the lifecycle of .net Framework. You are fine for quite a long time in terms of support for .net Framework including WF but some organisations will be migrating some services to .net core. Its not clear if .net core will include WF at this stage

Recommendation

Microsoft has decided not to convert WF to be part of .net core and has instead released it as a community supported open source project. (https://github.com/UiPath-Open/corewf)

Based on this farming off of the project it is not something I would look to invest in for new projects and would be looking to move my risk away from existing investments in WF.

The future for WF style implementations would seem to fit more likely with Logic Apps, Power Automate and Durable Functions depending on the type of use case you have.

  • Windows x64 доступна не вся оперативная память windows
  • Windows wipe free space windows 10
  • Windows xp black edition скачать торрент
  • Windows x64 promise sataii150 579 tm ide controller
  • Windows without loader что это