Сервис для
сео - оптимизаторов

Найди ошибки на сайте
Ошибки мешают продвижению сайта
Исправь ошибки на сайте
Сайт без ошибок продвигать легче
Получи новых клиентов
Новые клиенты принесут больше прибыль

SharePoint 2013 Online: доступ к свойствам профиля пользователя в рабочем процессе дизайнера

Хотя возможность доступа к полям профиля пользователя в рабочем процессе SharePoint Designer была встроенной функцией в версии 2010 года, в 2013 году это не так просто. Процесс на самом деле не такой сложный, но процесс разработки может быть болезненным, если вы не знаете точно, что делать. В этом посте будут подробно описаны необходимые шаги для извлечения свойств профиля пользователя в рабочем процессе SPD, а также освещены некоторые распространенные проблемы, с которыми вы можете столкнуться во время разработки.

Предоставление разрешений для приложений

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

1. Перейдите в меню «Параметры сайта» и выберите « Разрешения приложения сайта» в разделе «Пользователи и разрешения».

2. Скопируйте часть идентификатора приложения Workflow между | а также @.

а. Пример: i: 0i.t | ms.sp.ext | 3a71d4ce-8404-5b90-cba2-b1947066c17d @ 382a50da-3b5d-75d2-ab43-82686fd5e224

3. Используя учетную запись администратора клиента (см. Шаг № 5а для объяснения), добавьте /_layouts/15/appinv.aspx к URL-адресу сайта, на котором работает ваш рабочий процесс. В текстовом поле под идентификатором приложения введите скопированное значение и нажмите «Поиск». Это заполнит поля « Название» , « Домен приложения» и « URL-адрес перенаправления» :

Это заполнит поля « Название» , « Домен приложения» и « URL-адрес перенаправления» :

Вот важная часть: в поле XML запроса на разрешение введите следующий XML и нажмите кнопку «Создать»:

<AppPermissionRequests> <AppPermissionRequest Scope = "http: // sharepoint / social / tenant" Right = "Read"> </ AppPermissionRequest> </ AppPermissionRequests>

<AppPermissionRequests> <AppPermissionRequest Scope = "http: // sharepoint / social / tenant" Right = "Read"> </ AppPermissionRequest> </ AppPermissionRequests>

а. Рабочий процесс должен иметь разрешения уровня арендатора для доступа к службе профилей пользователей. Обратите внимание, что в приведенном выше примере предполагается, что рабочий процесс должен только читать данные профиля пользователя - в зависимости от вашей задачи вам может потребоваться изменить « Чтение на запись», «Управление» или « Полный контроль» .

б. Обратите внимание, что могут потребоваться другие разрешения на основе других требований вашего рабочего процесса. Для других разрешений введите дополнительные узлы <AppPermissionRequest> как часть XML. Для получения дополнительной информации о разрешениях приложения см. эта статья MSDN ,

5. На следующем экране будет подтверждено, что вы хотите доверять приложению Workflow. Убедитесь, что перечисленные разрешения включают «Разрешить приложению доступ к профилям пользователей: чтение», а затем нажмите «Довериться».

а. Из-за разрешения на уровне владельца требуется учетная запись администратора клиента, чтобы доверять приложению. В противном случае вы увидите такой экран:

Разработка рабочего процесса Разработка рабочего процесса

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

-

Повышение эффективности бизнес-процессов и совместной работы с Microsoft SharePoint

Ознакомьтесь с нашими консультационными услугами Microsoft →

-


В стороне от разрешений

Существует множество статей и постов в блогах, в которых обсуждается концепция рабочих процессов (и других приложений), которые могут работать с повышенными разрешениями. Несмотря на то, что существует множество отличных вариантов использования этой функции, получение данных из службы профилей пользователей не является одним из них, по крайней мере, для SharePoint Online (локальная версия может отличаться).

