如何针对新的任务操作使用 SharePoint Designer 来操作任务窗体?

原文发布于 2012 年 9 月 14 日(星期五)

各位 SharePoint Designer 用户,大家好!

我是 Chong Youn (John) Choe,SharePoint Designer 团队的项目经理。我非常高兴就新的问题发表文章。 

背景

审批是工作流的关键应用程序之一。SharePoint Designer 2013 中提供了几项操作,以用来接收参与者的响应。在 SharePoint Designer 2013 中,任务窗体是根据特定的”内容类型“自动生成的,因此值得了解一下如何为那些对在您的工作流中自定义任务窗体感兴趣的用户自定义内容类型。 

示例方案

Chris Bryant 是 Contoso 的一位设计人员,他希望收到有关其昨晚所介绍的新产品模型设计的反馈。默认的“启动任务进程”操作仅适用于获得来自他所选择的参与者的批准或拒绝响应,因此他决定修改任务窗体以更好地符合收集反馈的需要。 

自定义内容类型创建

首先,需要在网站中创建自定义内容类型。可以在 SharePoint 服务器端或 SharePoint Designer 客户端执行此操作。

针对服务器端,请执行以下操作:

1. 转至“网站内容类型”(Site Content Type) 页面

转至“网站设置”(Site Settings),然后选择“Web 设计器库”(Web Designer Galleries) 部分中的“网站内容类型”(Site Content Types)。在“网站内容类型”(Site Content Types) 页面上,选择“列表内容类型”(List Content Types) 中的“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013))。

图 1 网站设置菜单

image

2 工作流任务 (SharePoint 2013)

image

2. 创建一个继承“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型的网站内容类型。

返回“网站内容类型”(Site Content Types) 页面,然后按“创建”(Create) 链接。设置其名称、说明,然后将其“父级内容类型”(Parent Content Type) 设为“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型。为了使用新的自定义内容类型,将父级内容类型设为“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型是一个必要的步骤。选择或引入内容类型“组”(Group),然后按“确定”(OK)。

3 设置父级内容类型

image

3. 将新的内容类型添加到“任务”(Tasks) 列表。

单击“设置”(Settings),再单击返回网站主页并转至“网站内容”(Site Contents) 选项,然后单击“任务”(Tasks) 列表。

4 “任务”(Tasks) 按钮

image

选择功能区中的“列表”(List) 选项卡,然后单击“列表设置”(List Settings)。向下滚动以找到“内容类型”(Content Types) 部分,然后按“从现有网站内容类型添加”(Add from existing site content types) 选项,以添加新创建的内容类型。

5 “列表设置”(List Settings) 中的“内容类型”(Content Types) 会话

image 
   

同一工作在 SharePoint Designer 上甚至可以更轻松地完成,

1. 转至“导航”(Navigation) 窗格中“网站对象”(Site Objects) 选项卡下的“内容类型”(Content Types) 菜单。即会显示网站中的所有内容类型。通过按“内容类型”(Content Type) 按钮,创建网站内容类型。

图 6 SharePoint Designer 中的“内容类型”(Content Types) 菜单

image  

2. 选择新内容类型的名称,并为其选择一个排序组。请确保父级内容类型为“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型,如图 7 中所示。

图 7“创建内容类型”(Create a Content Type) 对话框

image

3. 接下来,将内容类型添加到“任务”(Tasks) 列表中,必须这样做才能在“任务操作”(Task Actions) 中使用它。再次转至“导航”(Navigation) 选项卡中“网站对象”(Site Objects) 的“列表和库”(List and Libraries) 下的“任务”(Tasks) 列表。然后,将新创建的内容类型添加到“任务”(Tasks)列表中。

图 8 SharePoint Designer 上的内容类型选取器

image  

如果不将内容类型添加到“任务”(Tasks) 列表中,则会发生以下运行时错误。

图 9 运行时错误

image

使用任一方法创建自定义内容类型,都会使其在工作流中可用。

“结果选项”(Outcome option) 列是指将保留每个参与者可以选择的所有可能响应的列。通过上述步骤创建的任何自定义内容类型都将显示在“启动任务进程”(Start a Task Process) 和“分配任务”(Assign a Task) 操作中。 

自定义内容类型修改

在添加“启动任务进程”(Start a Task Process) 或“分配任务”(Assign a Task) 操作时,新的内容类型将显示在“任务”(Task) 操作的设计器类型中。

在确认已创建自定义内容类型并可供工作流使用之后,让我们开始继续讨论如何自定义窗体。

图 10 中显示用来收集反馈的非常简单的工作流。

图 10 收集反馈工作流

image

Chris 是 Contoso 的设计人员,他想要接收来自内部专家组的反馈,因此应对窗体进行修改以存储来自每个参与者的意见。

1) 转至“网站设置”(Site Settings) 页面,然后打开“Web 设计器库”(Web Designer Galleries) 中的“网站内容类型”(Site content types)

2) 单击“列表内容类型”(List Content Types) 下的“自定义内容类型”(Custom Content Type)

