异步调用子工作流活动

时间:2012-02-14 20:17:24

标签: workflow-foundation-4 workflow-activity workflowservice

小组:

我需要异步调用WF服务(XAMLX)中的WF活动(XAML)。我已经引用了Microsoft.Activities.Extensions框架,我正在运行状态机的平台更新1 - 所以如果解决方案已经在其中一个库中,我就准备好了!

现在,我需要异步调用该活动(XAML) - 但它有一个输出参数需要在服务中设置一个变量(XAMLX)。有人可以帮我解决一下吗?

谢谢!


*更新*

现在我可以发布图片, *我认为* ,因为我有足够的声誉!让我把一对夫妇带到这里,试着更好地解释我的问题。第一张图片是WF服务,其中包含工作流程的两个入口点 - 第二张是工作流程本身。

此工作流是一种不断重新启动的编排机制,并具有一些故障转移机制(例如,在错误阈值和软退出时退出),以便我们可以使用WF管理持久事务队列!

现在,我们让这个工作流程在所有WF服务中运行良好,因为我们可以调用服务,获得响应并将该响应的值发送回触发器中的另一个入口点以发出软退出。但是,有一个新要求要求我们将工作流本身作为另一个项目中的WF活动,并在WF服务应用程序项目中具有接收/发送 - 回复序列。

然而,我们需要能够启动这个工作流程而忘记它 - 然后让它知道以后需要软退出 - 但是由于WF在单个线程上执行,这已成为一个最充满挑战。

WF Service Sequence

WF Activity Sequence

1 个答案:

答案 0 :(得分:2)

严格地说,在XAML活动中,Parallel和ParallelForEach是你执行异步的方式。

工作流调度程序仅使用单个线程(非常类似于UI),因此正在运行的任何活动通常都将在同一个线程上运行,除非它实现AsyncCodeActivity,在这种情况下,您只需将调度程序线程交还给运行时在等待AsyncCodeActivity实现调用的任何异步代码的回调时。

因此,您确定这是您想要实现的目标吗?您是否想在发送初始回复后运行它?在这种情况下,请在发送回复后放置您的活动。

如果这些建议无法解答您的问题,请提供更多信息./

<强>更新 提出的原始要求(将实现与服务接收/发送活动分开)实际上可以通过将目标活动作为服务托管来解决。请参阅以下链接 http://blog.petegoo.com/index.php/2011/09/02/building-an-enterprise-workflow-system-with-wf4/