【问题标题】:Can a host application communicate with an executing workflow?主机应用程序可以与正在执行的工作流进行通信吗?
【发布时间】:2018-04-30 22:06:19
【问题描述】:

是否可以在应用程序主机和应用程序启动的当前正在执行的工作流之间进行通信?

我的情况是,工作流将在某些上下文中启动……然后进入循环,等待该上下文中的某些内容发生变化。上下文更改需要来自应用程序本身 - 它会有效地更新上下文,以便 while 循环可以退出并且工作流程可以完成。

我在这里找到了这篇旧文章,看起来像是一个解决方案,但它看起来也使用了已弃用的类,我不确定是否不再支持该功能(例如在 .NET 4.6 中):

https://msdn.microsoft.com/en-us/library/dd695719.aspx

【问题讨论】:

    标签: .net workflow-foundation-4


    【解决方案1】:

    如果您使用的是 WorkflowApplication,那么您可以将对象传递到工作流中。

    WorkflowApplication _workflowApplication = new WorkflowApplication(new workflowName, iDictionary)

    您可以通过 IDictionary 将 ref 变量传递到工作流应用程序。然后您可以在工作流之外更改其值,但检查工作流循环内的值

    或者通过 IDictionary 将委托传递给工作流应用程序,然后在工作流循环内调用委托并根据返回值进行操作。

    【讨论】:

      【解决方案2】:

      是的,实现这一点的方法是通过Messaging Activities

      消息活动允许工作流发送和接收 WCF 消息。因此,您可以从正在执行的工作流与您自己的 WCF 服务来回通信。更新状态或请求批准以在 WF 中继续前进。

      我之前用过的最好的例子是this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        相关资源
        最近更新 更多