Насколько мне известно из моего исследования, рабочий процесс / приложение, которое обращается к службе профилей пользователей, должно выполняться в контексте пользователя, чья учетная запись SharePoint синхронизирована с Active Directory. Рабочий процесс с повышенными правами доступа, который пытается получить информацию о профиле пользователя, завершится с ошибкой, поскольку он работает сам по себе и не имеет соответствующей учетной записи AD.

Вернуться к рабочему процессу

Давайте предположим, что мы уже настроили переменную рабочего процесса UserName, которая хранит имя для входа целевого пользователя в формате i: 0 # .f | members | [email protected] (который, вероятно, будет получен из контекста рабочего процесса / списка, или, возможно, отдельный вызов веб-службы).

1. Сгенерируйте REST URL, который будет возвращать соответствующее свойство профиля пользователя. В этом примере мы будем извлекать отдел пользователя, задав URL-адрес следующим образом:

В этом примере мы будем извлекать отдел пользователя, задав URL-адрес следующим образом:

а а. Вардхаман Дешпанде имеет фантастическое сообщение в блоге здесь подробно описано, как получить свойства профиля пользователя с помощью REST API - я рекомендую вам проверить это.

2. Обратите внимание, что на приведенном выше снимке экрана я заменил одинарные кавычки вокруг имени пользователя на% 27. В противном случае вызов REST может привести к ошибке. Точно так же нам нужно закодировать | и # в части URL, которая теперь содержит имя пользователя для входа, используя% 7C и% 23. Добавьте следующие шаги в ваш рабочий процесс:

3 3. Используйте действие « Создать словарь», чтобы создать заголовки запросов, которые будут передаваться при вызове веб-службы. Добавьте следующие элементы в словарь:

ИмяТипЗначение

Accept String application / json; odata = подробный тип Content-String application / json; odata = подробный строка авторизации

а. Это (потенциально) большой «уловка»: для большинства других простых вызовов REST из рабочего процесса SharePoint Designer 2013 единственными необходимыми заголовками являются Accept и Content-Type . Для вызовов REST не из SharePoint, однако, один известная проблема является то, что вы должны явно добавить заголовок авторизации с пустым значением строки, чтобы избежать несанкционированного ответа. Это не должно быть проблемой для API профиля пользователя, но это вызвало некоторые проблемы для меня. Если вы получаете ответ «Несанкционированный», убедитесь, что в этом словаре есть заголовок «Авторизация».

4. Теперь мы можем сделать вызов API, добавив веб-сервис Call HTTP

5 5. Нажмите на текст «this», чтобы установить REST URL для переменной RestUrl :

6 6. Затем откройте свойства шага (переместите курсор в правую часть шага, щелкните появившуюся стрелку и выберите «Свойства»), задайте для RequestHeaders соответствующую переменную заголовков запроса и задайте для ResponseContent новую переменную словаря:

Затем откройте свойства шага (переместите курсор в правую часть шага, щелкните появившуюся стрелку и выберите «Свойства»), задайте для RequestHeaders соответствующую переменную заголовков запроса и задайте для ResponseContent новую переменную словаря:

а. При желании вы также можете установить переменные для содержимого запроса, заголовков ответа и кода состояния ответа. Как правило, рекомендуется проверять код ответа на вызов веб-службы, чтобы учесть возможные ошибки.

7. Добавьте элемент Get из словаря. Введите d / GetUserProfilePropertyFor для имени элемента (это будет другим, если вы вызываете другие конечные точки REST API профиля пользователя), ResponseContent в качестве словаря и новую строковую переменную с именем Department. для предмета.

Это оно Это оно! Теперь мы получили свойство профиля пользователя в рабочем процессе дизайнера SharePoint 2013. Если вы все еще сталкиваетесь с проблемами, я бы посоветовал вам зарегистрировать код ответа HTTP в списке истории рабочего процесса, чтобы быстро определить причину ошибки.

Заключение

Если у вас есть вопросы или комментарии по поводу этого сообщения в блоге или других аспектов разработки SharePoint 2013 Online, оставьте комментарий ниже, отправьте нам твит на @CrederaMSFT , или же связаться с нами онлайн.