0

我们有一种情况,其中有两个 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 的运行,您可以在此处从我的博客下载示例代码

4

1 回答 1

3

从技术上讲,工作流只是一个活动。因此,如果您编译包含 WF1 和 WF2 的项目并打开 WF1,您将在活动工具箱中看到 WF2。只需将它拖到 WF1 上,连接任何参数,就可以开始了。

于 2012-08-19T08:01:25.830 回答