文档 ID 和 DocID 服务

上次修改时间: 2015年3月20日

适用范围: SharePoint Server 2010

本文内容
了解静态 URL
管理文档 ID
文档 ID 如何影响内容类型
分配文档 ID
文档 ID 持久性
文档 ID 查找行为
文档 ID 查找框 Web 部件
自定义文档 ID 提供程序

文档 ID 功能创建可用于独立于项当前位置检索项的标识符。支持此功能的文档 ID 服务可生成和分配文档 ID。本主题描述文档 ID:文档 ID 如何工作,以及支持文档 ID 生成和分配的服务如何工作。

通常情况下,用户通过执行在 Web 浏览器中启动的操作打开各个项,例如导航至 URL,这之后将指示 Microsoft Office 客户端应用程序打开相应文件。

了解静态 URL

可在 Web 浏览器中使用静态 URL 功能,通过 HTTP 重定向或服务器传输调用的方式将用户重定向到某一项的实际 URL。任一方式下,在某一项的实际 URL 起作用的所有位置静态 URL 不一定起作用。例如,选择客户端应用程序中的"文件"菜单上的"打开"之后,并不会处理调用 Open 方法时重定向 URL 的情况。

管理文档 ID

您可以在网站集级别上激活、管理和停用文档 ID 服务。静态 URL 在网站集级别上正常运行,因为 Web 浏览器会在它调用 Office 客户端应用程序之前管理重定向。这意味着客户端应用程序只会看到实际 URL。当激活文档 ID 功能时,Microsoft SharePoint Server 2010 将在"管理中心"用户界面 (UI) 上添加指向"网站集设置"页的链接,并启用文档 ID 服务,以便开始在网站集中分配文档 ID。文档 ID 服务会为网站集中的所有文档生成文档 ID,但不会为其他类型的列表项生成文档 ID。每次添加项时都将生成 ID,并且默认情况下覆盖现有 ID,除非专门创建的项指示 SharePoint Server 2010 不要覆盖其现有 ID。在移动操作过程中,SharePoint Server 2010 保留文档 ID。在复制操作过程中,SharePoint Server 2010 分配新的文档 ID。您可以通过在 PersistID 列上设置一个布尔运算符来对此进行控制。

当分配一个文档 ID 时,它作为元数据公开,并且服务器公开静态 URL,以便该文档 ID 分配到的项可按其文档 ID 被识别。静态 URL 尝试通过搜索或查找方式检索此项。

搜索管理员可以通过添加 ID 列作为托管搜索列并选择创建用于查找文档 ID 的新搜索范围,配置搜索服务以便查找文档 ID。SharePoint Server 2010 包含一个自动执行此操作的 Windows PowerShell 1.0 命令。

停用此功能后,将删除指向"网站集设置"页的链接,使用来查找文档 ID 的页不再可用,关闭文档 ID 服务,并停止分配文档 ID。服务器不会删除首次激活此功能时在网站级别添加的列,这样,即便在停用之后,仍保留现有文档 ID。在停用此功能之后,尝试使用静态 URL 按文档 ID 查找项的用户将看到一条消息,指出"此网站集未配置为使用文档 ID。"

文档 ID 如何影响内容类型

当启用文档 ID 服务时,SharePoint Server 2010 将新列添加到"文档"内容类型和"文档集"内容类型,用于存储文档 ID,并公开静态 URL 和分配文档 ID 的事件接收器。此服务还包括将 ID 分配给网站集中的所有现有项的工作项作业。服务器将下面的网站栏添加到网站集中名为"文档 ID"的组。此外,还在网站集级别上将网站栏添加到文档内容类型和文档集内容类型。

DocID 列存储分配给此项的文档 ID。它具有以下属性:

  • Name:文档 ID

  • Description:用于独立于项当前位置定位此项。

  • Type:Text

  • Indexed:False

  • Sealed:True

  • ReadOnly:True

  • CanBeDeleted:False

  • ShowInNewForm:False

  • ShowInEditForm:False

  • 静态 URL 列

静态 URL 列显示用于查找文档 ID 的项的 URL。它具有以下属性:

  • Name:静态 URL

  • Description:用于独立于项当前位置检索此项。

  • Type:URL

  • Indexed:False

  • Sealed:True

  • ReadOnly:True

  • CanBeDeleted:False

  • ShowInNewForm:False

  • ShowInEditForm:False

PersistID 列由文档 ID 分配逻辑用来确定是应保留还是应重新分配现有文档 ID。此列是隐藏的,并不呈现 UI,不能包含在任何视图中:

  • Name:PersistID

  • Description:用于指定在将项的当前 ID 复制到新位置后是否应保留此 ID。

  • Type:Boolean

  • Default value:False

  • Indexed:False

  • Sealed:True

  • ReadOnly:True

  • CanBeDeleted:False

  • ShowInNewForm:False

  • ShowInEditForm:False

  • ShowInViewForms:False

  • 事件接收器

除了将上述的列添加到"文档"内容类型和"文档集"内容类型以外,SharePoint Server 2010 还将一个事件接收器添加到适当的 SharePoint Foundation 2010 事件中,以便每次将文档或文档集上载到 SharePoint Foundation 2010 时都运行这些事件。服务器使用同步事件接收器(如 ItemAdded(SPItemEventProperties) 而非 [M:Microsoft.SharePoint.SPItemEventReceiver.ItemAdding(Microsoft.SharePoint.SPItemEventProperties])来确保文档 ID 提供程序在分配文档 ID 可以使用项元数据。

分配文档 ID

将各项添加到网站集时,SharePoint Server 2010 为这些项分配或重新分配文档 ID。

当添加一个新项时,SharePoint Server 2010 首先检查以查看该项是否具有文档 ID。如果该项具有文档 ID,则服务器将检查以查看 PreserveID 属性是设置为 True 还是设置为 False,如果当前设置为 True,则将其设置为 False。如果该项还没有文档 ID,则服务器将从指定的提供程序获取该项的文档 ID,将它写入到元数据,并将 PreserveID 属性设置为 False。

备注

不会生成静态 URL 值,因为 SharePoint Server 2010 会在呈现和查看字段时动态创建它。

文档 ID 持久性

分配文档 ID 的默认行为假定,如果某一项存在并且已具有 ID,SharePoint Server 2010 应使用一个文档 ID 重写该文档 ID。当复制 SharePoint Foundation 2010 中的现有项时会发生此情况:副本保留与原始项相同的元数据(包括文档 ID),但它仍将引发 ItemAdding(SPItemEventProperties) 事件。

备注

SPFile 对象调用其 MoveTo(String) 方法时,它不会引发 ItemAdding(SPItemEventProperties) 事件。

SharePoint Server 2010 并不假定添加一个项时该项即成为副本。相反,它为自定义解决方案提供一种方法,使其意识到正在实现"语义移动",这从对象模型的角度来看是一种复制和删除操作,用于重写默认复制逻辑,并将各项及其关联的文档 ID 看作是对象模型已对其完成移动操作。

备注

您可以使用自定义代码来防止重写文档 ID,或防止重写以前在首次将项复制到 SharePoint Server 2010 时为项分配的 ID。您可以在复制之前,通过使用代码调用 DisableEventFiring() 方法来挂起所有事件。但是,对于其他事件接收器需要运行和代码的存在只是为了保留 ID 的情况,不建议使用此方法。

文档 ID 查找行为

当文档 ID 服务查找文档 ID 时,SharePoint Server 2010 采用一种两部分的方法,实现在立即处理的文档 ID 与广泛范围内使用的文档 ID 之间保持最佳平衡:

  • 搜索。在属于当前搜索范围的任何位置中查找某一项。搜索通常可像跨列表查询那样更好地执行。但是,搜索只与其最后一个索引一样可靠。因此,如果某项已添加,但还未按搜索编制索引,则此项不会出现在搜索结果中。另外,如果某项自最后一次按搜索编制索引以后曾移动过,则旧的(现在为中断)URL 将出现在搜索结果中。

  • 特定于 ID 提供程序的查找。当无法通过使用搜索检索某一项时(例如,如果此项还未编制索引),SharePoint Server 2010 将回调文档 ID 提供程序并允许它使用自己的查找逻辑。这样,想要使用 ID 的提供程序就可在针对最后几项运行搜索索引之前查找它们。提供程序确定是否通过这种方式执行查找以及适合于执行此操作的最有效的逻辑。

文档 ID 查找框 Web 部件

"文档 ID 查找框 Web 部件"允许您输入一个文档 ID,然后它将构造一个"静态 URL"并查找相应项。

自定义文档 ID 提供程序

您可以使用自定义提供程序将文档 ID 分配给各个项。在有些组织中,特定的项元数据推进如何分配 ID。这有助于确保 ID 传达有关项的信息。

SharePoint Server 2010 支持使用自定义代码插件来设置文档 ID。您可以编写自己的自定义提供程序,方法是实现一个从 IIDProvider 接口派生的类,然后在每个网站集中部署并注册该提供程序。在注册一个自定义提供程序之后,文档 ID 服务将使用该自定义提供程序而不是默认提供程序。

请参阅

概念

管理文档

示例:自定义文档 ID 提供程序