Упаковка списка, сайта и рабочего процесса для повторного использования; развертывание пакета

Дата публикации исходной статьи: четверг, 30 августа 2012 г.

Всем привет. Меня зовут Джонг Хва Лим. Я работаю руководителем программы в команде разработчиков SharePoint Designer (SPD).Джонг Хва Лим

Сегодня я хотел бы познакомить вас с существенно переработанной по сравнению с выпусками SharePoint Designer 2010 и SharePoint Server 2010 функцией упаковки. В SharePoint Designer 2010 эта функция часто используется разработчиками для создания рабочих процессов в среде разработки и последующего их переноса в рабочую среду. К сожалению, в SharePoint Designer 2010 эта функция поддерживала только рабочие процессы, предназначенные для повторного использования.

В SharePoint Designer 2013, SharePoint Server 2013 и службе рабочих процессов Azure эта функция поддерживает все три типа рабочих процессов (списка, сайта и для повторного использования). И это здорово! Это значит, что вы больше не ограничены только возможностями рабочих процессов для повторного использования, и вам больше не требуется преобразовывать рабочий процесс списка к нужному типу.

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

Пример. Рабочий процесс списка "Заявление на отпуск" (Vacation Request)

Допустим, вы собираетесь создать рабочий процесс списка в среде разработки. В нем будет содержаться два списка — "Оставшаяся продолжительность отпуска" (Vacation) и "Заявление на отпуск" (Vacation Request). В первом хранится число оставшихся дней отпуска для каждого сотрудника, а второй используется сотрудниками для создания заявления на отпуск.

Создание списков (среда разработки)

Как уже было сказано, мы создадим два списка. Обратите внимание, что при этом мы используем параметры по умолчанию, определенные для элементов "Список задач" (Task List) и "Список журнала" (History List).

clip_image001

clip_image002

Создание рабочего процесса списка для списка "Заявление на отпуск" (Vacation Request)

После создания нужных списков необходимо с помощью SharePoint Designer подключиться к серверу, щелкнуть "Рабочий процесс списка" (List Workflow) и выбрать список "Заявление на отпуск" (Vacation Request). Откроется диалоговое окно, в котором вам необходимо ввести имя рабочего процесса и выбрать тип "Рабочий процесс SharePoint 2013" (SharePoint 2013 Workflow).

clip_image003

Определение логики и публикация рабочего процесса

Для создания рабочего процесса на полотне SharePoint Designer вы можете выбрать текстовый или визуальный (если у вас установлено приложение Visio Профессиональный) конструктор. В этой статье я использую текстовое средство и вскоре планирую выпустить дополнительную статью, посвященную визуальному конструктору.

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

  • Стадия "Проверка оставшихся дней отпуска" (Check if remaining vacation exists) — извлечение оставшегося числа дней отпуска для сотрудника, подавшего заявление, и его сравнение с числом, указанным в заявлении.
  • Стадия "Процесс утверждения" (Approval Process) — утверждение заявленной продолжительности отпуска.
  • Стадия "Утверждено" (Approved) — пересчет значения в списке "Оставшаяся продолжительность отпуска" (Vacation) после утверждения заявления.
  • Стадия "Отклонено" (Rejected) — отправка сообщения об отклонении заявления.
  • Стадия "Недостаточно оставшихся дней отпуска" (Insufficient vacation) — отправка сообщения о том, что сотрудник запрашивает отпуск, продолжительность которого превышает оставшееся число дней.

image

clip_image005

Обратите внимание на реализацию элементов подстановки, которые извлекают оставшееся число дней отпуска из списка "Оставшаяся продолжительность отпуска" (Vacation) или обновляют его.

clip_image006

clip_image007

При необходимости вы можете установить флажок "Автоматически запускать рабочий процесс при изменении элемента" (Start workflow automatically when an item is changed).

clip_image008

При публикации процесса автоматически создается сопоставление рабочего процесса и столбец состояния.

Упаковка списков в пакеты STP

Существует целый ряд способов обеспечить наличие на целевом сервере необходимых списков и схем, однако в большинстве случаев рекомендуется использовать пакеты STP. Итак, для упаковки списков "Оставшаяся продолжительность отпуска" (Vacation) и "Заявление на отпуск" (Vacation Request) мы с вами будем использовать пакеты STP.

Для этого вы можете использовать пользовательский интерфейс сервера или SharePoint Designer.

clip_image009

clip_image010

Далее откроется окно, в котором вы можете ввести имя пакета и при необходимости включить в него контент.

clip_image011

Обратите внимание, что, независимо от состояния флажка "Включить контент" (Include Content), рабочий процесс списка SharePoint 2013 будет упакован отдельно.

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

clip_image012

Щелкните эту ссылку, чтобы загрузить пакет для последующего использования.

После загрузки у вас должно быть два пакета STP — один для списка "Заявление на отпуск" (Vacation Request) и второй для списка "Оставшаяся продолжительность отпуска" (Vacations).

Упаковка рабочего процесса в пакет WSP

Чтобы упаковать рабочий процесс списка, перейдите на сводную страницу рабочего процесса и нажмите кнопку "Сохранить как шаблон" (Save as Template) на ленте.

clip_image013

Откроется следующее диалоговое окно.

clip_image014

В области навигации представлена библиотека "Материалы сайта" (Site Assets), в которой хранится пакет рабочего процесса списка. В некоторых случаях для отображения пакета требуется обновить страницу.

Чтобы сохранить пакет на локальном компьютере, нажмите кнопку "Экспортировать файл" (Export File) на ленте.

clip_image015

Развертывание пакетов STP

