Добавление рабочего процесса в надстройку с размещением в SharePoint
Это шестая часть серии статей, посвященной основам разработки надстроек SharePoint, размещаемых в SharePoint. Для начала вам следует ознакомиться со статьей Надстройки SharePoint и предыдущими статьями этой серии, представленными в разделе Знакомство с созданием надстроек SharePoint, размещаемых в SharePoint | Дальнейшие действия.
Примечание.
Рекомендуется использовать Microsoft Power Automate для приложений и автоматизации процессов. Начиная с Visual Studio 2022 шаблоны рабочего процесса удалены из проектов надстроек SharePoint. Дополнительные сведения см. в статье Руководство. Переход с классических рабочих процессов на потоки Power Automate в SharePoint
Совет
Если вы изучали предыдущие статьи этой серии о надстройках, размещаемых в SharePoint, то у вас уже есть решение для Visual Studio, которое можно использовать для работы с этой статьей. Кроме того, вы можете скачать репозиторий на веб-странице SharePoint_SP-hosted_Add-Ins_Tutorials и открыть файл BeforeWorkflow.sln.
Работая с этой статьей, вы добавите рабочий процесс в надстройку SharePoint "Employee Orientation" (Обучение сотрудников). Этот рабочий процесс уведомляет отдел кадров, что новый сотрудник готов заполнить документы, необходимые для отдела кадров.
Добавление рабочего процесса в надстройку
В обозревателе решений щелкните правой кнопкой мыши проект и пункты Добавить>Новая папка. Присвойте папке имя Workflows (Рабочие процессы).
Щелкните правой кнопкой мыши новую папку и выберите пункты Добавить>Новый элемент. Откроется диалоговое окно Добавление нового элемента для узла Office/SharePoint.
Выберите рабочий процесс и присвойте ему имя HR_Intake. Когда отобразится соответствующий запрос, выберите тип рабочего процесса, щелкните Рабочий процесс списка, а затем нажмите кнопку Далее.
На следующей странице мастера включите параметр Да, связать… и выберите в раскрывающихся списках указанные ниже значения.
- Библиотека или список, связываемые с рабочим процессом: New Employees in Seattle (Новые сотрудники в Сиэтле).
- Список журнала:
<create new>
. - Список задач:
<create new>
.
Нажмите кнопку Далее.
На последней странице мастера выберите только вариант автоматического запуска рабочего процесса при изменении элемента.
Нажмите кнопку Готово.
После этого набор "Инструменты разработчика Office для Visual Studio" выполнит указанные ниже действия.
- Создаст рабочий процесс HR_Intake в папке Workflow (Рабочий процесс) с дочерним файлом Workflow.xaml, который открыт в конструкторе рабочих процессов.
- Создаст экземпляр списка WorkflowTaskList, в котором создаются и обновляются задачи, входящие в рабочий процесс.
- Создаст экземпляр списка WorkflowHistoryList, в который записываются различные действия при выполнении рабочего процесса.
Разработка рабочего процесса
Рабочий процесс отправляет электронное письмо, чтобы уведомить сотрудника отдела кадров о том, что новый сотрудник прошел этап обучения Tour of building (Тур по зданию) и готов заполнить необходимые бумаги для отдела кадров. Любое изменение существующего элемента в списке New Employees in Seattle (Новые сотрудники в Сиэтле) активирует рабочий процесс, но рабочий процесс не делает ничего за исключением случаев, когда в поле Orientation Stage (Этап обучения) элемента списка указано значение HR paperwork (Документы для отдела кадров). Если указано это значение, электронное письмо будет отправлено сотруднику отдела кадров, и задача для этого сотрудника будет добавлена в объект WorkflowTaskList.
Примечание.
В разное время при проектировании рабочего процесса на одном или нескольких элементах конструктора рабочих процессов будет отображаться символ синего ромба восклицательным знаком . Он свидетельствует о временных ошибках. (Наведите указатель мыши на символ, чтобы увидеть краткое сообщение, или просмотрите подробные сведения в списке ошибок Visual Studio.) Это побочные эффекты незавершенности рабочего процесса. Они должны исчезнуть, когда вы полностью выполните эту процедуру.
Откройте область Панель элементов в Visual Studio, разверните узел SP — Список, а затем перетащите элемент LookupSPListItem в элемент Последовательность в конструкторе.
Выберите элемент LookupSPListItem. Его свойства отобразятся в области Свойства в Visual Studio. Задайте для свойств указанные ниже значения.
- ItemID: (текущий элемент).
- ListID: (текущий список)
- DisplayName: LookupCurrentNewEmployee.
Теперь областьСвойства должна выглядеть так, как показано ниже.
Рис. 1. Область свойств для LookupSPListItem
Чтобы сохранить внесенные изменения, щелкните в любом месте за пределами области. Теперь рабочая область конструктора должна выглядеть так, как показано ниже.
Рис. 2. Последовательность в конструкторе рабочих процессов
Щелкните ссылку Получить свойства для недавно переименованного действия LookupCurrentNewEmployee в конструкторе. В результате в последовательность будет добавлено действие GetDynamicValueProperties.
Выберите текст Определить... в действии GetDynamicValueProperties . Откроется диалоговое окно Свойства.
Задайте для параметра Тип сущности значениеЭлемент спискаlist_instance_name, где list_instance_name — Новые сотрудники в Сиэтле.
В столбце Путь щелкните верхнюю ячейку и в раскрывающемся списке выберите пункт Orientation Stage (Этап обучения).
Щелкните ячейку, расположенную ниже, и в раскрывающемся списке выберите пункт Employee (Сотрудник).
Щелкните ссылку Populate Variables (Заполнить переменные). В результате будут созданы переменные с именами OrientationStage и Title (Название). Кроме того, все значения будут назначены соответствующим полям в текущем элементе списка New Employees in Seattle (Новые сотрудники в Сиэтле). Теперь диалоговое окно Свойства должно выглядеть так, как показано ниже.
Нажмите кнопку ОК. Теперь рабочая область конструктора должна выглядеть так, как показано ниже.
Рис. 4. Конструктор рабочих процессов
Откройте область Панель элементов в Visual Studio, разверните узел Поток управления, а затем перетащите элемент If в нижнюю часть поля Последовательность под элементом GetDynamicValueProperties.
В поле Условие элемента If введите OrientationStage=="HR paperwork".
Откройте область Панель элементов в Visual Studio, разверните узел SP — Utilities, а затем перетащите элемент Электронная почта в поле Then действия If.
Выберите действие Электронная почта. В области Свойства области задайте необходимые значения для свойств Основной текст, Тема и Кому. В каждом случае нажмите кнопку выноски . . для свойства и используйте открывающийся редактор выражений , чтобы задать значение свойства, как показано в следующей таблице. Ниже указаны строковые выражения для языка C#, поэтому используйте кавычки, точно так, как показано в таблице. Здесь
Title
— переменная, которую вы назначили ранее полю Title (Название) элемента списка (в котором содержится имя сотрудника).- Тела:
Title + " is waiting in the lobby to fill out benefits and employment forms."
- Тема:
Title + " is ready for HR paperwork"
- Кому:
new System.Collections.ObjectModel.Collection<string>() {"your_O365_email"}
Замените заполнитель your_O365_email идентификатором, который вы используете для входа в свою учетную запись разработчика в Office 365, например
*alias*@*O365domain*.sharepoint.com
. Это строка на языке C#, поэтому она должна быть заключена в кавычки.- Тела:
Откройте область Панель элементов в Visual Studio, разверните узел Среда выполнения, а затем перетащите элемент TerminateWorkflow в поле Else действия If.
Выберите действие TerminateWorkflow и в области Свойства введите в поле Причина следующее значение (включая кавычки):
"Not at HR paperwork stage."
. Теперь конструктор должен выглядеть так, как показано ниже.Рис. 5. Конструктор рабочих процессов после завершения рабочего процесса
Запуск и тестирование надстройки
Нажмите клавишу F5, чтобы развернуть и запустить надстройку. Visual Studio выполняет временную установку надстройки на вашем тестовом сайте SharePoint и сразу же запускает ее. Кроме того, откроется консоль Узел тестовой службы диспетчера рабочих процессов.
Когда откроется страница надстройки, используемая по умолчанию, откройте один из элементов для редактирования и присвойте параметру Orientation Stage (Этап обучения) значение HR paperwork (Оформление документов для отдела кадров).
На консоли Узел службы тестирования отобразится индикатор того, что рабочий процесс запущен. Через короткое время появится индикатор завершения рабочего процесса. Ниже приведен пример.
Рисунок 6. Консоль узла службы тестирования
Примечание.
Если консоль узла службы тестирования не открывается, может потребоваться включить отладку рабочего процесса. Щелкните правой кнопкой мыши имя проекта в обозревателе решений и выберите пункт Свойства. Откройте вкладку SharePoint в области Свойства и установите флажок Включить отладку рабочего процесса.
Перейдите в папку "Входящие" (Outlook) вашей учетной записи разработчика в Office 365. В ней будет электронное письмо с темой "Employee is ready for HR paperwork" (Сотрудник готов к оформлению документов для отдела кадров), в котором вместо слова Employee (Сотрудник) будет имя сотрудника, элемент которого вы изменили. В тексте письма говорится: "Сотрудник ждет в зале ожидания, чтобы заполнить льготы и формы занятости". Ниже приведен пример.
Рис. 7. Сообщение, отправленное рабочим процессом
Совет
Если рабочий процесс начинается, но никогда не завершается и не отправляет электронное письмо, попробуйте завершить сеанс отладки и нажмите клавишу F5 еще несколько раз, прежде чем сделать вывод, что в коде что-то не так. Иногда проблема заключается в SharePoint Online. Если у вас по-прежнему возникают проблемы, попробуйте добавить тип контента с именем ListFieldsContentType, если его еще не существует, в раздел ContentTypes файла schema.xml. Ниже приведен пример части кода.
<ContentType ID="0x0100781dd48170b94fdc9706313c82b3d04c" Name="ListFieldsContentType" Hidden="TRUE"></ContentType>
Скопируйте весь раздел FieldRefs типа контента NewEmployee в этот новый тип контента. Сохраните проект, отзовите его и еще раз нажмите клавишу F5.
Чтобы завершить сеанс отладки, закройте окно браузера или остановите отладку в Visual Studio. При каждом нажатии клавиши F5 Visual Studio будет отзывать предыдущую версию надстройки и устанавливать ее последнюю версию.
Вы будете работать с этой надстройкой и решением Visual Studio при изучении других статей, поэтому при перерывах в работе рекомендуем отзывать надстройку. В обозревателе решений щелкните проект правой кнопкой мыши и выберите пункт Отозвать.
Дальнейшие действия
В следующей статье этой серии вы добавите пользовательскую страницу в надстройку SharePoint, размещаемую в SharePoint.