2010-11-10 11 views
2

У меня есть форма InfoPath, которую наполнитель должен указать людям. Затем рабочий процесс назначает задачи этим людям. То, что я ищу, является сборщиком людей, как то, что SharePoint имеет для полей пользователя, но которое я могу использовать в InfoPath. Я уже разработал форму, чтобы сделать это, когда наполнитель может ввести имя или адрес электронной почты, и форма будет отображать результаты из группы site.allusers.Поиск конкретного пользователя SharePoint программно

Проблема в том, что, если человек, который необходимо добавить в форму, до этого никогда не обращался к этому конкретному семейству сайтов. Их учетная запись не будет указана в списке AllUsers.

Где в объектной модели я могу найти пользователя, который может проходить проверку подлинности с помощью SharePoint?

ответ

1

Почему бы просто не использовать OTB в InfoPath и настроить его, чтобы указать на вашу среду SharePoint?

http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-picker-to-an-infopath-form/

Если ваш работает MOSS с интеграцией AD, то он должен автоматически получать все, что находится в вашей области, если AD синхронизация включена.

+0

Фактически я только что открыл этот контроль сегодня. Забавно, как легко пропустить такие вещи, если вы не поймете, что поиск в Google совершенно прав. –

1

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

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

Так в основном, это зависит от того, как аутентификация настроена на вашем SharePoint сервере:

Если вы используете FBA, то пользователи, которые могут проходить проверку подлинности с SharePoint должен существовать в базе данных SQL где-то. Membership.Provider даст вам крючок для вашего провайдера членства FBA (будь то SqlMembershipProvider или что-то еще). Затем вы можете использовать методы, такие как

Membership.Provider.GetUser(username) 

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

Если вы используете проверку подлинности Windows, вам нужно будет найти в своем AD, чтобы найти потенциальных пользователей. Объект DirectoryEntry - это то, что вам нужно. Я полагаю, что только пользователи из определенной группы AD могут получить доступ к SharePoint? Если это так, то изолируйте эту группу с объектом DirectoryEntry, пройдите через пользователей, и у вас будет источник данных для сборщика людей.

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

Когда кто-то выбирает пользователя, которого нет в SharePoint, вам, вероятно, придется создать его с помощью кода. Безопасный способ сделать это с помощью SPWeb.EnsureUser.

Проверяет, является ли принадлежит указанное имя Войти действительному пользователю веб-сайта , и если имя Логин делает уже не существует, добавляет его на веб- site.site.

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

 Смежные вопросы

  • Нет связанных вопросов^_^