关联栏
原文发布于 2011 年 5 月 2 日(星期一)
大家好,我是 SharePoint Designer 团队的项目经理 JongHwa Lim。好久不见了。自从去年 4 月份以后,这里再没有发布过新文章,有人可能以为这个网站已经关闭了,但现在我们又回来了。我们将恢复网站的使用,至少每月更新一次博客文章,并努力与读者和客户保持联系。
为使网站重焕生机(也为鼓励我的团队继续发表文章),我们从 SharePoint Designer 2010(又名 SPD)中新增的一项虽小但确非常实用的功能开始。
需要使用关联栏功能的情况
我们先来设定一个场景。假设您是一位经常用到 SPD 的工作流作者,现在需要制定一个工作流,可以用于很多具有若干工作流特定字段的列表或文档库。如何才能做到呢?以下列举了一些您为实现此目标可能选择的方法。
· 列表工作流
o 您可以从列表工作流开始。将工作流特定字段直接添加到列表中。在 SharePoint Designer 中进行设计时,您可以看到这些字段,并可以使用这些字段创建工作流逻辑。
o 不过,当需要在其他列表或文档库中再次使用此工作流时,结果可能不会令您非常满意。
· 可重用工作流
o 您可能对 SPD 工作流更熟悉一些,所以选择使用可重用工作流来解决重复使用问题。可是,当您打开工作流设计器时,您只能看到可设置字段的“标题”,以及可读字段的“内容类型”、“创建时间”、“创建者”、“ID”、“修改时间”、“修改者”和“标题”。
o 您无法使用所需的字段来创建工作流逻辑。
· 具有基内容类型的可重用工作流
o 您可能是 SPD 工作流的资深用户,对可重用工作流的基内容类型概念有所了解。
o 您首先新建一个内容类型,并将必要的字段添加该内容类型中。在“创建可重用工作流”对话框中,将您所创建的内容类型指定为基内容类型。
o 现在,您可以在工作流设计器中看到添加的字段,并可以完成所需的目标。只要您将此工作流与内容类型相关联,并将该内容类型添加到列表或文档库中,就可以解决重复使用问题。
o 但是,如果您发现需要使用新字段时该如何操作呢?每次需要新字段时,您都必须访问服务器或 SPD 上的网站内容类型或网站栏 UI。
o 还有一个缺点是,当您想要使用“另存为模板”移动工作流时,如果基内容类型是自定义内容类型或该内容类型包含自定义网站栏,未打包的工作流将丢失基内容类型的某些信息。
· 具有关联栏的可重用工作流
o 您对 SPD 的熟悉程度可能不亚于了解基内容类型概念的人。所以,您知道关联栏概念。
o 在您开始创建工作流需要使用字段时,只需使用关联栏便可立即创建一个字段,而且在关联栏中您还可以选择使用现有网站栏还是新栏。在整个创建过程中,您不需要无休止地在工作流设计器、网站内容类型和网站栏 UI 之间往返。您可以在一个位置完成所有操作,事实就是这样。
o 而且,也不存在重复使用问题,这是因为可重用工作流定义附带了这些字段,且工作流包支持此功能。
什么是关联栏
现在,有些读者可能已在试图寻找有关本主题的帮助文件。您可能会找到以下内容:
· 默认情况下,可重用工作流不具有特定列表或库的上下文。因此,其在默认情况下只提供对所有列表和库均适用的栏,如“创建时间”和“创建者”。
如果您的可重用工作流需要所关联的列表或库具有某些特定栏,您可以将这些栏作为关联栏添加。当可重用工作流与列表或库相关联时,关联栏可自动添加到该列表或库中。
· 关联栏
如果您的可重用工作流需要所关联的列表或文档库具有某些特定栏,您可以将这些栏作为关联栏添加。当可重用工作流与列表或库相关联时,关联栏可自动添加到该列表或库中。
·(“功能区工具提示”按钮)
定义在工作流与列表相关联时将添加到该列表中的栏。网站工作流不能使用此选项。
上述所有内容如实详尽地介绍并说明了什么是关联栏以及关联栏所实现的功能。引入关联栏的起因是由于在实际工作中,可重用工作流的作者在需要更新“当前项”的字段时始终没有理想的解决办法。因为在 SharePoint Designer 2010 之前没有“可重用工作流”的概念,所以我们也没有关联栏。而如果没有关联栏,我们可能只能选择使用基内容类型。而这种方法在关联和设计时间 UX 方面都面临各种局限,原因是它只能关联到基内容类型或继承的内容类型,作者不得不在工作流设计器、网站内容类型或网站栏 UI 之间多次往返。
如何创建关联栏
关联栏的创建过程简单直接。我将通过以下示例为您演示创建过程。您可以按照下图所示,从名为“关联栏”(Association Columns) 的功能区按钮入手。
单击此按钮,将弹出一个警告对话框,如下所示。
选择“确定”(OK),您将进入关联栏的主对话框。
您可以在“选择网站栏”(Select Site Column) 和“添加新栏”(Add New Column) 之间进行选择。如果选择网站栏,将出现以下对话框。
如果选择“地址”(Address) 字段,该字段将添加到主对话框。
如果您添加新栏,将出现以下 UI,您可以通过此 UI 定义一个新栏。
此示例中,我事先创建了一个多行文本字段,命名为“审批者意见”(Comments from Approvers)。
在选择一个新栏之后,您可以看到此字段,“修改”(Modify) 也同时启用,但不能对任何现有栏进行修改。
单击“确定”(OK),您便完成了此关联栏的创建。现在,您可以在设计器界面中看到“地址”(Address) 和“审批者意见”(Comments from Approvers)。
关联栏的工作原理
关联栏在内部使用网站栏,因此,您能够在 UI 中看到“选择网站栏...”按钮选项。不论是新建的关联栏还是从网站栏中选择的关联栏都将在 wfconfig 文件中保留,以便在设计过程中使用该文件。
但是,如果您在发布工作流之前看到 wfconfig 文件,您会发现以下字段定义。这是由于我们在发布过程中创建网站栏,并对 wfconfig 中的相应字段定义进行了更新。
所以,如果您在发布后再次访问关联栏对话框,您会看到“新栏”已更改为“现有栏”,且不允许修改它。
当可重用工作流关联到列表或文档库时,我们会将关联栏添加到该列表和文档库中,以便引用字段的可重用工作流正常工作。
打包
如果您将可重用工作流打包,并在另一个网站内解包,将保持关联栏,即也会打包和解包关联栏。而基内容类型中的自定义基内容类型和自定义网站栏将不会完全打包,这意味着在传输过程中可能丢失某些信息。
限制
当我们将可重用工作流关联到某内容类型时,关联栏会在该内容类型添加到列表或文档库中时添加到该列表或文档库中。我们不会将关联栏直接添加到该内容类型中。
这是一篇本地化的博客文章。请访问 Association Columns 以查看原文