针对 Microsoft SharePoint Server 2010 开发人员的企业元数据管理简介

**摘要:**Microsoft SharePoint Server 2010 中的企业元数据管理 (EMM) 使用户能够在企业中创建和管理元数据及分类。本文介绍了一些基本的开发人员任务,您可将这些任务用作更强大更复杂的元数据解决方案的基本构造块。

上次修改时间: 2011年1月12日

Microsoft 图标 Ken Milne,Microsoft Corporation

本文内容
企业元数据管理简介
本文的目标读者
分类 API
TaxonomySession 类
组、术语集和术语
CommitAll 方法
SetDescription 方法
CreateLabel 方法
代码示例:创建和提交分类、添加标签以及删除术语
结束语
其他资源

Microsoft 图标 Paula Wing,Microsoft Corporation

2009 年 11 月

适用范围: Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

目录

  • 企业元数据管理简介

  • 本文的目标读者

  • 分类 API

  • TaxonomySession 类

  • 组、术语集和术语

  • CommitAll 方法

  • SetDescription 方法

  • CreateLabel 方法

  • 代码示例:创建和提交分类、添加标签以及删除术语

  • 结束语

  • 其他资源

企业元数据管理简介

企业元数据管理 (EMM) 是 Microsoft SharePoint Server 2010 中引入的一组功能,它使分类学家、图书管理员和管理员能够在企业中创建并管理术语和术语集。主要功能包括:

  • 新的 Managed Metadata Service,它可在企业的多个 SharePoint Server 网站中提供一致的元数据和共享分类。

  • Managed Metadata Service 是一个术语库。术语库是包含一个或多个分类的数据库。多个 Managed Metadata Service(术语库)可与一个 Web 应用程序关联。

  • 分类是元数据、层次结构以及提供含义的其他元素(例如说明、同义词和翻译)的分层组。

  • 术语管理工具,它可提供:

    • 服务管理:从一个位置访问所有可用的术语库数据库。

    • 安全组:使用 SharePoint Server 用户和组控制用户的创建、编辑或删除方式。

    • 术语集:用于对术语层次结构进行组织、分组和共享的容器。

    • 通过 Microsoft Office 2010 客户端应用程序和第三方自定义应用程序,使用分类对象模型在 Web 浏览器中应用元数据的能力。下文将介绍分类对象模型。

通过用户界面 (UI) 提供的 Managed Metadata Service 和术语管理工具功能既强大又灵活,使用户能够管理各种大型复杂的元数据和分类。通过对象模型提供的分类 API 功能强大、范围广泛,使您能够执行借助 UI 以及 Managed Metadata Service 和术语管理工具功能所能够执行的一切操作。

本文将简单介绍分类对象模型,而不会深入探讨 API。本文还会介绍在开始编写自己的自定义企业元数据应用程序时,可用作构建基块的基本概念和语法。本文提供了演示基本编程任务的完整代码示例,并详细地逐步介绍每个任务的概念和语法。

本文的目标读者

本文专为刚接触 SharePoint Server 2010 中的 EMM、刚开始进行 SharePoint 开发以及有意了解广泛的分类对象模型的一些基本构建基块的开发人员编写。本文要求开发人员具备 Microsoft Visual C#、Microsoft .NET 和 Web 开发(包括 ASP.NET)的基本操作知识。

先决条件

在运行本文介绍的示例之前:

  1. 按照 Microsoft SharePoint Server 2010 SDK 的在 Windows Vista、Windows 7 和 Windows Server 2008 上设置 SharePoint 2010 开发环境所述设置 SharePoint Server 2010 开发环境。这包括按照操作系统指定的方式安装 SharePoint Server 2010 必备组件、配置系统以运行 SharePoint Server 2010、安装 SharePoint Server 2010 以及安装 Microsoft Visual Studio 2010 Beta 1。

  2. 通过 UI 或使用 Windows PowerShell 设置术语库。

  3. 阅读 Microsoft SharePoint Server 2010 SDK 中的以下主题:

分类 API

用于开发 EMM 解决方案的大多数 API 均位于 Microsoft.SharePoint.Taxonomy 命名空间中。本文将重点介绍一些最常用的类、方法和属性:

  • TaxonomySession 类

  • TermStore 类

  • Group 类

  • TermSet 类

  • Term 类

  • CommitAll 方法

  • IsAvailable 属性

  • Name 属性

  • CreateLabel 方法

  • SetDescription 方法

TaxonomySession 类

TaxonomySession 类可用于新建会话,在会话中,您可以实例化对象并向 TermStore 对象提交事务性更改。TaxonomySession 对象可与零个或多个 TermStore 对象关联。TermStore 对象与父 SPSite 对象的 Web 应用程序关联。

以下代码段介绍了第一部分代码示例(完整代码示例位于本文末尾)。此代码段可在 https://localhost 中声明 SPSite 对象的一个新实例,实例化该网站的新 TaxonomySession 对象,并实例化会话的 TermStore 对象的新 Managed Metadata Service 连接。

