WF和WPF互动的实际世界例子

12

我正在寻找一些关于Windows Presentation Foundation和Workflow Foundation之间交互的好的现实世界的例子。大多数WF教程演示了如何在控制台应用程序中使用WF。我更加想知道的是使用丰富的WPF界面和WF的应用程序。特别是如果它们允许用户定义工作流程(允许用户动态设计和运行自己的工作流程)。

5个回答

4

嗨,Damir,你在这个回答中提到了一个Word文件链接。但现在这个文件已经不可用了。所以如果你下载了那个文件,能否请与我分享。 - Hiren Visavadiya
@HirenVisavadiya 抱歉,虽然我在研究WF潜在项目时已经下载并阅读了该文档,但我现在已经没有它了。 - Damir Arh

2
让我以让两个工作流彼此通信的尝试为例。
首先,您需要编写一个主机。这是一个非常复杂的命题,因为要使两个WF主机彼此通信,您还需要了解WCF和所有关于线程的模糊概念。
然后,您的WF将需要通过主机与其他WF进行通信。这是有意义的,因为当WF等待另一个WF发送事件时,它不会在内存中运行3个月。WF坐在数据库中,并且通过主机进行通信。
好吧,即使是更简单的情况,对于本地进程间通信,您也需要使用CallExternalMethod活动和HandleExternalEvent活动。即使在这种情况下,您也必须通过主机进行交谈,因为WF可能已被传递到数据库中。因此,为此,您必须记住做三件事:用ExternalDataExchangeAttribute装饰您的接口,eventargs需要从ExternalDataEventArgs派生,并且事件参数是可序列化的。
如果您在#3中的任何项目中出错,则会收到一个非常不直观的“InvalidOperationException”。当然,消息会说“服务未实现具有ExternalDataExchange属性的接口”,但直到您查看内部异常,才真正知道发生了什么-即您忘记了将其标记为可序列化。哎呀!但是我标记它为可序列化。实际上,所有内容都必须是可序列化的,甚至发送者也是如此。
然后,您必须通过正确的接口名称和用于通信的方法名称连接WF活动。
最后,即使在进程内WF通信中,您也必须记住将服务添加到ExternalDataExchangeService而不是WF运行时。否则,它看起来像没有人订阅该事件。更不用说,这是其中一个不会真正抛出错误的错误。即难以追踪!
因此,简而言之,在尝试使两个工作流通信的简单情况下,您需要很好地掌握以下内容:
*编写Windows应用程序(用于主机), *线程, *WCF, *OOP概念, *所有序列化概念, *大量连接和WF本身的非直观细节, *Ninja调试技巧。
来源:http://blah.winsmarts.com/2008-2-I've_been_here_before.aspx


0
这是我做的一个示例项目,它结合了WF和WPF来模拟ATM机。代码解决了一些问题,比如处理书签、如何保持工作流活动以及如何从工作流中操作UI。

https://wpfwf.codeplex.com/


0

0
问题比较模糊,但是我在this博客文章中提供了一个可能的答案。基本上,我重新托管了工作流设计器,让最终用户根据需要更改工作流,并让他们立即运行它们。当然,你的问题可能意味着任何事情,比如如何从WPF表单调用工作流服务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接