- PVSM.RU - https://www.pvsm.ru -
При разработке решений SharePoint необходимо иметь возможность переносить рабочие процессы как в пределах фермы, так и с одной фермы SharePoint на другую. Типичный сценарий — перенос в продуктивную среду рабочего процесса, созданного в тестовой среде.
Рассмотрим различные подходы к решению данной задачи.
Этот вариант предусматривает размещение рабочих процессов в файлы решений SharePoint (*.wsp). Такой подход обеспечивает большУю гибкость и возможности по конфигурированию рабочих процессов, однако в некоторых случаях использование решений типа Farm Solution может быть небезопасно в плане работоспособности и производительности фермы SharePoint.
Подробно о разработке рабочих процессов в Visual Studio можно почитать по ссылке [1].
Инструмент SharePoint Designer 2013 предоставляет возможность сохранить рабочий процесс в файл шаблона. Сохранение рабочего процесса в файл шаблона называют упаковкой рабочего процесса. Полученный файл шаблона может быть импортирован на целевой сервер SharePoint, что исключает необходимость повторной разработки рабочего процесса на целевом сервере. Следует иметь в виду ограничения на типы рабочих процессов, которые могут быть экспортированы как шаблон:
Поскольку мы не планируем использовать устаревшую модель рабочих процессов, данное ограничение для нас не принципиально. Однако полученный файл шаблона представляет собой такой же пакет решения *.wsp как и пакет, генерируемый Visual Studio, а значит данный подход имеет те же недостатки, что и предыдущий, если выполнять развертывание упакованного рабочего процесса непосредственно.
Вместо непосредственного развертывания, мы воспользуемся файлом шаблона для извлечения метаданных (файл workflow.xaml), описывающих рабочий процесс. Эти метаданные мы сможем использовать для развертывания рабочего процесса с помощью альтернативных вариантов, описанных ниже.
Типовые задачи, связанные с переносом и развертыванием артефактов разработки SharePoint, побудили сообщество разработчиков создать удобные инструменты для их автоматизации. Один из таких инструментов — фреймворк SPMeta2 [2]. Это мощный инструмент для решения задач развертывания артефактов разработки SharePoint, позволяющий использовать написание кода на языке C# вместо декларативного описания (XML). SPMeta2 поддерживает множество сценариев работы [3], в том числе сценарии для работы с рабочими процессами.
К недостаткам развертывания через фреймворк можно отнести необходимость создания отдельного проекта для его использования даже в простых случаях, когда можно обойтись скриптами 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 позволяет выполнить задачу без использования сторонних инструментов.
Плюсы данного решения:
Минусы данного решения:
Скрипт сделан наиболее простым с целью демонстрации возможности развертывания рабочих процессов через 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
Нажмите здесь для печати.