我认为这是工作流文件的一般问题,但我会将其范围扩展到TFS Build工作流程系统。
当您从TFS中的模板创建团队项目时,会自动创建一个文件夹,其中包含以后可用于定义内部项目构建的默认构建模板。
我们已经对标准文件进行了一些更改,我们希望对其进行一些更改:
最后,我们想更新我们的工作流程,以使用最新项目模板中的最新功能。
这一切都很难维护,因为所有内容都包含在一个巨大的.xaml文件中,其中包含所有内容。
有没有办法以模块化的方式优雅地扩展xaml工作流程,最好不要影响原始的xaml?我正在考虑类似decorator pattern这样的内容,因为我可以在工作流的某些步骤之间添加行为,而无需将原始实现与其绑定。
如果将整个构建系统拆分为多个工作流,分为阶段(如编译,测试等),那么它将更易于管理,但在我们的案例中,它变得非常难以保持事情已更新。
例如,如果公司中的另一个项目需要我们添加的某些,但不是全部?如果他们也改变了模板并添加了其他东西,我们后来想要使用它会怎么样?理想情况下,可以从外部文件中将新操作“附加”到现有工作流程中。
我从未在任何更新/创建工作流文件的教程中看到这一点,所以我假设没有办法做到这一点,但我希望被证明是错误的。
答案 0 :(得分:1)
您可以创建新的工作流程,并调用内置工作流程。 如果您有困难,可以创建一个加载内置xaml的活动
private Activity createActivityFromXml(string xml)
{
if (!string.IsNullOrEmpty(xml))
{
return ActivityXamlServices.Load(new StringReader(xml));
}
return null;
}
一旦您拥有此活动(这是默认的内置工作流程),您就可以创建新的工作流程并包含此活动。这将允许您在默认工作流之前或之后添加其他活动。
编辑:通过代码创建活动(如上所示)应该是您的最新选项,我认为您可以将现有的xaml放在Visual Studio中并直接使用它,即使用可视化编辑器,您可以将其包含在新的中WF。