Откройте в браузере целевой сайт в рабочей среде и перейдите в раздел "Параметры сайта" (Site Settings). Меню "Шаблоны списков" (List templates) располагается в группе "Коллекции веб-дизайнера" (Web Designer Galleries).

clip_image016

Выберите команду "Отправить документ" (Upload Document) в меню "Файлы" (Files) и отправьте два пакета STP.

clip_image017

Создание списков с использованием развернутых шаблонов списков

Для создания этих двух списков вы можете использовать развернутые шаблоны списков. В меню навигации сервера выберите команду "Контент сайта" (Site Contents) и щелкните "Добавить приложение" (Add an app). Если все сделано правильно, вы увидите значки "Оставшаяся продолжительность отпуска" (Vacation) и "Заявление на отпуск" (Vacation Request).

clip_image018

Создайте списки "Оставшаяся продолжительность отпуска" (Vacation) и "Заявление на отпуск" (Vacation Request) с помощью соответствующих меню.

Развертывание и активация пакета WSP

Процесс развертывания пакета WSP несколько отличается от развертывания шаблонов списков STP. Этот пакет необходимо отправить в библиотеку "Решения" (Solutions) в группе "Коллекции веб-дизайнера" (Web Designer Galleries) в разделе "Параметры сайта" (Site Settings).

clip_image019

Далее откроется диалоговое окно с запросом на активацию пакета (решения).

clip_image020

Активация компонента

После активации решения в области "Управление возможностями сайта" (Manage site features) в разделе "Действия сайта" (Site Actions) страницы "Параметры сайта" (Site Settings) появится новый компонент.

clip_image021

Именно он нам и нужен. При необходимости вы можете найти этот рабочий процесс по имени, которое вы указали при его упаковке. Нажмите кнопку "Активировать" (Activate) и дождитесь, пока ее название не изменится на "Деактивировать" (Deactivate), либо пока не появится значок "Активно" (Active), который свидетельствует об активации компонента.

clip_image022

(Необязательный шаг) Открытие рабочего процесса в SharePoint Designer

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

clip_image023

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

image

(Необязательный шаг) Запуск рабочего процесса

После запуска рабочего процесса на сервере вы можете увидеть два столбца с одинаковым именем (столбцы состояния рабочего процесса). Это известная проблема. Один из столбцов поступает с исходного сервера в пакете STP, а второй создается на целевом сайте. Чтобы скрыть старый столбец, обновите представление списка.

Возможные альтернативы пакетам STP

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

Что произойдет при развертывании пакета рабочего процесса на сайте, на котором отсутствуют списки "Оставшаяся продолжительность отпуска" (Vacation) и "Заявление на отпуск" (Vacation Request)?

Произойдет сбой при активации компонента сайта.

clip_image025

В сообщении об ошибке приводится не очень много сведений, однако в журнале единой службы ведения журналов (ULS) вы найдете некоторые полезные данные об ошибке, например:

"Сбой при проверке XAML-файла рабочего процесса из-за следующих ошибок: не удалось создать "ListId" на основе текста "$ListId:Lists/Vacation;" (Workflow XAML failed validation due to the following errors: Failed to create a 'ListId' from the text '$ListId:Lists/Vacation;)

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

  • Откройте пакет SPD и удалите определение рабочего процесса, при активации компонента для которого произошел сбой.
  • Деактивируйте и удалите решение.
  • Отправьте и снова активируйте решение.
  • Активируйте компонент сайта.

После этого проблема должна быть решена.

Известные проблемы

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

  • Вам необходимо обеспечить соответствие относительных URL-адресов списков (например, "Lists/Vacation"). Даже если вы измените имя созданного списка, его URL-адрес, который формируется на основе исходного отображаемого имени, останется без изменений. Фактически, даже при упаковке рабочего процесса с указанием обновленного имени списка, на целевом сайте в этом процессе по-прежнему будет использоваться URL-адрес списка, основанный на его старом имени. Соответственно, при повторном создании списков на целевом сайте вам необходимо убедиться, что спискам изначально присваиваются исходные, а не обновленные имена. Это позволит сохранить целостность URL-адреса списка. После того, как список создан, вы при необходимости можете изменить его имя на обновленное.
  • Рабочие процессы с именами в формате Юникод или DBCS упаковываются в WSP-файлы, которым по умолчанию присваивается жестко заданное имя "WorkflowSolution.wsp".
  • Чтобы просмотреть обновленный список решений, необходимо вручную обновить страницу после перехода в раздел "Материалы сайта" (Site Assets).
  • Если на целевом сервере отсутствуют списки задач и журнала рабочих процессов, при щелчке рабочего процесса на странице "Параметры рабочих процессов" (Workflow Settings) может отображаться следующая ошибка. Она возникает в тех случаях, когда вы развертываете рабочий процесс на целевой сервер, на котором ранее не был создан ни один рабочий процесс. Чтобы обойти эту ошибку, создайте и опубликуйте фиктивный рабочий процесс с помощью SharePoint Designer. В этом случае будут автоматически созданы списки задач и журнала рабочих процессов. После этого вы можете открыть развернутый рабочий процесс в SharePoint Designer, настроить нужные параметры списков задач и журнала рабочих процессов и выполнить повторную публикацию рабочего процесса.clip_image026
  • Рабочий процесс Project упаковывается так же, как и стандартный рабочий процесс сайта. Однако чтобы обеспечить его надлежащую работу, также необходимо упаковать все объекты Project, включая расширенные таблицы страниц, стадии, настраиваемые столбцы и другие. См. также рекомендации по рабочим процессам Project, предлагаемые группой разработчиков Project.

Спасибо за внимание,

Джонг Хва

Это локализованная запись блога. Исходная статья находится по адресу Packaging List, Site, and Reusable Workflow and How to Deploy the Package