图 11 Contoso 内容类型

image

此时,任务窗体的外观将与默认的任务窗体相同。该窗体看起来如 11 中所示。

默认窗体中的许多字段在此方案中都毫无用处。对于 Chris 而言,可能会在“内容”类型中修改以下字段。

 
图 12 任务窗体 Contoso 内容类型  

image

让我们逐个检查“图 11 Contoso 内容类型”中的所有字段,以决定在我们的任务窗体中是否需要它们。

1)“任务名称”(Task Name) 是必填字段

2)“开始日期”(Start Date)/“截止日期”(Due Date) 可能有意义, 但并不是我们的窗体中必须要有的内容

3) 窗体中不需要“分配对象”(Assigned To) 字段,因为参与者将编辑已分配给他们的窗体

4)“完成百分比”(% Complete) 毫无意义,因为反馈通常是一次性提供的

5)“正文”(Body) 字段将用来收集反馈

6) 此处不需要“前置任务”(Predecessors)

7)“优先级”(Priority) 与反馈没有任何关系

8)“任务状态”(Task Status) 是用来跟踪状态的基本字段

9) 此窗体中不需要“相关项目”(Related Items)

10)“任务结果”(Task Outcome) 是可供选择的结果,在这种情况下,只需简单的“提交”(Submit) 选项即会完成反馈过程。

列操作页面看起来全部类似,下面是一个示例屏幕截图。

在将某个字段设为“必需”(Required) 时,必须填入该列才能关闭任务窗体,尽管“可选”(Optional) 列会显示出来,但可以保留空白。如果采用“隐藏”(Hidden) 设置或通过“删除”(Remove) 按钮删除列,则将在任务窗体中隐藏该列。例如,在下面的屏幕截图中,按“删除”(Remove) 按钮将从“Contoso 内容类型”(Contoso Content Type) 中擦除“分配对象”(Assigned To) 字段。

图 13 更改内容类型列

image

Chris 继续操作并修改“Contoso 内容类型”(Contoso Content Type),以便将其仅用于反馈。

图 14 中显示了结果。由于无法删除“相关项目”(Related items) 列,因此将该列隐藏。

图 14 修改后的 Contoso 内容类型

image

此外,“任务结果”(Task Outcome) 网站列会在“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型中使用。最好删除“任务结果”(Task Outcome) 列,并通过单击“从新网站列添加”(Add from a new site column),创建“结果选择”(Outcome choice) 类型的新网站列。

图 15 修改后的任务窗体 Contoso 内容类型

image

当每个参与者根据上面的窗体收到任务时,可以将评论写入说明字段,并通过按“提交”(Submit) 按钮完成任务。剩余的列(如“开始日期”(Start Date))也可以隐藏。

此后,还可以按照 Chris 的意愿重命名字段。例如,要更改结果字段“提交”(Submit) 的名称,请选择“提交”(Submit) 列并按“网站列信息”(Site Column information) 中的“编辑列”(Edit column) 链接。可以在那里续订列名称,如图 17 中所示。请注意,列的新名称可以基于非 ascii 字符,如“テスト”.

图 16 编辑列

image

图 17 网站列信息

image 

限制

采用 SharePoint Designer 2013 的 SharePoint 2013 工作流将通过分析相关联的内容类型来生成任务窗体。请注意,SharePoint 2013 工作流不支持 InfoPath,这意味着用户必须直接操作 .aspx 格式才能修改布局。

尽管已对修改进行说明,但无法从 SharePoint 或 SharePoint Designer 中操作“保存”(Save) 和“取消”(Cancel) 按钮。此外,“任务状态”(Task Status) 和“任务结果”(Task Outcome) 类型列必须存在于内容类型中,才会显示自定义结果按钮。按钮的顺序遵循内容类型中所包含的“任务结果”(Task Outcome) 类型列中的选项值顺序。“任务结果”(Task Outcome) 类型列在“网站设置”(Site Settings) 下会定义为“网站列”(Site Columns)。

图 18“任务结果”(Task Outcome) 类型列的其他列设置示例

image 

摘要

SharePoint 2013 工作流中引入了两个新的操作。可以从 SharePoint 网站和 SharePoint Designer 客户端修改这些操作的任务窗体,而无需任何开发人员级别的知识。创建一个继承“工作流任务 (SharePoint 2013)”(Workflow Task (SharePoint 2013)) 内容类型的新自定义内容类型,将其添加到“任务”(Tasks) 列表,在您的工作流中使用这个新的内容类型,并根据需要修改自定义内容类型。

通过修改 .aspx 格式,可以对窗体进行其他自定义,但是这不在本博客的讨论范围之内。

我希望通过此处向您介绍的这种简单技术,可以实现您所拥有的工作流方案。

让我们在下一篇文章中再见!

Chong Youn (John) Choe

这是一篇本地化的博客文章。请访问 How to manipulate the Task Form with SharePoint Designer for new task actions? 以查看原文。