在TFS中实现自动完成字段的建议值

在Team Foundation Server (TFS)中,经常需要为工作项添加自定义字段,以满足特定的需求。本文将介绍如何创建一个自动完成字段,并使用服务器插件动态生成建议值列表,从而提高用户输入的灵活性和准确性。

假设条件

在阅读本文之前,假设已经了解如何自定义过程模板。如果对TFS的自定义过程模板不熟悉,建议先了解相关基础知识。

创建自动完成字段

首先,需要在工作项中添加一个新的字段。这个字段可以命名为"自动完成字段",并且其引用名称设置为"Fields.The.Auto.Completing.Field"。字段类型保持为字符串,并将其导入到TFS中。

创建团队查询

接下来,需要创建一个团队查询。在TFS的任何接口中,都可以创建一个平面查询。以本文为例,创建的查询如下所示。在列选项中,仅选择"自动完成字段"字段,并在排序列中选择相同的列。将该查询保存在共享查询的根目录下。

创建服务器插件

接下来,将创建一个服务器插件。这个插件非常简单,可以直接使用附带的源代码。插件的基本逻辑是:当配置的字段发生变化时,调用与该字段映射的查询,并更新全局列表,然后将该全局列表作为字段的建议值列表添加。

代码实现

以下是实现逻辑的代码,所有调用的类都在源代码下载中:

C# Uri requestUri = GetTFSUri(requestContext); foreach (StringField field in workItemChangedEvent.ChangedFields.StringFields) { if (DoesFieldNameExistsInConfiguredFields(configuredFreeTextFields, field.ReferenceName)) { IGlobalList globalList = GlobalListFactory.GetGlobalList(requestUri, _configuredFreeTextAutoCompleteGobalListPrefix + field.ReferenceName.Replace(".", "_")); globalList.ClearList(); IQueryRunner queryRunner = QueryRunnerFactory.CreateInstance(requestUri, workItemChangedEvent.PortfolioProject); WorkItemCollection workItemsFromQuery = queryRunner.ExecuteSavedQuery(configuredFreeTextFields[field.ReferenceName]); foreach (WorkItem wi in workItemsFromQuery) { if (wi.Fields.Contains(workItemsFromQuery.DisplayFields[0].Name)) { globalList.AddToListDistinct( wi.Fields[workItemsFromQuery.DisplayFields[0].Name].Value.ToString()); } } globalList.SaveChanges(true); } }

上述代码周围的代码从应用程序设置中加载配置字段。字段的默认配置示例如下:

XML <add key="AutoCompleteSettings.AppSettingsPrefix" value="AutoComplete." /> <add key="AutoCompleteSettings.GlobalListPrefix" value="AutoComplete_" /> <add key="AutoComplete.Fields.The.Auto.Completing.Field" value="<Your team name>/Shared Queries/The Query we just created" />

最终步骤

服务器插件应该为创建全局列表(如果它不存在的话)。因此,如果在TFS中更改了"自动完成字段",那么该字段的全局列表将被创建。或者,如果使用的是默认配置,可以提前导入一个名为"AutoComplete_Fields_The_Auto_Completing_Field"的全局列表。

基本上,在TFS中有了全局列表之后(无论使用哪种方法将其放入TFS),需要回到工作项定义中,并添加使用创建的全局列表作为值的建议值规则。

发布服务器插件并导入对工作项定义所做的更改,就完成了。

享受成果

这个插件允许用户使用自由文本字段,并通过自动完成类型的体验,有助于避免对同一事物有多个值,这将使后续的准确报告稍微困难一些。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485