从另一个工作流程中运行工作流程

时间:2010-02-22 16:06:45

标签: c# .net workflow-foundation

我目前在Windows WF中使用顺序工作流程,但需要分解流程,因为我现在有多个需要共享一项功能的工作流程。我相信有一种方法可以在WF中创建自定义代码活动,基本上可以实现这一点,但我的计划是最终放弃WF,转而支持Stateless;因此,我现在不想花时间学习如何编写自定义活动。

我唯一能想到的是创建一个包含所有“共享”行为的新WF项目,然后从需要它们的工作流程中启动它们。我现在正在研究它是怎么回事,但有人能告诉我这是不是一个坏主意?

编辑 - 我现在看到的一个“问题”是我在WF运行时使用单例,因为我以前经历过大量内存泄漏,即使我正确处理了WF RT 。我在工作流的初始调用者中跟踪所有WF实例,因此为了正确处理事件,我必须将此WF实例列表传递到工作流中,以便它可以添加我在内部启动的WF。对我来说似乎有些混乱,虽然我当然可以这样尝试。我跟踪WF实例,因为我正在尝试使用它来启用Pause / Abort / Resume功能。当用户单击GUI中的相应按钮时,它会遍历所有WF实例并调用匹配方法。

1 个答案:

答案 0 :(得分:1)

将工作流拆分为单独部分的主要问题是它们完全断开连接。这是主要工作流程不等待子工作流程完成。这可以做,但需要做一些。

要记住的另一个想法是错误处理。当子工作流失败时,主工作流不会意识到这一点,与添加子活动完全不同。

如果您需要重用逻辑,您还可以使用设计器创建复合活动。这与开发工作流非常相似,您可以根据需要在多个工作流上重复使用这些活动。