Автор:
-
Эндрю Мэй (Andrew May), Корпорация Майкрософт
Опубликовано: май 2006 года
Продукты и технологии: Microsoft Windows SharePoint Services версии 3.0, Microsoft Office SharePoint Server 2007
Общий обзор реализации рабочих процессов Windows Workflow Foundation в Microsoft Windows SharePoint Services версии 3.0; и расширение их возможностей в Microsoft Office SharePoint Server 2007 средствами Microsoft Office InfoPath 2007.
Оригинал статьи (EN)
На этой странице…
Введение в рабочие процессы
Архитектура рабочих процессов
Типы рабочих процессов
Состав рабочего процесса
Разметка рабочих процессов
Рабочие процессы в Windows SharePoint Services и SharePoint Server 2007
Создание рабочих процессов для SharePoint
Создание рабочих процессов для SharePoint в Visual Studio 2005
Создание рабочих процессов для SharePoint в SharePoint Designer 2007
Сравнение Visual Studio 2005 Designer for Windows Workflow Foundation и SharePoint Designer 2007
Структура рабочих процессов в Windows SharePoint Services
Пространство имен рабочего процесса
Заключение
Дополнительные источники
Введение в рабочие процессы
Microsoft Windows SharePoint Services предлагает пользователям устойчивую, гибкую рабочую среду для создания, совместной работы и хранения ценной деловой информации. С появлением Microsoft Windows SharePoint Services версии 3.0 и Microsoft Office SharePoint Server 2007 появилась возможность настраивать бизнес-процессы и подключать в них документы и элементы списков, хранящиеся на этих серверах.
Для программирования бизнес-процессов предложен механизм под названием workflows – рабочие процессы. Это удобный способ организации некоторой последовательности работ (действий), результатом которого является выполняемое компьютером представление рабочего процесса. Такой процесс может управлять практически любыми свойствами документов SharePoint Services, в том числе и их созданием/удалением. Рабочий процесс достаточно гибок и может включать в себя те или иные операции программных систем, так и действия пользователей, необходимые для выполнения бизнес-процесса.
Сложность или простота создаваемых рабочих процессов полностью зависит от требований бизнеса. Можно создавать рабочие процессы, инициируемые как пользователем, так и автоматически при возникновении какого-либо события, например при создании или изменении какого-нибудь документа.
Допустим, вам необходимо создать простой рабочий процесс, который отправляет документ нескольким пользователям на утверждение или согласование. Такой рабочий процесс должен включать в себя действия, которые выполняются системой, и иметь интерфейс для взаимодействия пользователя с этим процессом в установленном порядке. Например, когда документ готов к рассмотрению, Windows SharePoint Services может отправить сообщение по электронной почте выбранным пользователям. Эти пользователи затем должны иметь возможность сообщить SharePoint Services об окончании рассмотрения документа и, возможно, добавить свои комментарии. Платформа рабочих процессов, имеющаяся в Windows SharePoint Services версии 3.0 и расширенная в SharePoint Server 2007, позволяет моделировать сложные рабочие процессы и представить их конечным пользователям в легкодоступном, не перегруженном деталями виде, направляя каждый их шаг по ходу процесса.
Данная статья представляет собой краткий обзор реализации рабочих процессов в Windows SharePoint Services и расширенных возможностей в SharePoint Server. Здесь обсуждаются инструменты разработки для создания рабочих процессов в обеих средах и соответствующие возможности и преимущества этих средств.
Архитектура рабочих процессов
Функции рабочих процессов Windows SharePoint Services версии 3.0 опираются на Windows Workflow Foundation (WF) – компонент платформы Windows, обеспечивающий программную инфраструктуру и инструменты разработки и выполнения приложений, использующих рабочие процессы. WF упрощает процесс асинхронного программирования и создания приложений с длительным выполнением; отслеживанием и сохранением состояния. Обработчик среды выполнения WF управляет рабочими процессами, обеспечивает их продолжительную активность и сохранность при перезагрузке компьютера. Службы среды выполнения предоставляют такие функции, как транзакции и сохранение состояния для корректного и изящного управления обработкой ошибок.
Обработчик среды выполнения WF (WF run-time engine) предоставляет службы, необходимые каждому рабочему процессу, такие как установление последовательности, управление состоянием, возможности отслеживания и поддержка транзакций. Он также служит как конечный автомат, обеспечивающий загрузку и выгрузку всех рабочих процессов, а также управление их текущим состоянием. Любые контейнерам приложений или служб могут выполнять рабочие процессы посредством хостинга WF, то есть, загрузив WF внутри своего процесса.
Windows SharePoint Services служит хостом для обработчика среды выполнения WF. Вместо подключаемых служб из состава WF в SharePoint Services имеется собственная реализация следующих функций обработчика: транзакции, сохранение состояния, уведомления, роли, отслеживание и служба сообщений. Благодаря этому разработчики могут создавать решения на основе рабочих процессов, выполняющиеся в Windows SharePoint Services.
На рис. 1 показана архитектура рабочих процессов в SharePoint Services. Windows SharePoint Services размещает обработчик среды выполнения WF внутри своего процесса и обеспечивает собственную реализацию необходимых служб. Функции обработчика среды выполнения WF, равно как и функции Windows SharePoint Services по выполнению рабочих процессов, доступны разработчикам через объектную модель Windows SharePoint Services.
Рис. 1. Архитектура рабочих процессов в Windows SharePoint Services версии 3.0
В Windows Workflow Foundation также имеется графический конструктор Visual Studio 2005 Designer for Windows Workflow Foundation. Он является надстройкой, дополнением к системе разработки Microsoft Visual Studio 2005 и позволяет создавать собственные рабочие процессы и действия для них. Более подробная информация приведена в разделе Создание рабочих процессов для SharePoint в Visual Studio 2005.
В SharePoint Server используются функции работы с рабочими процессами Windows SharePoint Services версии 3.0, расширенные посредством интеграции с формами InfoPath и дополнительных действий для рабочих процессов. Более подробно это обсуждается в разделе Создание рабочих процессов для SharePoint в SharePoint Designer 2007.
Cреда выполнения Windows Workflow Foundation, конструктор Visual Studio 2005 Designer for WWF, а также пакет разработки программного обеспечения WWF SDK можно загрузить с сайта WF.
Теперь, после краткого описания инфраструктуры рабочих процессов в Windows SharePoint Services, давайте рассмотрим состав и структуру самих рабочих процессов WF. Затем мы рассмотрим различные инструменты разработки корпорации Майкрософт для создания решений на основе рабочих процессов для Windows SharePoint Services и SharePoint Server 2007.
Сохранение состояния рабочего процесса
Одной из важнейших служб, которые Windows SharePoint Services предоставляет обработчику среды выполнения WF, является служба сохранение состояния. Рабочие процессы, предусматривающие взаимодействие с пользователем, неизбежно занимают много времени. Даже в идеальных условиях человек работает медленнее компьютера, и если необходима работа с документами Microsoft Office, это может длиться несколько дней, а то и дольше. В качестве примера можно привести рабочий процесс, в котором документы направляются на утверждение рецензенту. Очевидно, что хранить в памяти все текущие рабочие процессы нецелесообразно. Накопление процессов, требующих для выполнения длительного времени, может привести к перегрузке системы.
Эта проблема решается следующим образом: когда рабочий процесс достигает стадии ожидания действий пользователя, Windows SharePoint Services выгружает экземпляр этого процесса из памяти и сохраняет его данные. Затем, когда после возникновения соответствующего события, например ввода данных пользователем, снова требуется запуск экземпляра рабочего процесса. Windows SharePoint Services воссоздает его, используя сохраненные данные, и данный экземпляр принимает и должным образом обрабатывает это событие.
Несколько экземпляров рабочих процессов могут выполняться одновременно, но, скорее всего, лишь часть из них будет находиться в памяти и использовать системные ресурсы.
Типы рабочих процессов
Рабочие процессы Windows Workflow Foundation делятся на две основные категории:
- Последовательные рабочие процессы представляют собой последовательности шагов, которые выполняются в определенном порядке вплоть до завершения последнего действия. Нужно отметить, что последовательные рабочие процессы не имеют жесткой последовательности действий, поскольку их выполнение может зависеть от внешних событий или предусматривать логическое ветвление. Следовательно, порядок действий может варьироваться.
- Рабочие процессы - конечные автоматы (state machines) представляют собой множества состояний, переходов и действий. Одно из состояний назначается начальным, а затем, в зависимости от происходящих событий, возможны переходы в другие состояния. Конечный автомат может иметь конечное состояние, которое определяет конец рабочего процесса.
В Windows SharePoint Services и SharePoint Server можно создавать рабочие процессы обоих типов.
Последовательные рабочие процессы
Наиболее удобное графическое представление последовательного рабочего процесса — это блок-схема, имеющая начало и конец с указанием порядка выполнения действий от начала к концу. Последовательные рабочие процессы могут содержать такие элементы как повтор, цикл и логические ветви, обязательно выполняемые в определенной последовательности, от начального действия к конечному.
Допустим, необходимо создать простой рабочий процесс, направляющий документ из Windows SharePoint Services на утверждение. В начале рабочего процесса система информирует адресата по электронной почте о получении документа на рассмотрение. Затем получатель знакомится с документом и информирует систему о том, что задача выполнена, а также о том, утвержден ли документ. В зависимости от ответа пользователя в рабочем процессе выполняется одна из двух ветвей алгоритма. При утверждении документа система переносит его в определенную библиотеку документов SharePoint, а затем отправляет сообщение по электронной почте всем членам группы с соответствующим уведомлением. Если же рецензент не утвердил документ, система информирует об этом автора документа. В любом случае рабочий процесс достигает своего конца и завершается. Этот рабочий процесс показан на рис. 2.
Рис. 2. Концептуальная схема последовательного рабочего процесса
Рабочие процессы - конечные автоматы
В отличие от последовательных рабочих процессов рабочие процессы - конечные автоматы не имеют заранее определенного порядка выполнения действий и могут не иметь конца. Вместо этого рабочие процессы этого типа определяют произвольное количество состояний, в котором может находиться элемент, и события, которые изменяют его состояние.
На рис. 3 представлен простой процесс публикации документа в виде рабочего процесса - конечного автомата. Рабочий процесс начинается при создании документа и заканчивается, когда состояние документа изменяется на “завершенное”. В промежутке, однако, документ не обязан двигаться по предопределенному маршруту, а переходит из состояния в состояние по ходу событий.
Рабочие процессы - конечные автоматы состоят из действий состояния (state activities). Каждое действию состояния соответствует состояние элемента. Каждое действие состояния может содержать инициализацию состояния, завершение состояния и один или несколько обработчиков событий. Каждый обработчик события обрабатывает одно событие. В ответ на обработку события может быть выполнено некоторое действие и переход в другое состояние.
Рис. 3. Концептуальная схема рабочего процесса - конечного автомата
Общим для рабочих процессов обоих типов является то, что каждый процесс можно разбить на наборы отдельных действий: действий, выполняемых системой, и действий, выполняемых пользователями. Их можно рассматривать как блоки при построении рабочих процессов. В рабочих процессах WF эти действия так и называются — activities.
Состав рабочего процесса
Ранее мы определили рабочий процесс как метод организации и выполнения набора задач (действий) и формирования выполняемого представления для рабочего процесса. Таким образом, каждый рабочий процесс WF состоит из набора связанных действий. Действие является основной единицей при моделировании, программировании, повторном использовании и выполнении в рамках Windows Workflow Foundation. Действие может выполняться как системой, так и пользователем. Например, система отправляет кому-нибудь сообщение по электронной почте или пользователь утверждает документ, подлежащий распространению.
По существу, приведенный пример последовательного рабочего процесса состоит из пяти действий:
- отправка сообщения рецензенту;
- утверждение или отклонение документа;
- перемещение документа в библиотеку документов “Утвержденные”;
- отправка сообщения электронной почты группе сотрудников;
- отправка сообщения электронной почты автору документа.
Действия также могут представлять собой логические операции, в которых проверяются условия и направление выполнения рабочего процесса, подобно программным операторам If Then или Do While.
У действий могут быть свойства, методы и события. Простые действия выполняют одну единицу работы, такую как “задержаться на один день” или “вызвать веб-службу”. Составные действия состоят из нескольких действий, как например условие с двумя ветвями. К действиям можно подключать обработчики ошибок или компенсаций. Это весьма целесообразно в случае составных действий.
По сути, сам рабочий процесс является составным действием, которое содержит все остальные собственные действия.
Таким образом, рабочий процесс можно рассматривать как набор действий, представляющий собой модель реального процесса. Реальные действия (пользователей или системы) соответствуют действиям модели на протяжении всего процесса. Рабочий процесс дает метод описания порядка выполнения и взаимосвязей реальных процессов различной продолжительности.
В Windows Workflow Foundation имеется набор готовых действий, а также возможно создание собственных. Пакет шаблонов Windows SharePoint Services для проектов рабочих процессов содержит многочисленные действия, предназначенные специально для использования в среде Windows SharePoint Services. Пакет также содержит необходимые рекомендации по программированию с использованием объектной модели Windows SharePoint Services. Аналогично, пакет шаблонов проектов для SharePoint Server настроен для использования в среде SharePoint Server. Более подробная информация приведена в разделе Создание рабочих процессов для SharePoint в Visual Studio 2005.
Разметка рабочих процессов
Каждый рабочий процесс WF может быть представлен следующей комбинацией файлов:
- XML-файл или файл разметки, содержащий декларативные метаданные рабочего процесса;
- файл разметки в сочетании со вспомогательным файлом кода, который содержит код, описывающий свойства и поведение рабочего процесса;
- файл или файлы с кодом, в которых содержится декларативная логика и поведение рабочего процесса.
Файл разметки написан на языке XAML, имеющем опубликованную схему, которой файл должен соответствовать; файлу присваивается расширение XOML.
Поскольку XAML имеет опубликованную схему, можно создавать XAML-файлы в любом текстовом или XML-редакторе. Однако инструменты для создания рабочих процессов, обсуждаемые в данной статье, Visual Studio 2005 Designer for Windows Workflow Foundation и Microsoft Office SharePoint Designer 2007, имеют графический интерфейс и автоматически генерируют соответствующий файл разметки.
Разработчик может объединять или определять декларативные метаданные от бизнес-логики рабочего процесса. По сути, парадигмы разделения кода в рабочих процессах WF и в ASP.NET сходны: декларативные метаданные хранятся отдельно от файла, который содержит бизнес-логику. То есть, файл разметки содержит метаданные для действий рабочего процесса, но свойства и поведение этих действий описываются в отдельном файле.
Разработчик может объединять или определять декларативные метаданные от бизнес-логики рабочего процесса. По сути, парадигмы разделения кода в рабочих процессах WF и в ASP.NET сходны: декларативные метаданные хранятся отдельно от файла, который содержит бизнес-логику. То есть, файл разметки содержит метаданные для действий рабочего процесса, но свойства и поведение этих действий описываются в отдельном файле.
Для рабочих процессов, созданных с разделением кода, информация сохраняется в файле разметки, как описано выше, и в файле одного из двух следующих типов:
- файл с кодом поддержки, описывающий бизнес-логику; код может быть написан на Microsoft Visual C# или Microsoft Visual Basic .NET;
- файл с правилами рабочего процесса, который содержит бизнес-логику в виде декларативных правил а не в виде кода.
Каждый рабочий процесс, созданный таким способом, является в действительности самостоятельным типом Microsoft .NET, состоящим из двух разделяемых классов, описанных в XOML-файле и файлах с кодом поддержки или правилами. При компиляции проекта рабочего процесса эти разделяемые классы совмещаются в одну сборку .Net. Такой подход применяется при создании рабочих процессов для Windows SharePoint Services или SharePoint Server в Visual Studio 2005 Designer for Windows Workflow Foundation.
Рабочие процессы, состоящие только из файлов с кодом, подвергаются тому же общему процессу компиляции — файлы с кодом компилируются в тип .NET.
Кроме того, можно компилировать рабочие процессы, состоящие исключительно из файлов разметки. Однако это необязательно, поскольку обработчик среды выполнения WF может загружать и выполнять нескомпилированные рабочие процессы такого типа. Такой подход применяется при создании рабочих процессов для Windows SharePoint Services или SharePoint Server в SharePoint Designer 2007.
Рабочие процессы в Windows SharePoint Services и SharePoint Server 2007
До сих пор мы обсуждали свойства рабочих процессов для любых приложений, которые работают с Windows Workflow Foundation. Теперь давайте более подробно рассмотрим реализацию рабочих процессов в Windows SharePoint Services и обсудим важные аспекты этой реализации.
Шаблоны и экземпляры рабочих процессов
В Windows SharePoint Services рабочие процессы, доступные на узле или в виде списка, называются шаблонами рабочих процессов, а рабочий процесс, который выполняется с конкретным документом SharePoint, называется экземпляром рабочего процесса. Таким образом, несколько экземпляров одного и того же рабочего процесса могут выполняться одновременно, каждый со своим документом или списком SharePoint. С одним документом SharePoint может одновременно работать несколько рабочих процессов.
В рабочих процессах могут использоваться документы или элементы списков. Рабочий процесс можно сделать доступным на веб-узле с помощью операции, называемой ассоциацией (association), которая обсуждается ниже.
Взаимодействие пользователя с Windows SharePoint Services посредством форм
С помощью рабочих процессов Windows SharePoint Services можно смоделировать множество бизнес-процессов, но существует несколько общих этапов, на которых пользователь может взаимодействовать с шаблоном или экземпляром рабочего процесса.
Для передачи пользователем информации рабочему процессу необходим интерфейс, реализуемый посредством форм. Добавление форм в рабочие процессы позволяет сделать их интерактивными и более гибкими. С помощью форм можно получать информацию от пользователей на заранее определенных этапах рабочего процесса, а также предоставить пользователям возможность взаимодействовать с задачами рабочего процесса.
Технически, в рабочих процессах WF можно использовать любые методы форм, если эти формы позволяют делать следующее:
- вызывать объектную модель Windows SharePoint Services;
- генерировать данные, которые необходимо передавать в объектную модель Windows SharePoint Services;
- получать и анализировать необходимые данные из объектной модели Windows SharePoint Services.
Любая информация, передаваемая форме при загрузке, форматируется как строка, также как и данные, которые форма передает в объектную модель Windows SharePoint Services версии 3.0, при отправке формы пользователем. Такая строка обычно является XML-кодом, однако возможно использование любого формата данных, который может быть представлен в виде строки, если форма генерирует и анализирует строки в этом формате.
Windows SharePoint Services поддерживает формы ASP.NET 2.0. Работа с этими формами зависит от инструмента, который использует ли разработчик для создания рабочих процессов: Visual Studio 2005 Designer for Windows Workflow Foundation или SharePoint Designer 2007. Кроме того, в SharePoint Server 2007 есть возможность интеграции форм Microsoft Office InfoPath с рабочими процессами. Формы InfoPath могут использоваться в клиентских приложениях Microsoft Office: Word, PowerPoint, Excel и InfoPath, а также в обозревателях, тем самым расширив возможности клиентского ПО. Более подробная информация о реализации форм рабочих процессов в приведена в разделах: «Формы ASP.NET в рабочих процессах Windows SharePoint Services», «Формы InfoPath в рабочих процессах SharePoint Server» и «Формы ASP.NET в рабочих процессах SharePoint Designer».
Несмотря на множество технологий, принцип работы форм одинаков. В заданной точке рабочего процесса Windows SharePoint Services выводит форму на ПК пользователя, который вводит информацию, и форму отправляет назад.
Будучи разработчиком рабочего процесса, вы решаете, что происходит при отправке формы пользователем. В большинстве случаев форма обращается к объектной модели Windows SharePoint Services и вызывает необходимый метод для передачи информации из формы соответствующему экземпляру рабочего процесса.
Строка с информацией может быть в любом формате, если анализ строки в данном формате предусмотрен и формой, и действием рабочего процесса. В большинстве случаев разработчик, вероятно, предпочтет формат XML.
Windows SharePoint Services передает строку с информацией механизму исполнения WF, оттуда - экземпляру рабочего процесса и, в конечном итоге, соответствующему действию экземпляра рабочего процесса, которое, в свою очередь, может прореагировать на это в соответствии со своими свойствами. На рис. 4 показано, как форма интегрируется в рабочий процесс.
Рис. 4. Графическая форма и рабочий процесс
В рабочих процессах Windows SharePoint Services используются три типа форм.
- Формы ассоциации и инициализации Эти формы ассоциации и инициализации предъявляются пользователям до начала рабочего процесса, для ввода значений параметров и другой информации.
- Формы изменения Пользователям можно дать возможность изменить параметры рабочего процесса во время его исполнения. Вы можете создать формы, которые позволят им задать эти параметры.
- Формы задач Можно задать собственные формы для задач в рабочем процессе в зависимости от типа задачи. Каждому типу задач рабочего процесса Windows SharePoint Services соответствует заданный тип информации; возможность использования формы указывается в определении типа содержимого для тех или иных задач.
Эти виды форм соответствуют заранее определенным этапам, на которых пользователи могут взаимодействовать с рабочим процессом. Далее мы обсудим эти этапы.
Точки взаимодействия пользователя с рабочим процессом
Давайте более подробно рассмотрим различные этапы, на которых пользователи могут взаимодействовать с рабочими процессами в Windows SharePoint Services и SharePoint Server.
Ассоциация
Ассоциация происходит, когда администратор узла делает шаблон рабочего процесса доступным для какой-нибудь библиотеки документов, списка или для информационного типа. На этом этапе администратор настраивает рабочий процесс для конкретной библиотеки документов, списка или типа содержимого, указывая следующую информацию о параметрах:
- уникальное имя рабочего процесса;
- метод запуска рабочего процесса по данному элементу: автоматически, при создании или изменении элемента, либо вручную; и какие роли, например “администратор” или “участник”, имеют право запускать рабочий процесс;
- список задач (Task List), в котором рабочий процесс может создавать задачи;
- список журнала (History list), в который рабочий процесс может записывать события.
Кроме того, разработчик может предоставить администратору узла дальнейшую настройку рабочего процесса, установив для процесса соответствующие параметры. Администратору может понадобиться указать параметры, значения, используемые по умолчанию, и другую информацию, необходимую при привязке процесса к элементам списка, библиотеке или типу содержимого.
Ассоциация рабочего процесса происходит вне самого процесса. Во время ассоциации рабочие процессы не запускаются. Вместо этого Windows SharePoint Services сохраняет информацию об ассоциации в специальной таблице ассоциаций рабочих процессов. Затем, когда экземпляр рабочего процесса запущен, Windows SharePoint Services использует данные ассоциации (и данные инициализации, если таковые есть) для задания параметров для нового экземпляра рабочего процесса.
Инициализация
Если ассоциация – это процедура предварительной привязки рабочего процесса, к тому или иному списку, библиотеке или типу содержимого, инициализация рабочего процесса происходит, когда он запускается по конкретному элементу SharePoint.
Если необходимо, пользователь предоставляет начальную информацию для рабочего процесса и данного документа, а затем запускает рабочий процесс.
Разработчик процесса может использовать инициализацию, чтобы дать возможность пользователям изменить или дополнить параметры ассоциации, заданные администраторами, или указать дополнительные параметры при запуске процесса по конкретному документу SharePoint. Не все рабочие процессы требуют инициализации. Более того, рабочий процесс, запускаемый автоматически, не может иметь параметров инициализации.
В проекте рабочего процесса Windows SharePoint Services в Visual Studio 2005 Designer for Windows Workflow Foundation имеется действие, которое работает как обработчик события при инициализации рабочего процесса. Это действие является первым действием в любом рабочем процессе Windows SharePoint Services.
Изменение
Пользователи могут изменять параметры или ход выполнения экземпляра рабочего процесса во время его работы. Разработчик может задать точки настройки рабочего процесса. Например, можно разрешить пользователю назначить задачу для другого пользователя или даже добавить новую задачу в рабочий процесс. Функции изменения рабочего процесса во время его выполнения, предлагаемые пользователям, называются изменениями (modifications).
В проекте рабочего процесса Windows SharePoint Services для Visual Studio 2005 Designer for Windows Workflow Foundation имеется действие, которое вносит изменения в рабочий процесс, а также действие, которое работает как обработчик события, когда изменение рабочего процесса разрешено.
Задачи
В Windows SharePoint Services действия в рабочих процессах, которые выполняются пользователями, называются задачами.
Разработчик рабочего процесса может выбрать схему задачи. Например, форма задачи может содержать следующее:
- название задачи;
- имя человека, которому задача поручена;
- статус задачи;
- приоритет задачи;
- срок выполнения задачи;
- ссылка на относящийся к задаче элемент (контента).
По желанию пользователь может редактировать задачу. Экземпляр рабочего процесса получает уведомления об изменениях в задачах и может отреагировать на них заранее запрограммированным образом.
В проекте рабочего процесса Windows SharePoint Services для Visual Studio 2005 Designer for Windows Workflow Foundation имеются действия, которые создают, удаляют или изменяют задачи, а также действия, которые работают как обработчики событий при создании, удалении или изменении задач.
Создание рабочих процессов для SharePoint
Корпорация Майкрософт предлагает два инструмента разработки рабочих процессов для Windows SharePoint Services: Visual Studio 2005 Designer for Windows Workflow Foundation и Office SharePoint Designer 2007. Поскольку создаваемые в них рабочие процессы обладают разными свойствами и возможностями, стоит изучить каждый из инструментов подробно.
На рис. 5 изображены различные действия по созданию, размещению, ассоциации и выполнению рабочего процесса в каждом из инструментов разработки. В целом, основные отличия между ними таковы:
- Создание рабочих процессов в Visual Studio 2005 Designer for Windows Workflow Foundation выполняется профессиональным разработчиком, создающим шаблон рабочего процесса, который можно развертывать на нескольких узлах и который содержит собственный код или действия. Затем разработчик передает шаблон администратору сервера с целью его размещения и ассоциации с документами.
- Рабочие процессы в SharePoint Designer, как правило, создаются не профессиональными разработчиками, а, например, веб-дизайнерами или другими специалистами, которым необходимо создать рабочий процесс для конкретного списка или библиотеки документов. В этом случае автор процесса ограничен в выборе действий списком безопасных элементов управления (Safe Controls List), а рабочий процесс нельзя добавить нестандартный код. Одним из этапов создания рабочего процесса будет являться развертывание шаблона непосредственной привязкой к списку или библиотеке документов.
Более подробное сравнение этих инструментов разработки приведено в главе «Сравнение Visual Studio 2005 Designer for Windows Workflow Foundation и SharePoint Designer 2007».
Рис. 5. Создание, развертывание и инициализация рабочих процессов
Создание рабочих процессов для SharePoint в Visual Studio 2005
Visual Studio 2005 Designer for Windows Workflow Foundation является надстройкой для Visual Studio 2005 и предоставляет средства для быстрой разработки рабочих процессов в графическом интерфейсе, знакомом разработчикам. Вместе с созданием рабочих процессов можно писать и код для них. Можно отметить следующие возможности инструментов:
- графическое рабочее поле на которое можно перетаскивать существующие шаблоны действий из окна Toolbox;
- средства разметки рабочего процесса;
- интеграция с окном Properties («свойства»), что позволяет настраивать свойства действий либо с помощью графического интерфейса, либо напрямую в файле кода поддержки, с их полной синхронизацией;
- отладка рабочих процессов путем присоединения к процессу Windows SharePoint Services, включая установку точек останова внутри процесса;
- возможность присоединять обработчики ошибок, компенсаций и событий, а также графически преобразовывать действия в комментарии.
Cреда выполнения Windows Workflow Foundation, конструктор Visual Studio 2005 Designer for WWF, а также пакет разработки WWF SDK можно загрузить с сайта WF.
Чтобы еще больше облегчить разработку рабочих процессов, корпорация Microsoft предлагает два набора шаблонов проектов для Visual Studio для Visual Studio 2005 Designer for Windows Workflow Foundation: один предназначен для создания рабочих процессов для Windows SharePoint Services, а второй — для SharePoint Server.
Шаблон проекта рабочих процессов для Window SharePoint Services содержит ссылку на пространство имен Windows SharePoint, и набор действий, созданных специально для среды Windows SharePoint Services. Эти действия позволяют выполнять часто используемые в среде Windows SharePoint Services функции, такие как создание, изменение, завершение и удаление задач SharePoint, отправка сообщений по электронной почте и действия, позволяющие изменять рабочие процессы.
В проект рабочего процесса для SharePoint Server входит все, что имеется в шаблоне проекта для Window SharePoint Services, а также ссылка на пространство имен SharePoint Server и дополнительные функции для управления задачами в среде SharePoint Server.
Разработка рабочего процесса в Visual Studio
Как правило, разработку процессов для Windows SharePoint Services или Office SharePoint Server средствами Visual Studio 2005 Designer for Windows Workflow Foundation можно разбить на несколько основных этапов.
- Создание рабочего процесса, включая файл кода поддержки, если таковой требуется, в Visual Studio 2005 Designer for Windows Workflow Foundation.
- Создание и публикация всех форм, которые необходимо использовать в рабочем процессе.
- Создание определений функции и файла определения шаблона рабочего процесса, который содержит информацию о сборке с рабочим процессом и связывает формы со сборкой.
- Компиляция файлов рабочего процесса в сборку .Net.
- Упаковка сборки и определения рабочего процесса и развертывание средствами Windows SharePoint Services.
- Отладка сборки рабочего процесса в Visual Studio 2005 Designer for Windows Workflow Foundation.
- Повторная компиляция и развертывание сборки рабочего процесса с целью исправления обнаруженных ошибок.
Описание этих шагов разработки приведено ниже.
Создание рабочих процессов в Visual Studio 2005 Designer for Windows Workflow Foundation
После выбора нового проекта рабочего процесса для Windows SharePoint Services или Office SharePoint Server, Visual Studio переключается в конструктор Visual Studio 2005 Designer for Windows Workflow Foundation (рис. 6). Это графический инструмент, позволяющий собирать рабочие процессы, перетаскивая различные действия из окна прототипов Toolbox.
Рис. 6. Интерфейс Visual Studio 2005 Designer for Windows Workflow Foundation
При перетаскивании какого-либо действия в процесс Visual Studio 2005 Designer for WWF показывает разрешенные позиции для этого действия, т.е. те места в процессе, где это действие может находиться. Невозможно поместить действие вне разрешенной позиции. Например, нельзя поместить действие Send («отправить») первым внутри ветви действия Listen («слушать»). Как показано на рис. 7, в Visual Studio 2005 Designer for WWFразрешенные позиции отмечены зеленым знаком плюс.
Рис. 7. Разрешенные позиции для действия рабочего процесса
По мере создания процесса Visual Studio 2005 Designer for Windows Workflow Foundation генерирует соответствующую разметку.
Кроме того, если вы используете разделение кода, в проекте рабочего процесса содержится файл кода поддержки, в котором можно определить бизнес-логику рабочего процесса. Между конструктором и кодом поддержки можно переключаться в любой момент.
Настройка свойств рабочего процесса
После добавления действия в процесс необходимо задать его свойства, чтобы оно выполняло допустимые в рамках процесса функции. Это можно сделать в стандартном окне Properties («свойства») Visual Studio. Тип данных, которые вы можете задать, зависит от типа данных, которое это свойство принимает: литеральные (текстовые) константы, переменные или имена методов.
Если нужно задать переменную для свойства, можно либо ввести имя переменной в окне Properties (в этом случае Visual Studio 2005 Designer for WWF автоматически объявляет эту переменную в файле кода поддержки), либо объявить эту переменную в коде, и затем выбрать ее в окне Properties.
Некоторые свойства действий по сути являются ссылками на методы в файле кода поддержки, которые должны соответствовать определенной сигнатуре. Как и в случае имен переменных, можно ввести имя метода в окне Properties и позволить Visual Studio 2005 Designer for WWF добавить сигнатуру метода в код поддержки, либо можно создать метод в файле кода поддержки, а затем выбрать метод в окне Properties.
Свойство того или иного действия можно связать со свойством другого действия.
Действия-обработчики
В рабочем процессе могут быть потенциальные ошибки. Важно отслеживать состояние рабочего процесса и сообщать об ошибках по мере их возникновения, чтобы разрешать проблемы правильно и с минимальными усилиями. Столь же важно поддерживать целостность набора тесно связанных действий: чтобы, если часть операции осуществилась, а часть — нет, был возможен откат операции целиком. Для обработки ошибок, управления состоянием процесса, устранения проблем можно использовать действия FaultHandlerActivity, TransactionScopeActivity, CompensationHandlerActivity и CancellationHandlersActivity.
Действие FaultHandlersActivity можно воспринимать как блок try в языке C, к которому можно присоединить упорядоченное множество действий. Эти обработчики исключений могут рассматриваться как блоки catch в языке С. Если исключение возникло в ходе выполнения составного действия, обработчик среды выполнения WF сравнивает это исключение с типами исключений, которые обрабатываются действиями FaultHandlerActivity. Если обработчик среды выполнения не находит соответствующего обработчика исключений, он передает исключение на следующий, более высокий комплекс действий, где процесс повторяется, и так далее, пока соответствующий обработчик не будет найден.
Действия EventHandlersActivity можно использовать для реагирования на события путем добавления обработчиков к действиям EventHandlerScopeActivity. Вообще говоря, эти обработчики событий весьма похожи на те, что применяются в языках С и Visual Basic .NET. Для создания обработчика события следует использовать действие EventDrivenActivity.
Действия CompensationHandlerActivity содержат код для компенсации или отката операций составных действий, в случае сбоя при их выполнении.
Формы ASP.NET в рабочих процессах Windows SharePoint Services
Как упоминалось выше, формы для Windows SharePoint Services можно создавать в ASP.NET. На соответствующих этапах выполнения рабочего процесса эти формы отображаются интерфейсом пользователя.
Формы присоединяются к рабочему процессу после его создания посредством инструкций, которые содержатся в XML-файле с определением шаблона рабочего процесса (template definition XML file). Схема определения шаблона рабочего процесса содержит элементы для указания URL-адресов различных типов форм, которые можно использовать в рабочих процессах Windows SharePoint Services. Это дает возможность создавать элементы форм для любого нестандартного изменения рабочего процесса, а также формы для различных типов задач SharePoint в рамках рабочего процесса.
В большинстве случаев сама сборка рабочего процесса не содержит ни информации, ни ссылок на сами формы. Разработчик может решать, какие формы будут использованы, просто редактируя XML-файл с определением процесса, не компилируя саму сборку процесса. Одним исключением из этого правила являются изменения в рабочем процессе. Каждой действие, которое может привести к изменению в рабочем процессе, должно содержать GUID формы для этого изменения.
Формы InfoPath Forms в рабочих процессах SharePoint Server
Помимо использования форм ASP.NET, SharePoint Server дает возможность расширить применение форм рабочих процессов и отображать их в клиентских приложениях Microsoft Office.
В рабочих процессах можно использовать формы InfoPath. InfoPath позволяет создавать симметричные формы, то есть формы, которые выглядят и работают совершенно одинаково и в веб-интерфейсе SharePoint Server, и в клиентских приложениях Microsoft Office, таких как Word, Excel или PowerPoint. Это расширяет возможности для пользователя – он может взаимодействовать с рабочим процессом из клиентского приложения, не переключаясь в веб-интерфейс SharePoint Server. А разработчику нет необходимости создавать две отдельные формы: одну для сервера, другую — для клиентского приложения, чтобы обеспечить пользователю удобную работу.
Подробнее о создании симметричных форм можно прочитать в справочных материалах Microsoft Office InfoPath 2007 или Office Online.
Для выполнения форм рабочих процессов SharePoint Server использует Office Forms Services, серверную среду выполнения для форм InfoPath. Office Forms Services работает с формами, созданными в клиентском приложении InfoPath и отображает их, используя платформу ASP.NET, которая выступает в качестве среды выполнения для формы. Эта среда предоставляет возможности редактирования форм, соответствующие возможностям клиентского приложения InfoPath.
Более подробная информация о Office Forms Services приведена в Microsoft Office SharePoint Server 2007 SDK.
.gif) | Примечание. Поскольку в клиентских приложениях Office 2007 – Word, PowerPoint и Excel – имеются функции для выполнения форм InfoPath, пользователю не нужно устанавливать приложение InfoPath, чтобы воспользоваться вышеперечисленными преимуществами интеграции. |
Отображение форм рабочих процессов InfoPath
В SharePoint Server используется единая базовая методика для отображения всех форм рабочих процессов InfoPath, в том числе форм ассоциации, инициализации, изменения и редактирования задач.
Когда пользователь щелкает ссылку для отображения формы рабочего процесса в интерфейсе SharePoint Server, загружается страница ASPX, содержащая веб-часть Office Forms Services Веб-часть преобразует форму InfoPath в формат ASP.NET и загружает ее. Когда пользователь отправляет эту форму, веб-часть получает данные формы и обрабатывает ее соответствующим образом.
Страницы ASPX, содержащие веб-часть Office Forms Services, входят в состав SharePoint Server.
Определение форм рабочих процессов InfoPath
Пользовательские формы точно так же задаются в определении шаблона рабочего процесса, а не в самом процессе. В большинстве случаев при этом требуется определить два элемента. Сначала следует задать URL-адрес для формы этого процесса (ассоциация, инициализация, изменение, и т.д.), указывающий на соответствующую ASPX-страницу в SharePoint Server. Затем следует добавить элемент, указывающий URN для собственной InfoPath-формы для этого типа процессов.
Отправка информации с помощью форм рабочих процессов InfoPath
Для того, чтобы ASPX-страница получала данные формы InfoPath, к ней необходимо добавить кнопку Отправить. Эта кнопка использует правило для отправки данных, задействовав соединение со страницей. Через это соединение данные возвращаются на ASPX-страницу автоматически при нажатии пользователем кнопки Отправить. Затем ASPX-страница выполняет синтаксический анализ данных и передает их в рабочий процесс или в библиотеку документов, в зависимости от требований.
Развертывание рабочих процессов
После определения рабочего процесса его можно скомпилировать как рабочий процесс или как действие.
По окончании компиляции можно использовать функцию SharePoint Features для упаковки и развертывания сборки рабочего процесса и всех вспомогательных файлов.
Упаковка функций используется для удобства развертывания и позволяет более компактно организовывать решения и функции Windows SharePoint Services. С помощью этого механизма упаковки разработчики могут упаковывать необходимые файлы решения, в том числе рабочие процессы, веб-части, списки и определения узлов, позволяющие упростить распространение и развертывание. Разработчики упаковывают требуемые файлы в WSP-файл, который фактически представляет собой архив с расширением CAB, содержащий манифест с перечислением его содержания. Более подробную информацию о компонентах SharePoint Features можно найти в справочных материалах пакета Microsoft Windows SharePoint Services 3.0 SDK.
Каждый внедряемый шаблон рабочего процесса должен содержать файл определения шаблона рабочего процесса. Это файл в формате XML, содержащий информацию, которая требуется Windows SharePoint Services для создания экземпляра и запуска рабочего процесса, а именно:
- имя, GUID и описание шаблона рабочего процесса;
- сборка;
- адрес URL (или URN для IP-форм) для всех собственных форм, которые были использованы в этом шаблоне рабочего процесса;
- необязательно: имена рабочих процессов, обработчиков рабочих процессов и сборок служб, которые используются при выполнении рабочего процесса;
- необязательно: перечисление вызываемых классов в этих сборках.
Сборки рабочих процессов должны устанавливаться в глобальный кэш блоков.
После развертывания на узле, рабочий процесс становится доступен в качестве шаблона, который администраторы SharePoint могут связать с библиотеками документов и списками на этом узле.
Отладка рабочих процессов
После развертывания сборки рабочего процесса можно выполнить его отладку, для этого нужно открыв проект рабочего процесса и подключиться к процессу Windows SharePoint Service w3wp.
Поскольку Visual Studio 2005 Designer for Windows Workflow Foundation является компонентом Visual Studio, можно использовать все функции отладки, доступные в Visual Studio. Например, можно установить контрольные точки в кода поддержки или в действиях рабочего процесса в конструкторе.
.gif) | Примечание. Для удобства отладки мы настоятельно рекомендуем разрабатывать шаблоны рабочих процессов на сервере, на котором вы планируете их развертывание. |
Visual Studio 2005 Designer for WWF не только поддерживает стандартные функции отладки Visual Studio, например, окна Breakpoints и Call Stack, но также содержит ряд других графических индикаторов, сообщающих информацию при отладке. Можно добавить контрольные точки в действие рабочего процесса при отладке сборки.
При пошаговом выполнении работают команды Step In, Step Out и Step Over.
В Visual Studio 2005 Designer for WWF не поддерживаются следующие типы отладки:
- отладка исключений времени исполнения в хостинговом процессе;
- отладка посредством выбора процесса в Диспетчере задач.
Дополнительную информацию об отладке с помощью Visual Studio 2005 Designer for Windows Workflow Foundation можно найти в справочных материалах пакета Windows Workflow Foundation SDK.
.gif) | Примечание. Cреда выполнения Windows Workflow Foundation, конструктор Visual Studio 2005 Designer for WWF, а также пакет разработки WWF SDK можно загрузить с сайта WF. |
Создание рабочих процессов для SharePoint в SharePoint Designer 2007
При создании рабочего процесса в Office SharePoint Designer 2007 он создается для определенного списка или определенной библиотеки документов Windows SharePoint Services, при этом выполняется привязка к данным. Разработчик использует готовый список действий для рабочего процесса и не использует код. Создаваемый рабочий процесс не компилируется как сборка, а хранится в виде исходных файлов до тех пор, пока Windows SharePoint Services не скомпилирует его при первом запуске.
Такой подход имеет ряд преимуществ:
- рабочие процессы можно быстро создавать и тестировать;
- поскольку рабочие процессы привязаны к конкретному списку, процесс развертывания становится намного проще;
- по той же причине проще решать вопросы безопасности;
поскольку рабочие процессы, созданные в SharePoint Designer, не компилируются в сборки, их можно развертывать на серверах, где административная политика запрещает установку пользовательских сборок.
.gif) | Примечание. Рабочие процессы, созданные в SharePoint Designer, конструируются из “безопасного списка” готовых действий, которые администраторы скорее всего разрешат выполнять на серверах. |
- рабочие процессы могут создаваться пользователями с меньшим опытом разработки, например веб-дизайнерами или другими специалистами.
Благодаря такому подходу рабочие процессы, созданные в SharePoint Designer, имеют несколько существенных отличий от созданных в Visual Studio 2005 Designer for Windows Workflow Foundation:
- рабочий процесс, созданный в SharePoint Designer, нельзя развернуть относительно нескольких списков; он работает только с тем списком, для которого создавался;
- рабочие процессы создаются для конкретных списков и ассоциируются с ним при разработке; таким образом, для рабочих процессов, созданных в SharePoint Designer, не требуется выполнение ассоциации;
- изменение рабочих процессов, созданных в SharePoint Designer, невозможно;
- в SharePoint Designer невозможно создавать рабочие процессы для типов содержимого.
Более подробное сравнение можно найти в разделе «Сравнение Visual Studio 2005 Designer для Windows Workflow Foundation и SharePoint Designer 2007».
Запуск рабочих процессов, созданных в SharePoint Designer 2007
Поскольку процессы, созданные в Office SharePoint Designer, не содержат нестандартного кода, они не компилируются и не развертываются в виде сборок. Вместо этого они хранятся в виде исходных файлов в Windows SharePoint Services и компилируются только при необходимости.
Рабочие процессы этого типа хранятся в отдельных библиотеках документов для каждого узла. В библиотеках документов каждый рабочий процесс, созданного в SharePoint Designer, хранится в отдельной папке. Эта папка содержит все исходные файлы процесса, в том числе:
- файл разметки рабочего процесса;
- файл с правилами рабочего процесса;
- ASPX-формы для любых нестандартных форм потока операций.
В Windows SharePoint Services содержится JIT-компилятор, который компилирует исходные файлы в рабочий процесс при первом запуске процесса на конкретном объекте. Windows SharePoint Services хранит скомпилированный рабочий процесс в памяти, точно так же, как серверы хранят скомпилированные ASPX-страницы, чтобы ускорить исполнение при следующем вызове.
Каждый раз при запуске процесса Windows SharePoint Services определяет, развертывался ли процесс как сборка или в виде исходных файлов. При обнаружении сборки рабочего процесса Windows SharePoint Services вызывает эту сборку для создания экземпляра процесса. Если процесс развертывается в виде исходных файлов, Windows SharePoint Services определяет наличие в памяти процесса, скомпилированного из этих исходных файлов. При обнаружении сборки Windows SharePoint Services вызывает ее для создания экземпляр процесса. В противном случае Windows SharePoint Services использует JIT-компилятор для компиляции исходных файлов в рабочий процесс, который затем вызывается для создания его экземпляра.
Процедура разработки рабочего процесса в SharePoint Designer 2007
Чтобы обеспечить возможность быстрого проектирования и развертывания рабочих процессов, процедура разработки процессов в SharePoint Designer значительно упрощена по сравнению с Visual Studio.
Как правило, при разработке рабочих процессов для Windows SharePoint Services или SharePoint Server с помощью SharePoint Designer необходимо выполнить следующие основные шаги.
- Создать собственный рабочий процесс, собрав его из готовых действий и условий SharePoint Designer и настроив необходимым образом.
- SharePoint Designer автоматически сгенерирует формы ASP.NET для инициализации рабочего процесса и, при необходимости, любых собственных задач SharePoint.
- При необходимости настроить формы рабочего процесса.
SharePoint Designer автоматически генерирует шаблон определения рабочего процесса и осуществляет развертывание процесса для указанного списка.
Описание этих шагов разработки приведено ниже.
Создание рабочих процессов в SharePoint Designer 2007
В SharePoint Designer используются мастера, позволяющие собирать последовательные рабочие процессы из готовых действий. Пользователи выбирают действия из готового списка и настраивают их с помощью интерфейса SharePoint Designer. это те же действия, что и в Visual Studio 2005 Designer for Windows Workflow Foundation.
В SharePoint Designer каждое действие представлено предложением, содержащим переменные, которые пользователь может настроить с помощью выпадающих меню и диалоговых окон. Также можно настроить условия, определяющие ход рабочего процесса.
При сохранении работы SharePoint Designer генерирует два файла, которые фактически описывают класс рабочего процесса:
- файл разметки рабочего процесса, описывающий действия, вошедшие в процессе;
- файл правил рабочего процесса, содержащий бизнес-логику, в форме декларативных правил, а не в виде кода.
Добавление собственных действий и условий
Как уже говорилось, авторы рабочих процессов в SharePoint Designer не могут создавать собственные действия для использования в рабочих процессах. Им доступны только действия и условия, указанные в списке Safe Controls List (утвержденном администратором сервера) в SharePoint Designer.
Условие представляет собой простую сборку со статическим методом, выполняющим оценку и возвращающим значение “истина” или “ложь”.
Разработчик может создавать собственные действия и условия и включать их в список безопасных элементов управления. Для этого необходимо:
- создать действие или условие, скомпилировать его в виде сборки со строгим именем и добавить его в глобальный кэш сборок;
- добавить действие или условие в список безопасных действий в файле web.config;
- В файле WSS.Actions в папке рабочего процесса добавить в предложение параметры и правила, для действий или условий в интерфейсе SharePoint Designer. Такая разметка определяет, как выглядит действие или условие, и как оно выполняется в интерфейсе, поскольку эта информация отсутствует в сборке действия или условия.
ASP.NET Forms в рабочих процессах SharePoint Designer
В SharePoint Designer для рабочего процесса можно задать этап инициализации. В этом случае автоматически генерируется форму инициализации с помощью ASP.NET в соответствии с указанными требованиями.
Аналогичным образом можно создавать собственные задачи SharePoint для своего рабочего процесса. В этом случае SharePoint Designer также автоматически генерирует форму ASP.NET для указанной задачи в соответствии с требованиями.
Эти ASPX-формы хранятся на узле SharePoint в исходных файлах рабочего процесса. Их можно открывать и настраивать.
.gif) | Примечание. SharePoint Designer 2007 не поддерживает интеграцию с формами InfoPath. |
Развертывание рабочих процессов в SharePoint Designer 2007
При создании рабочего процесса в Office SharePoint Designer 2005 он создается для определенного списка, и поэтому развертывание процесса намного проще, чем в Visual Studio 2005 Designer for Windows Workflow Foundation. SharePoint Designer осуществляет развертывание рабочего процесса относительно указанного списка.
В SharePoint Designer нет собственных функций отладки.
При удалении из списка процесса, созданного в SharePoint Designer, исходные файлы, из которых этот процесс был скомпилирован в памяти, не удаляются. Вместо этого удаляется ассоциация процесса со списком, а исходные файлы остаются на узле в библиотеке документов рабочих процессов.
В объектной модели Windows SharePoint Services рабочие процессы, созданные в SharePoint Designer, неотличимы от рабочих процессов, созданных с помощью Visual Studio 2005 Designer for Windows Workflow Foundation.
Сравнение Visual Studio 2005 Designer for Windows Workflow Foundation и SharePoint Designer 2007
В следующей таблице приведено подробное сравнение возможностей Visual Studio 2005 Designer for Windows Workflow Foundation и Office SharePoint Designer 2007, а также рабочих процессов, создаваемых с их помощью.
Табл. 1. Подробное сравнение возможностей | Visual Studio 2005 Designer for Windows Workflow Foundation | SharePoint Designer 2007 |
Позволяет создавать рабочие процессы для Windows SharePoint Services и SharePoint Server 2007. | Позволяет создавать рабочие процессы для Windows SharePoint Services и SharePoint Server. |
Наличие файла с кодом поддержка позволяет при необходимости программировать бизнес-логику на Visual C# или Visual Basic .NET. | Файл с кодом поддержки не предусмотрен; бизнес-логика декларируется в файле правил рабочего процесса. |
Генерирует файл разметки процесса. | Генерирует файл разметки процесса. |
Рабочий процесс создается в виде шаблона, который можно связать с различными узлами и списками документов. | Рабочий процесс создается для определенного списка, к которому привязывается во время разработки. |
Файл разметки рабочего процесса и файл кода поддержки компилируются в сборку. | Файл разметки, правила и вспомогательный файл хранятся на узле в нескомпилированном виде в определенной библиотеке документов. |
Шаблон рабочего процесса необходимо связать с каждым списком, для которого его планируется использовать. | Ассоциация с определенным списком выполняется при создании рабочего процесса. После этого ассоциация невозможна и не требуется. |
Могут использоваться различные интерфейсы. Например, ASP-формы для рабочих процессов Windows SharePoint Services, или InfoPath-формы для рабочих процессов SharePoint Server. | Автоматически генерирует формы ASP.NET, которые можно модифицировать. |
Возможны изменения рабочего процесса (modifications) пользователем. | Изменения рабочего процесса пользователем невозможны. |
Возможность использования собственных симметричных форм InfoPath, работающих в клиентских приложения MS Office. | Интеграция форм InfoPath недоступна. |
Позволяет создавать собственные действия. | Используются только готовые действия |
Упаковывает сборку и определение рабочего процесса как функцию SharePoint и развертывает на узле. | Развертывание выполняется автоматически, в привязке к определенному списку. |
При запуске рабочего процесса можно использовать форму для ввода информации пользователем и инициализации. | При запуске рабочего процесса можно использовать форму для ввода информации пользователем и инициализации. |
Можно использовать собственные формы для взаимодействия пользователей с задачами SharePoint. | Может использовать собственные формы для взаимодействия пользователей с задачами SharePoint. |
Поддерживается отладка в Visual Studio. | Пошаговая отладка не поддерживается |
Можно создавать последовательные рабочие процессы и процессы - конечные автоматы. | Может создавать только последовательные рабочие процессы. | |
Структура рабочих процессов в Windows SharePoint Services
На рис. 8 показано соотношение между различными элементами структуры рабочего процесса Windows SharePoint Services после создания шаблона, его внедрения и привязки к определенному типу содержимого, списку или библиотеке документов.
При ассоциации шаблона рабочего процесса с определенным типом содержимого, списком или библиотекой документов, набор параметров ассоциации, установленный администратором, записывается в таблицу ассоциаций рабочего процесса на уровне фермы. Запись в этой таблице связывает тип наполнения, список или библиотеку документов с определением шаблона рабочего процесса. В шаблоне содержатся ссылки на сборку рабочего процесса и на используемые формы.
SharePoint Designer 2007 автоматически записывает необходимые параметры ассоциации в таблицу ассоциаций рабочего процесса и генерирует и устанавливает определение шаблона рабочего процесса. Рабочий процесс также хранится в библиотеке документов рабочих процессов на уровне узла не в форме скомпилированной сборки, а в форме файлов разметки и правил.
Рис. 8. Структура рабочих процессов в Windows SharePoint Services
Пространство имен рабочего процесса
После развертывания решения рабочего процесса для обращения к нему и программного выполнения действий можно использовать объектную модель Windows SharePoint Services. Можно, например, ассоциировать рабочий процесс со списком или запустить его для конкретного документа.
Основные объекты Microsoft.Windows.SharePoint.Workflow
Функции рабочих процессов, содержащиеся в Windows SharePoint Services, находятся в пространстве имен Microsoft.Windows.SharePoint.Workflow.
Шаблоны рабочих процессов, развернутых на узле, перечислены в коллекции SPWorkflowTemplateCollection. Каждый объект SPWorkflowTemplate представляет шаблон рабочего процесса и содержит свойства, которые могут быть использованы для получения или записи информации о шаблоне, например данных для создания экземпляра, для запуска процесса, журнала или списка задач.
Для ассоциации рабочего процесса со списком или библиотекой документов, необходимо использовать метод SPList.AddWorkflowAssociation. Этот переопределяемый метод имеет четыре параметра:
- имя или идентификатор шаблона рабочего процесса;
- имя, которое вы хотите присвоить рабочему процессу;
- имя или идентификатор списка задач для рабочего процесса;
журнал рабочего процесса.
Как и при добавлении рабочего процесса посредством пользовательского интерфейса, этот метод добавляет столбец состояния рабочего процесса в список. Для удаления шаблона рабочего процесса из списка используйте метод SPList.RemoveWorkflowAssociation.
Внутренняя таблица ассоциаций процесса для узла находится в SPWorkflowAssociationCollection. Каждый объект SPWorkflowAssociation соответствует шаблону рабочего процесса, ассоциированному с определенным списком. В его свойствах содержится информация об ассоциации, например о том, включен ли процесс, был ли он изменен, с каким списком он связан, а также ссылку на объект SPWorkflowTemplate, являющийся базовым для данного объекта SPWorkflowAssociation.
Для рабочих процессов, хранящихся в виде нескомпилированных файлов, например для рабочих процессов, созданных в SharePoint Designer свойство SPWorkflowAssociation.IsDeclarative имеет значение True.
Объект SPWorkflowCollection содержит экземпляры рабочих процессов, выполненных или выполняющихся на указанном объекте списка. Каждый объект SPWorkflow содержит свойства, возвращающие информацию об экземплярах рабочего процесса, например о том, выполнен ли процесс, о его внутреннем состоянии и шаблоне. Кроме того, каждый рабочий процесс содержит коллекцию задач SPWorkflowTaskCollection.
Для вывода объекта SPWorkflowCollection, представляющего рабочие процессы, выполняющиеся на объекте из списка, используйте свойство SPListItem.Workflows.
Программное управление выполняющимися рабочими процессами
Пользователи взаимодействуют с рабочими процессами, работающими с отдельными объектами, через графический интерфейс Windows SharePoint Services. С помощью объектной модели Windows SharePoint Services можно централизованно управлять запущенными экземплярами рабочих процессов по всей ферме серверов. Для этого используется объект SPWorkflowManager который не имеет эквивалента в пользовательском интерфейсе. Доступ к нему осуществляется через объект SPSite, но его можно использовать для управления экземплярами рабочих процессов, запущенных на всей ферме. С помощью SPWorkflowManager можно выполнять следующие задачи:
- запуск, выполнение и отмена рабочих процессов;
- отображение всех процессов, выполняющихся на указанном элементе;
- удаление всех экземпляров рабочих процессов с указанным шаблоном, для конкретного списка документов;
- выполнение других операций по администрированию рабочих процессов.
Для запуска рабочего процесса на указанном элементе вручную (если не задан автоматический запуск этого процесса) используйте метод SPSite.WorkflowManager.StartWorkflow. В метод передается три параметра: имя элемента списка, имя шаблона рабочего процесса и событие, обусловливающее запуск.
На рис. 9 показана иерархическая модель объекта SPWorkflowManager и содержащихся в нем объектов.
Рис. 9. Иерархия объектов SPWorkflowManager
Заключение
Windows Workflow Foundation в составе Windows SharePoint Services версии 3.0 позволяет ассоциировать с объектами SharePoint собственные бизнес-процессы, которые могут быть как последовательными процессами, так и конечными автоматами. В процессах могут быть графические формы для взаимодействия с пользователем. В SharePoint Server 2007 эти возможности расширены за счёт интеграции с симметричными формами InfoPath, которые могут работать в клиентских приложениях MS Office, таких как Word, PowerPoint, Excel или InfoPath.
Корпорация Майкрософт предлагает два мощных инструмента создания рабочих процессов для Windows SharePoint Services. Visual Studio 2005 Designer for Windows Workflow Foundation представляет собой надстройку для Visual Studio 2005, позволяющую создавать шаблоны рабочих процессов с дополнительным кодом, которые можно развертывать на нескольких узлах и для разных списков документов. Для быстрого создания рабочих процессов из готовых действий и для определенных списков можно воспользоваться SharePoint Designer.
В обоих случаях, после развертывания рабочего процесса можно использовать объектную модель Windows SharePoint Services для обращения к запроса процессам и программного выполнения действий.
Дополнительные источники