Разработка рабочих процессов SharePoint с помощью средств разработчика Office Developer Tools для Visual Studio 2012
Официальный выпуск средств разработчика Office Developer Tools для Visual Studio 2012 ( загрузить ) содержит множество замечательных функций, которые помогут разработчикам программ для Office и SharePoint оперативно и эффективно создавать первоклассные приложения и решения для Office 2013 и 2010. В этом сообщении я представлю вам улучшения SharePoint 2013, связанные с разработкой рабочих процессов в Visual Studio 2012, а также приведу пошаговое руководство по созданию приложения рабочего процесса SharePoint (рабочий процесс утверждения и маршрутизации документов).
Приложения для SharePoint можно разрабатывать удаленно, причем они могут предназначаться как для размещения в SharePoint Online, так и локально. Вам больше не придется разрабатывать их прямо на сервере SharePoint! Более того, теперь вы можете публиковать приложения для рабочих процессов в Магазине Office и в каталоге приложений. На самом деле, вы также можете создавать рабочие процессы SharePoint 2013 в проектах решений, однако поверьте мне, что вам будет не хватать функции удаленной разработки, которая доступна только при создании приложений для проектов SharePoint.
В SharePoint 2013 рабочие процессы создаются на основе Windows Workflow Foundation в .NET Framework 4.5 и ориентируются на использование Workflow Manager 1.0. Ознакомьтесь с этой статьей MSDN, чтобы подробнее узнать об основных понятиях рабочих процессов SharePoint 2013.
Вы заметите следующие основные отличия, связанные с разработкой рабочих процессов:
- Разработка представляет собой не написание программного кода на C# или Visual Basic, а настройку рабочих процессов при помощи простых выражений Visual Basic или C#, которые могут иметь декларативную форму.
- Вместо шаблонов рабочих процессов Sequential (Последовательный) или State Machine (Конечный автомат) имеется единый шаблон рабочих процессов, который имеет тип State Machine по умолчанию. Чтобы перейти к типу по умолчанию, просто поменяйте местами действия Sequence и State Machine.
- Действия рабочих процессов выполняются с помощью SharePoint REST API.
Мы надеемся, что пользователи предварительных версий наших инструментов оценят простоту и легкость создания рабочих процессов в новом выпуске средств разработчика Office Developer Tools. Ниже приведены сведения о важных изменениях и дополнениях, которые влияют на существующие проекты рабочих процессов, созданные при помощи версии Preview 2 наших средств разработчика. С нетерпением ожидаем ваших отзывов!
Начало программы - программное обеспечение
Этот выпуск разработанных нами инструментов совместим с SharePoint 2013 RTM и с обновлением сервера SharePoint Server 2013 за март 2013 г. На самом деле, даже если вы не планируете заниматься разработкой для SharePoint в ближайшем будущем, вам все равно необходимо установить мартовское обновление на вашу ферму серверов SharePoint. Мы не рекомендуем продолжать использование версии SharePoint RTM. Разумеется, в случае использования SharePoint Online вам не нужно беспокоиться об обновлении вашего программного обеспечения SharePoint — оно обновляется постоянно. Если у вас нет SharePoint Online, вы можете получить бесплатный пробный доступ всего за несколько минут; выполнив вход на портал Office 365 для разработчиков, где размещен SharePoint Online.
Если вы планируете разрабатывать рабочие процессы SharePoint 2013 или устанавливать нестандартные, специально разработанные процессы, убедитесь в наличии установленного Workflow Manager на сервере SharePoint и не забудьте также установить накопительное обновление для Workflow Manager 1.0.
Разработку рабочих процессов лучше всего вести при помощи Visual Studio 2012 с пакетом обновления 2. Если вы еще не установили эту среду разработки, сначала установите Visual Studio 2012 RTM на вашем компьютере разработчика, а затем установите Visual Studio 2012 с обновлением 2 и обновление для .NET KB2750149.
Проекты рабочих процессов, созданные с помощью версии Preview 2 средств разработчика Office Developer Tools
Если вы ранее создавали проекты рабочих процессов SharePoint 2013 с помощью версии Preview 2 средств разработчика Office Developer Tools, то обратите внимание на следующие важные изменения платформы SharePoint 2013 и пакета средств разработки (SDK), представленные в мартовском обновлении.
- Улучшенная масштабируемость и более надежное обновление приложения для создания рабочих процессов.
- Новый формат добавления рабочих процессов и настраиваемых действий в приложения.
- Элемент Item Guid (Guid элемента) теперь устарел и заменен новым элементом под названием Item Id (ИД элемента), который является целым числом.
Что это означает? Действия LookupSPListItemGuid и GetCurrentItemGuid больше не поддерживаются, для их замены созданы события LookupSPListItemId и GetCurrentItemId. Все прочие действия, где использовался Item Guid, теперь содержат добавленный элемент Item Id, а элемент Item Guid скрыт. Ваши проекты, в которых используется Item Guid, будут работать как обычно (кроме случаев работы с очень крупными списками, в которых более 5 000 элементов). Это одна из причин проводимых изменений.
- Оптимизированная эффективность разработки и отладки рабочих процессов.
- Изменена ссылка в XAML-файле на сборку действий рабочего процесса, теперь она указывает на новую промежуточную сборку, создаваемую во время проектирования, вместо фактически используемой сборки действий SharePoint.
Созданные с помощью Preview 2 проекты рабочих процессов необходимо преобразовывать для обеспечения совместимости с официальной версией средств разработчика Office Developer Tools и мартовским обновлением SharePoint. Чтобы упростить этот процесс, воспользуйтесь средством CodePlex для преобразования ваших проектов (SharePoint 2013 Workflow Converter для Visual Studio 2012).
Пошаговое руководство: Создайте приложение рабочего процесса утверждения и маршрутизации документов
Давайте поэтапно рассмотрим процесс создания с чистого листа приложения для стандартного сценария рабочих процессов SharePoint, а именно — для утверждения и маршрутизации документов.
Сложность: средняя
Обзор рабочего процесса
- Экземпляр рабочего процесса создается сразу после обновления документа или библиотеки документов.
- Если документу присвоен статус Ready For Review (Готов к рецензированию), то рабочий процесс назначает ему задачу и отправляет уведомление по электронной почте утверждающему, который производит рецензирование.
- Если утверждающий производит утверждение документа, то рабочий процесс копирует документ в репозиторий опубликованных документов.
- Оригинальный документ остается в библиотеке Draft Documents (Черновики документов), но его статус должен быть окончательным, например, Published (Опубликован) или Rejected (Отклонен).
Давайте начнем.
1. С помощью Visual Studio 2012 создайте новый проект App for SharePoint 2013 (Приложение для SharePoint 2013), как показано на рис. 1.
2. Создайте две библиотеки документов с именами Draft Documents (Черновики документов) и Published Documents (Опубликованные документы) в качестве настраиваемых списков, как показано на рис. 2.
3. Добавьте следующие настраиваемые столбцы к библиотекам Draft Documents и Published Documents.
(Выполните следующее для каждой из библиотек.)
- Добавьте столбец со списком людей или групп и назовите его Approver (Утверждающий).
- Добавьте столбец со списком вариантов и назовите его Document Status (Статус документа). Затем добавьте к нему пять вариантов: Draft In Progress (Рабочий черновик), Ready For Review (Готов к рецензированию), Approved for Publishing (Утвержден для публикации), Rejected (Отклонен) и Published (Опубликован). (Чтобы задать варианты выбора в сетке свойств, раскройте свойство Type (Тип) и нажмите кнопку с троеточием ( … ) в свойстве Items (Элементы). Введите значения в появившееся диалоговое окно, как показано на Рис. 3.)
4. Создайте рабочий процесс SharePoint со списком с именем DocumentApprovalWorkflow, как показано на рис. 4 и 5.
5. Сопоставьте рабочий процесс с библиотекой Draft Documents, затем выберите создание нового списка журнала и нового списка задач рабочего процесса, как показано здесь.
6. Настройте тип сопоставления рабочего процесса для автоматического запуска при изменении элемента в библиотеке Draft Documents.
Примечание. Если необходимо изменить тип сопоставления рабочего процесса уже после создания рабочего процесса, это можно сделать в сетке свойств (см. рис. 8). (Свойства рабочего процесса появятся в сетке свойств при выделении элемента рабочего процесса в обозревателей решений)
7. Если проект рабочего процесса еще не открыт, откройте его двойным щелчком в Solution Explorer (обозреватель решений), чтобы открыть конструктор рабочих процессов. На рис. 9 представлен рабочий процесс.
8. А теперь давайте спроектируем логику рабочего процесса. Прежде всего, нам нужно знать статус документа.
-
- Чтобы получить это значение, перетащите действие LookupSPListItem с панели инструментов на полотно конструктора рабочих процессов. Это действие возвращает объект DynamicValue, содержащий набор свойств (пары «ключ-значение»), принадлежащих конкретному элементу списка SharePoint.
- Настройте действие LookupSPListItem так, чтобы оно возвращало свойства текущего элемента в текущем списке (см. рис. 10). Настройку свойств можно выполнить с помощью сетки свойств, выбрав действие на полотне. Используйте поля со списками в сетке свойств для выбора нужных параметров.
На поверхности действия LookupSPListItem перейдите по ссылке Get Properties (Получить свойства). Это позволит автоматически выполнить несколько действий (см. рис. 11). Создать переменную с типом DynamicValue и привязать ее к возвращаемому аргументу действия LookupSPListItem под названием Result (Результат). Это действие сохраняет свойства элемента списка в переменную. Добавить новое действие под названием GetDynamicaValueProperties и задать только что созданную переменную DynamicValue в качестве входного аргумента этого действия. Это действие позволяет получать значения отдельных свойств у переменной DynamicValue.
9. На поверхности действия GetDynamicValueProperties нажмите Define(Определить). Появится диалоговое окно, в котором можно выбрать получаемые свойства.
-
- В списке Entity Type (Тип объекта) выберите List Item of Draft Documents (Элемент списка черновиков документов), как показано на рис. 12.
- В сетке данных щелкните Create Property (Создать свойство), чтобы активировать поле со списком, содержащее свойства, доступные для элементов списка в библиотеке Draft Documents (Черновые документы). Затем выберите Document Status (Статус документа) в поле со списком.
Добавьте еще одну строку, снова нажав Create Property (Создать свойство) и выбрав Approver (Утверждающий) в поле со списком. Перейдите по ссылке Populate Variables (Заполнить переменные) в диалоговом окне. В результате для каждой строки будет автоматически создана переменная соответствующего типа данных, а также переменная Assign To (Назначение), см. рис. 13.
10. Создав необходимые значения элементов списка, можно проверить, имеет ли документ статус Ready For Review(Готов к рецензированию).
- На панели инструментов перетащите действие If на полотно конструктора рабочих процессов. (Подсказка: можно выполнить поиск по панели инструментов, чтобы быстро отфильтровать нужные действия.)
- Присвойте условию If значение DocumentStatus.Equals(“Ready For Review”) , как показано на рис. 14.
11. Если документ готов к рецензированию, то назначьте задачу утверждающему.
Перетащите на полотно с панели инструментов действие SingleTask и отпустите его в область Then (То) внутри действия If (Если), как показано на рис. 15.
Теперь назначьте задачу для утверждающего. Перейдите по ссылке Configure (Настройка) на поверхности действия. Появится диалоговое окно, в котором можно будет выполнить базовую настройку свойств задачи. Присвойте переменной Approver (Утверждающий) значение свойства Assigned To (Кому назначен), как показано на рис. 16. Чтобы сохранить изменения, нажмите OK.
Здесь вы заметите ошибку проверки действия SingleTask. Изучите это действие в сетке свойств и убедитесь, что у свойства AssignedTo есть ошибка. Наведите курсор мыши на имя свойства, чтобы увидеть подсказку, в которой говорится о типе данных свойства и содержится описание его использования. Мы видим, что это свойство ожидает значение String (Строка), однако переменная Approver имеет тип Int32 (см. рис. 17).
Чтобы исправить эту ошибку, добавьте строку .ToString() к строке Approver, как показано на рис. 18. Это можно было сделать прямо в показанном ранее диалоговом окне конфигурации. Итак, вы настроили базовую задачу для отправки назначенному лицу (в данном случае, утверждающему) электронных писем, уведомляющих его о наличии новых задач, которые ожидают действий.
12. Давайте поближе взглянем на сетку свойств для действия SingleTask. Прокрутив ее вниз, вы заметите автоматически созданные выходные переменные, которым присвоены значения Outcome и TaskItemId. Обратите внимание на имя переменной Outcome — оно должно быть похоже на outcome_0. Мы будем использовать эту переменную для проверки результатов выполнения задачи в ходе следующего действия, а точнее — для выяснения того, был ли документ утвержден или отклонен утверждающим. Примечание. Возвращаемый аргумент Outcome возвращает значение Int32, соответствующее номеру результата, выбранного утверждающим (0 для Approved (Утвержден), 1 для Rejected (Отклонен)). Эти значения доступны для выбора по умолчанию в столбце сайта SharePoint под названием Task Outcome (Результат выполнения задачи).
13. Чтобы проверить результат выполнения задачи, давайте добавим к рабочему процессу еще одно действие If, разместив его после действия SingleTask, но внутри области Then. Присвойте условию If значение outcome_0 == 0, чтобы проверить, была ли утверждена задача (см. рис. 19).
14. Если утверждающий утвердит задачу, давайте обновим статус документа, присвоив ему значение Approved For Publishing (Утвержден для публикации), и затем скопируем его в библиотеку Published Documents (Опубликованные документы); в противном случае присвоим документу статус Rejected(Отклонен).
- Добавьте действие UpdateListItem к области Then внутри этого действия If.
- Затем настройте его для обновления текущего элемента в текущем списке, выбрав соответствующие значения в полях со списками, которые размещены в сетке свойств.
- Далее нажмите кнопку с символом троеточия ( … ), чтобы просмотреть свойство ListItemPropertiesDynamicValue. Появится диалоговое окно, предоставляющее вам возможность указать свойство элемента списка, которое необходимо обновить.
- Присвойте параметру Entity Type значение List Item of Draft Documents с помощью поля со списком.
- В сетке данных нажмите Create Property (Создать свойство), чтобы активировать поле со списком, содержащее свойства, доступные для элементов списка в библиотеке Draft Documents (Черновые документы). Затем выберите Document Status (Состояние документа) в поле со списком и присвойте ему значение Approved For Publishing (Утвержден для публикации), как показано на рис. 20.
Добавьте действие CopyItem в область Then под UpdateListItem, как показано на рис. 21. Настройте его для копирования текущего элемента из текущего списка в библиотеку Published Documents (Опубликованные документы). Присвойте параметру Overwrite (Перезапись) значение true — допустим, что источником всех опубликованных документов является библиотека Draft Documents, и поэтому в списке не будет повторяющихся имен файлов.
Теперь добавим действие UpdateListItem в область Else (То). На этот раз мы хотим присвоить документу статус Rejected (Отклонен). На рис. 22 показан завершенный рабочий процесс.
Мы закончили создание рабочего процесса «Утверждение и маршрутизация документов SharePoint» с чистого листа. Теперь попробуйте повторить это самостоятельно и сообщите нам, что вы думаете о разработке рабочих процессов SharePoint 2013 с помощью средств разработчика Office Developer Tools для Visual Studio 2012!
В дальнейшем будут опубликованы другие примеры и онлайн-документация, посвященные разработке рабочих процессов SharePoint.
Удачи!
Грейс Кочави (Grace Kochavi)
Менеджер программы — группа разработчиков средств для Office и SharePoint
Дополнительная информация