我们有一种情况,其中有两个 XAML 工作流(WF1 和 WF2)。WF1 是 WF2 的超集。因此,虽然 WF2 在系统内独立于 WF1 执行,但我们希望 WF2 在 WF1 执行时在 WF1 的范围内执行。基本上在 WF1 的末尾有一个书签,在恢复该书签时,WF2 必须执行。
它们都在共享资源上运行,我们不能让这些 WF 的不同实例同时在我们的共享资源上运行。我们有一个队列机制来处理这个问题。
我想做的是在设计时以某种方式在 WF1 中构建此执行。因此,也许编写一个加载 WF2 的活动或以某种方式将 WF2 转换为编码活动并将其放入 WF1 等。我不想要的是必须复制 WF2 并将其放入 WF1 设计器中。此外,我们不希望在 WF1 中启动单独的主机进程来执行 WF2。
基本上我们的WF1和WF2都是在WorkflowServiceHost下运行的。它们不是传统的服务 WF(因此没有发送/接收活动),而是作为 WCF 服务公开的普通 WF。我们在 WorkflowServiceHost 中进行了大量自定义,涉及其持久性、跟踪等,我们的两个 WF 都从中受益。我想确保无论我们采取何种机制在 WF1 中启动 WF2,我们都不会失去这些好处。
PS:如果您想了解我们如何自定义这些 WF 的运行,您可以在此处从我的博客下载示例代码