我有一种填充物需要指定人的信息。工作流以后将任务分配给这些人。我正在寻找的是一个人类选择者,例如SharePoint对用户字段的收集器,但是我可以在Infopath中使用。我已经设计了一个表格来执行此操作,其中填充物可以在名称或电子邮件中放置,并且该表格将列出网站的结果。

问题是,如果需要添加到表格中的人以前从未访问过此特定站点的收集,该怎么办。他们的帐户不会在Allusers列表中列出。

在对象模型中,我可以在哪里搜索能够使用SharePoint进行身份验证的用户?

有帮助吗?

解决方案

为什么不只是在Infopath中使用OTB ONE并将其配置为指向您的SharePoint环境?

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

如果您使用广告集成的运行苔藓,则如果启用了广告同步,则应自动检索域中的每个人。

其他提示

我认为这里的问题是,即使您确实找到了用户列表,如果用户信息列表中的用户不存在,则工作流程也不会触发任何操作。

如果用户在用户信息列表中不存在,那么您将无法通过SharePoint对象模型找到它们,因为SharePoint中不存在。您将不得不找到其他方式。

因此,基本上,这取决于如何在SharePoint服务器上配置身份验证:

如果您使用的是FBA,则可以使用SharePoint进行身份验证的用户必须存在于某个地方的SQL数据库中。 会员资格 将为您提供FBA会员提供者的钩子(无论是SQLMembershippRovider还是其他)。然后您可以使用类似的方法

Membership.Provider.GetUser(username)

查看用户是否存在。您也可以循环浏览用户,也可以找到所有现有的用户名,然后可以在选择者中显示这些用户。

如果您使用的是Windows身份验证,则必须在广告中查找潜在用户。这 DirectoryEntry 对象是您需要的。我想只有来自某个广告组的用户才能访问SharePoint?如果是这样,则将该组与DirectoryEntry对象隔离,循环浏览用户,您将为People Picker提供数据源。

正如我上面说的那样,任何一种方法都会为您提供可能的用户,但是如果用户尚未登录,它将无法使工作流程起作用。工作流只能与用户信息列表中确实存在的用户正确使用。

当某人选择SharePoint中不存在的用户时,您可能必须通过代码创建它。一种安全的方法是与 spweb.ensureuser.

检查指定的登录名是否属于该网站的有效用户,并且如果登录名不存在,则将其添加到网站上。

所以,真的,回答您的问题。您需要寻找它们可能来自的地方。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top