对于我当前的项目,当自定义工作项更改为特定状态时,我必须向数据库中添加一条记录。为此,您可以构建一个在WorkItemChanged事件时启动的TFS插件。然而,我们的公司政策不允许我们构建这些插件,因为它是为所有项目集合中的每个工作项处理的。此操作仅适用于少数团队项目。
我的问题是:有可能创建一些客户端插件(也许是VS插件)来触发对该事件的操作吗?或者有没有办法为这个事件创建另一种监听器?
如有任何建议,我们将不胜感激,并提前表示感谢。
您可以实现一个基于轮询的警报系统,而不是让TFS为您驱动警报。
我将创建一个简单的工作项查询,该查询选择您感兴趣的工作项,并按Changed Date列进行排序。然后,我将编写一个简单的程序,使用TFS SDK运行此工作项查询,并根据结果进行通知,在两次轮询之间保持高水位线。(TFS SDK示例有一个运行工作项查询的示例。)
请注意,无论您的公司策略如何,这种基于轮询的方法都比设置SOAP侦听器有优势。TFS使用的基于SOAP的警报系统是为TFS基础设施组件之间的通信而开发的。预计您配置的SOAP端点是高可用性的——如果您的机器停机、SOAP服务崩溃或IP地址更改,您将开始在事件日志中看到TFS抱怨。在切换到类似警报系统的基于轮询的模型之前,我在TFS服务器上填写了事件日志。
最后,我在WorkItem编辑表单中为创建了一个自定义控件。在这个控件中,我可以实现创建数据库记录所需的所有逻辑。
因此,现在有一个按钮可以执行完全相同的操作,执行我的自定义编码,从而向我们的数据库添加一条记录,而不是将combobox状态设置为onhold状态。