如何在单个工作流服务(WF4)中定义多个Receive活动

Avi*_*lon 4 workflow-foundation workflow-foundation-4

我有一个工作流服务(在.xamlx文件中声明定义),当前包含一个Recieve活动.您可能知道,服务通常会暴露多个操作.这也是我想用我的服务做的事情.如何为此服务添加更多操作?没有WF,那真的很容易.只需添加任意数量的方法,然后使用OperationContract进行装饰.然后,客户端可以调用服务提供的任何操作.另一方面,在WF4中,当我尝试向服务添加另一个Recieve活动时,我只能在现有活动之前或之后添加它.我以为我可能会使用Pick活动来实现这个目标,但我只是在猜测.这是我怎么做的?或者我应该添加另一个工作流服务并将Receive活动添加到它?(听起来不是一个好的解决方案).或者也许有正确的方法来实现这一目标?

PS正如你所知,我对WF一般都是新手,特别是WF4.

谢谢,Avi

Mau*_*ice 11

在工作流开始时拥有单个Receive活动并不罕见,毕竟通常只有一个事件启动工作流.一旦启动,它可以等待其他消息到达.但是,没有理由不让工作流同时监听多个不同的内容,正如您所提到的,Pick活动是可行的方法.只需在设计图面上放置一个Pick,添加尽可能多的PickBrache和Receive活动,你就可以了.

  • 添加第一个接收开始在顶部启动工作流程.发送响应后,添加Pick活动并将其他两个Receive活动添加到任一分支.现在可以使用两个不同消息之一恢复正在运行的工作流程.如果要接受多个调用,请在DoWhile活动中放置Pick活动,以在处理消息后重新激活"Pick and Receive". (3认同)