0

我在网络上看到了很多博客、文章和讨论,这让我相信自定义内容类型是 SharePoint 网站中必须使用的功能,尤其是在涉及 SharePoint/MOSS 网站的无代码自定义的情况下。

然而,在对该主题进行了几个小时的定向研究之后,内容类型的使用(用于列表,而不是文档库)对我来说似乎并不那么令人印象深刻:

  • (1) 我可以将类似类型的记录(例如任务和里程碑)分组在同一个列表中,并为列表中的每种记录分配一组自定义字段(以及这些字段中的不同选择)。
  • 例如,任务内容类型可能具有“分配给”字段和状态字段,其选项包括“未开始、进行中、完成、已放弃”;里程碑内容类型可以跳过“分配给”字段,并提供一个状态字段,其选项为“未完成、已完成、已放弃”。
  • 但是,为什么不创建单独的列表呢?将不同内容类型分组到一个列表中的一个原因是,您可以创建一个工作流并让它处理该列表中的所有内容类型。如果您有两个单独的列表,则必须创建两次工作流,并在两个地方维护任何更新——这很麻烦。
  • (2) 当我为每种内容类型设置不同的字段集时,SharePoint 将自动为每种类型生成不同的“新项目”和“编辑项目”表单——仅显示/请求与一种或另一种内容类型实际相关的字段。
  • 例如,当我创建一个新的任务项时,SharePoint 创建的输入表单会自动包含“分配给”字段;当我创建一个新的里程碑项目时,SharePoint 创建的输入表单不包括“分配给”字段,从而使用户更容易(并保持数据更清洁)。
  • (3) 每个内容类型的工作流——虽然工作流只能与一个列表相关联,但您也可以将工作流与一个内容类型相关联。这给了你两个机会:
  • 使用适用于每种内容类型的不同操作和条件创建不同的工作流。
  • 创建对单个内容类型进行操作的单个工作流,并在多个列表中使用该内容类型。(然后你会以某种看待事物的方式获得“多个列表中的相同工作流程”。)
  • (4) 我可以在List 中创建某种类型的记录,然后进行配置,使该“类型”的所有记录都是只读的(即创建后无法编辑)。
  • (5) 过滤查找:http ://www.sharepointblogs.com/mossms/archive/2009/07/23/filtered-lookups-across-content-types.aspx

我错过了什么吗?列表中的自定义内容类型是否有一些我没有看到的使用场景,这使它们成为您必须使用的 SharePoint 功能?

4

3 回答 3

3

我将它们视为类。为什么不对数据进行分类?

例如,您可以将上下文菜单项事件侦听器或工作流附加到内容类型。或者,如果事实证明您需要其他字段,只需将其添加到内容类型,然后在使用数据的任何地方添加它。

于 2009-08-20T05:57:52.740 回答
3

Janis 和 Alex 的观点都很好。以下是我自己的一些:

  1. Janis 画的“阶级”类比是一个很好的类比。内容类型不仅仅是数据——它们是与该数据相关的行为。这种“行为可移植性”使我们不再将 SharePoint 数据视为简单地放在列表中。受列表约束特别受限制;内容类型打破了这一限制。

  2. 内容类型本质上是分层的并且支持继承(正如 Janis 所暗示的)。您可以创建任意复杂的层次结构,就像类层次结构一样。层次结构更深的内容类型从继承链的更高层继承字段和大多数与代码相关的元素。您可以选择将父行为保留在派生类型中或覆盖它。

  3. 我特别喜欢内容类型(与行为可移植性相关)的一点是能够指定用于查看和处理数据的自定义表单。我不是在谈论插入列表表单页面的FormTemplates ;我说的是自己制作的体验。SharePoint 的整个“以列表为中心”的心态可以通过精心设计的表单进行颠倒,这些表单通过内容类型的 XmlDocument 结构中指定的FormUrl元素绑定。如果需要,空白 ASPX 页面将成为您的画布。

归根结底,我想归根结底(对我而言):我可以考虑将数据绑定到列表以及该列表的行为,或者我可以考虑数据在本质上更类似于 OOP,具有内容类型. Microsoft 对 SharePoint 平台内的内容类型进行了大量投资,并为将其用于任何网站的信息架构提出了强有力的论据。选择不使用它们可能会在未来产生一些惊喜。

这里有一个例子:MOSS 记录中心。MOSS 记录中心的“胆量”利用内容类型作为路由和排序机制来简化生活 ( http://blogs.msdn.com/recman/archive/2006/09/12/750034.aspx )。如果您有大量没有内容类型分类的数据,并且您选择利用记录中心……哎呀。

这是另一个例子:搜索。使用基于内容类型的明确定义的信息架构,划分搜索范围会变得更加容易,因为内容类型可以几乎毫不费力地转换为托管属性。对于我目前的客户,我们这样做是为了轻松识别和分类内容以自动包含范围。

极端的例子:发布网站。如果不使用内容类型,您甚至无法利用发布站点功能,因为所有发布布局都与内容类型相关联,以便将列表数据与布局占位符对齐。

我可以继续,但希望这能让您了解内容类型可以为您作为开发人员和管理员做什么。您当然不需要使用它们,但它们确实比 WSSv2/SPS 2003 的特定列表数据天有了很大的改进。

物有所值!

于 2009-08-20T21:36:44.637 回答
2

它们是我必须使用的功能的原因是因为我经常在站点的许多位置部署相同的列表。要更改列表列,我只需更改父内容类型,所有使用该内容类型的列表都会更新。

但正如Janis 所说,这是关于对数据进行分类。仔细考虑数据结构并将其定义为内容类型。然后可以在任何需要的地方部署该内容类型,并始终集中更新。这使得数据结构的管理是一致的、可预测的和可重复的。

这也是一个好兆头,即开发该解决方案的人对规划和匹配业务需求与产品有一定的关注。否则,它可能表明存在创建临时列表的趋势,这通常最终成为维护的噩梦。

于 2009-08-20T09:29:59.957 回答