using (SPSite site = new SPSite("https://localhost"))
{
//Instantiates a new TaxonomySession for the current site.
TaxonomySession session = new TaxonomySession(site);
//Instantiates the named "Managed Metadata Service Connection" for the current session.
TermStore termStore = session.TermStores["Managed Metadata Service Connection"];

组、术语集和术语

EMM 提供了元数据的规则和容器,使其更易于强制实施分层关系。在设置术语库后,用户可以在术语库中添加组、术语集和术语(按此顺序),并在它们之间建立关系。

分类中包括的项目以 TaxonomyItem 基类为基础。Group 类、TermSet 类、Term 类和 Microsoft.SharePoint.Taxonomy 命名空间中的某些其他类都是 TaxonomyItem 类的实现。基于 TaxonomyItem 类的容器对象(包括 Group 对象、TermSet 对象和 Term 对象)均根据以下这些规则创建:

  • 在创建 Group 对象后,便可创建第一个 TermSet 对象。TermSet 对象必须是一个父 Group 对象的子对象。

  • 在创建 TermSet 对象后,便可创建第一个 Term 对象。Term 对象可以是一个 TermSet 对象的子对象,也可以是另一个 Term 对象的子对象。

  • 在创建一个 Term 对象后,便可再创建一个 Term 对象,并将其添加为子 Term 对象。

图 1 中的示例显示了一个 Group 对象(Group1),它有一个子对象:名为 termSet1 的 TermSet 对象。termSet1 是三个子 Term 对象的父对象:Term1Term2Term3。最后,Term1 是两个子术语的父术语:Term1aTerm1b

图 1. 分类层次结构示例

分类层次结构示例

CommitAll 方法

分类 API 使用 TermStore 对象的 CommitAll 方法将事务提交给 TermStore 对象。事务示例包括创建、删除和修改 Group 对象、TermSet 对象及 Term 对象。

CommitAll 方法是事务性方法,意味着当前事务中所有要提交的项目要么全部成功提交,要么无一被提交。分类 API 总是要么不提交任何事务,要么提交所有事务。这样有助于系统性管理对 TermStore 对象所做的更改,并有助于确保术语库始终包括最新设置的元数据集或上次已知完好的元数据集。

分类对象模型还包括类型为 ChangedItem 和 ChangedGroup 的更改 API,这些类型用于记录 CommitAll 事务的历史记录。

termStore.CommitAll();

SetDescription 方法

Term 对象包括 SetDescription 方法。该方法可设置一个描述对象并将 LCID 设置为 32 位整数的字符串。

term1.SetDescription("This is term1", 1033);

CreateLabel 方法

EMM 使用标签管理源 Term 对象的同义词及其他不同名称。CreateLabel 方法可实例化 Term 对象的新同义词或标签。例如,如果 Term 对象的 Name 属性已设置为"狗",而贵组织中的其他人使用犬科动物 一词来表示同一 Term 对象,那么则可以使用 CreateLabel 方法将字符串和 LCID 分配给 Term 对象。此外,还可以将此标签的默认值设置为 true 或 false。

term1.CreateLabel("TermOne", 1033, false);

term1.CreateLabel("FirstTerm", 1033, false);

Term 对象的默认 Name 属性是一个将默认值设置为 true 的 CreateLabel 方法示例。

代码示例:创建和提交分类、添加标签以及删除术语

在前面的部分中,我们介绍了通过分类 API 开发自定义元数据解决方案时使用的常用类和方法。以下代码将完整地介绍前面部分中讨论的概念和代码。您可以将此示例用作自己的自定义元数据应用程序的构造块。

示例:

  1. 新建 TaxonomySession 对象。

  2. 在会话中创建分类项(例如一个 Group 对象、一个 TermSet 对象和若干个 Term 对象)。还可将所有更改结果提交给 TermStore 对象。

  3. 使用 SetDescription 方法为 Term 对象的给定 LCID 创建描述字符串。

  4. 使用 CreateLabel 方法创建同义词和备用标签,然后将它们分配给 Term 对象,并提交更改结果。

  5. 演示如何从 TermStore 中删除 Term 对象并提交更改结果。虽然在本例中未明确显示可以使用类似方法删除 Group 对象和 TermSet 对象,但可以这样做。

using (SPSite site = new SPSite("https://localhost"))
{
//Instantiates a new TaxonomySession for the current site.
TaxonomySession session = new TaxonomySession(site);
//Instantiates the connection named "Managed Metadata Service Connection" for the current session.
TermStore termStore = session.TermStores["Managed Metadata Service Connection"];

// Creates and commits a Group object named Group1, a TermSet object named 
// termSet1, and several Term objects. Term1, Term2, and Term3 are members of 
// termSet1. Term1a and Term1b are children of Term1.
// 
Group group1 = termStore.CreateGroup("Group1");
TermSet termSet1 = group1.CreateTermSet("TermSet1");
Term term1 = termSet1.CreateTerm("Term1", 1033);
Term term2 = termSet1.CreateTerm("Term2", 1033);
Term term3 = termSet1.CreateTerm("Term3", 1033);
Term term1a = term1.CreateTerm("Term1a", 1033);
Term term1b = term1.CreateTerm("Term1b", 1033);
termStore.CommitAll();

// Sets a description and some alternate labels for term1 and commits
// the changes to termStore.
term1.SetDescription("This is term1", 1033);
term1.CreateLabel("TermOne", 1033, false);
term1.CreateLabel("FirstTerm", 1033, false);\
termStore.CommitAll();

// Deletes an unnecessary term, term3, from termStore and commits the change.
term3.Delete();
termStore.CommitAll();

结束语

SharePoint Server 2010 包括分类 API,它可用于编写创建元数据层次结构的自定义应用程序。对象模型扩展了通过 UI 提供的元数据管理功能和工具,可提供强大的功能,例如启用元数据驱动式导航和搜索,以及为自定义属性提供值。本文简单介绍了一些常见开发任务,例如创建分类会话,向术语库提交新分类项,更新和修改分类项(例如 Group 对象、TermSet 对象和 Term 对象)以及新建 Term 对象的标签。

其他资源

有关详细信息,请参阅以下资源: