【发布时间】:2008-12-17 23:49:26
【问题描述】:
我需要将工作流添加到已经包含类库和网站的现有解决方案中。如果我将工作流添加到类库中,它们在逻辑上适合,我没有设计器支持。如果我在单独的项目中创建它们,我往往会有循环依赖,因为我的域对象运行工作流,而工作流需要我的域对象。
避免这个问题的首选架构是什么?
【问题讨论】:
标签: workflow workflow-foundation
我需要将工作流添加到已经包含类库和网站的现有解决方案中。如果我将工作流添加到类库中,它们在逻辑上适合,我没有设计器支持。如果我在单独的项目中创建它们,我往往会有循环依赖,因为我的域对象运行工作流,而工作流需要我的域对象。
避免这个问题的首选架构是什么?
【问题讨论】:
标签: workflow workflow-foundation
如果我理解您的问题,如果您的类库中有对 WF 的设计器支持,这样您就可以在那里添加工作流定义?
为此,您可以编辑相应的类库项目文件(C# 为 *.csproj)并添加以下行:
在第一个 PropertyGroup 中:
<ProjectTypeGuids>{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
文件底部:
对于 VS2008:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.Targets" />
对于 VS2005:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Windows Workflow Foundation\v3.0\Workflow.Targets" />
在 IDE 中重新加载项目后,您应该会获得对 WF 的支持。
但正如 gbanfill 所提到的,您也可以以不同的方式组织您的程序集。
【讨论】:
我解决该问题的方法是将域对象拆分为 POCO 程序集(称为域)和对 POCO 对象执行操作的方法程序集(称为操作)。这意味着所有其他程序集都可以包含域对象并以这种方式在它们之间传递数据。所以我的解决方案看起来像(任何程序集都可以包含列表中较低的程序集)
【讨论】: