- PVSM.RU - https://www.pvsm.ru -

Перенос и развертывание рабочих процессов SharePoint 2013

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

Рассмотрим различные подходы к решению данной задачи.

Разработка рабочих процессов в Visual Studio

Этот вариант предусматривает размещение рабочих процессов в файлы решений SharePoint (*.wsp). Такой подход обеспечивает большУю гибкость и возможности по конфигурированию рабочих процессов, однако в некоторых случаях использование решений типа Farm Solution может быть небезопасно в плане работоспособности и производительности фермы SharePoint.
Подробно о разработке рабочих процессов в Visual Studio можно почитать по ссылке [1].

Создание пакета, содержащего рабочий процесс, в SharePoint Designer 2013

Инструмент SharePoint Designer 2013 предоставляет возможность сохранить рабочий процесс в файл шаблона. Сохранение рабочего процесса в файл шаблона называют упаковкой рабочего процесса. Полученный файл шаблона может быть импортирован на целевой сервер SharePoint, что исключает необходимость повторной разработки рабочего процесса на целевом сервере. Следует иметь в виду ограничения на типы рабочих процессов, которые могут быть экспортированы как шаблон:

  • Все типы рабочих процессов платформы SharePoint Workflow 2013
  • Только повторно используемые (reusable) рабочие процессы платформы SharePoint Workflow 2010.

Поскольку мы не планируем использовать устаревшую модель рабочих процессов, данное ограничение для нас не принципиально. Однако полученный файл шаблона представляет собой такой же пакет решения *.wsp как и пакет, генерируемый Visual Studio, а значит данный подход имеет те же недостатки, что и предыдущий, если выполнять развертывание упакованного рабочего процесса непосредственно.
Вместо непосредственного развертывания, мы воспользуемся файлом шаблона для извлечения метаданных (файл workflow.xaml), описывающих рабочий процесс. Эти метаданные мы сможем использовать для развертывания рабочего процесса с помощью альтернативных вариантов, описанных ниже.

Экспорт workflow.xaml с помощью SharePoint Designer

  1. Откройте с помощью SharePoint Designer сайт, на котором развернут рабочий процесс, подлежащий переносу.
  2. Выберите в боковой панели «Объекты сайта» пункт меню «Рабочие процессы».
  3. Выберите нужный рабочий процесс в списке и нажмите на элемент ленты «Сохранить как шаблон», расположенный в группе «Управление». Появится сообщение: «Шаблон сохранен в библиотеке „Активы сайта“.».
  4. Выберите в боковой панели «Объекты сайта» пункт меню «Все файлы». В списке в области основного просмотра выберите элемент с именем «Site Assets». Нажмите F5, чтобы обновить представление.
  5. Выберите элемент с именем "<имя рабочего процесса>.wsp" и нажмите на элемент ленты «Экспорт файла», расположенный в группе «Управление». Выберите путь для сохранения файла.
  6. Откройте в Проводнике (или другом файловом менеджере) папку, в которую был сохранен файл *.wsp. Переименуйте файл, изменив расширение с «wsp» на «cab».
  7. Откройте файл после переименования. Выполните извлечение файла «workflow.xaml» из содержимого архива. Это можно сделать простым перетаскиванием (drag-and-drop) файла в каталог для извлечения.

Использование фреймворков для развертывания (Provision Frameworks)

Типовые задачи, связанные с переносом и развертыванием артефактов разработки SharePoint, побудили сообщество разработчиков создать удобные инструменты для их автоматизации. Один из таких инструментов — фреймворк SPMeta2 [2]. Это мощный инструмент для решения задач развертывания артефактов разработки SharePoint, позволяющий использовать написание кода на языке C# вместо декларативного описания (XML). SPMeta2 поддерживает множество сценариев работы [3], в том числе сценарии для работы с рабочими процессами.
К недостаткам развертывания через фреймворк можно отнести необходимость создания отдельного проекта для его использования даже в простых случаях, когда можно обойтись скриптами PowerShell.

Перенос рабочих процессов с помощью скриптов PowerShell

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

Для переноса рабочих процессов списка разработан скрипт PowerShell, доступный по ссылке [4]. Скрипт использует объект класса WorkflowServicesManager [5] для выполнения операций над рабочими процессами.

Для развертывания рабочего процесса с помощью скрипта необходимо получить файл workflow.xaml, содержащий описание рабочего процесса. Выше был описан способ получения файла workflow.xml с помощью SharePoint Designer. Однако проще сделать с помощью функции ExtractWorkflowXaml, определенной в скрипте. Параметры функции:

Параметр Описание
$url URL узла, ассоциированного с сервисом Workflow, который содержит рабочий процесс
$wf_displayname Имя рабочего процесса
$workflow_xaml_path Путь к файлу для сохранения

Пример использования функции:
ExtractWorkflowXaml "http://mysp.com/source" "Test workflow" "C:spmetadataworkflow.xaml"

Для развертывания рабочего процесса необходимо вызвать функцию DeployListWorkflow. Параметры функции:

Параметр Описание
$workflow_xaml Путь к файлу .xaml
$url URL узла, ассоциированного с сервисом Workflow, для которого нужно создать рабочий процесс
$list_name Имя списка, с которым должен быть ассоциирован рабочий процесс
$wf_displayname Имя рабочего процесса
$overwrite Признак необходимости перезаписи определения рабочего процесса, если он уже существует

Пример использования функции:
DeployListWorkflow "C:spmetadataworkflow.xaml" "http://mysp.com/sandbox" "Test Workflow List" "My New Workflow" $true

Перенос рабочих процессов с помощью скриптов PowerShell позволяет выполнить задачу без использования сторонних инструментов.
Плюсы данного решения:

  • Не нужно создавать проект в Visual Studio и писать код, вызывающий функционал фреймворков для развертывания, достаточно простого вызова функции скрипта PowerShell.
  • Возможность извлекать метаданные рабочего процесса простым вызовом функции скрипта PowerShell.
  • Логирование действий в процессе развертывания позволит легко локализовать и исправить ошибку.

Минусы данного решения:

  • Скрипт использует серверную объектную модель SharePoint (SSOM), а значит должен выполняться на сервере фермы SharePoint. Для работы скрипта посредством клиентской объектной модели необходима модификация скрипта.
  • Скрипт настраивает лишь базовые атрибуты рабочего процесса, необходимые для его функционирования. Для работы с дополнительными атрибутами необходима модификация скрипта.
  • В текущей версии скрипт предназначен для развертывания рабочих процессов списка. Для работы с другими типами рабочих процессов необходима модификация скрипта.

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

Автор: DarkGenius

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/powershell/160434

Ссылки в тексте:

[1] ссылке: https://msdn.microsoft.com/ru-ru/library/office/jj163199.aspx

[2] SPMeta2: http://docs.subpointsolutions.com/spmeta2/

[3] сценариев работы: http://docs.subpointsolutions.com/spmeta2/scenarios/

[4] ссылке: https://github.com/DarkGenius/sp-powershell/blob/master/workflows/deploy_workflow.ps1

[5] WorkflowServicesManager: https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflowservices.workflowservicesmanager.aspx

[6] Источник: https://habrahabr.ru/post/306228/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best