2011-02-15 80 views
11

我正在寻找Windows Presentation Foundation和Workflow Foundation之间交互的一些很好的现实世界示例。我看到的大部分WF教程都演示了在控制台应用程序中的使用。我对使用丰富的WPF界面和WF的应用程序更加好奇。特别是如果它们允许用户定义的工作流程(允许用户即时设计和运行他们自己的工作流程)。WF和WPF交互的真实世界示例

回答

3

我不知道你在寻找什么,但这里有一些链接到有关在桌面使用工作流程(WPF)以这种或那种方式应用的实际现实世界的应用程序的信息:

+0

HI达米尔,你在这个答案中提到了一个单词文件链接。但现在这个文件不再可用。所以,如果你下载了这个文件,那么你可以和我分享一下。 – 2017-03-10 07:01:15

2

我来举个例子,试图让两个工作流程相互沟通。

  1. 首先你需要写一个主机。这是一个非常重要的命题,因为对于两个WF主机相互交谈,您还需要了解WCF以及线程的所有可疑概念。
  2. 然后你的WF需要通过主机与其他WF通信。这是有道理的,因为当WF等待另一个WF发送一个事件时,WF不会在内存中保持运行3个月。 WF位于数据库中,并通过主机进行通信。
  3. 好的,即使是对于更简单的场景,对于本地进程间通信,您也有CallExternalMethod活动和HandleExternalEvent活动。即使在这种情况下,您也必须通过主机进行通话,因为WF可能已被钝化到数据库。所以为了做到这一点,你必须记住要做3件事情,用ExternalDataExchangeAttribute装饰你的接口,eventargs需要从ExternalDataEventArgs派生,事件参数是可序列化的。
  4. 如果你在#3中的任何项目搞砸了,你会得到一个非直观的“InvalidOperationException”。当然,这个消息说:“服务没有实现与ExternalDataExchange属性的接口”,但是直到你看到内部异常,你才真正知道发生了什么 - 也就是说你忘记了它是可序列化的。卫生署!但我确实将它标记为可序列化。其实,一切都需要可序列化,即使是发件人。
  5. 然后,您必须通过正在使用的适当接口名称和方法名称来连接WF活动。
  6. 最后,即使是进行中的WF通信,您也必须记住将您的服务添加到ExternalDataExchangeService,而不是WF运行时。否则,它将看起来像没有人订阅该事件。更何况,这是这些错误之一,并没有真正引发错误。即难以追查!

因此,简而言之,对于试图使简单的情况下两个工作流沟通,你需要有以下办理好:

*编写Windows应用程序(主机), *线程, * WCF, * OOP概念, *系列化的所有概念, *挂钩和WF本身的非直观的细节, *忍者调试技能充沛。

出处:http://blah.winsmarts.com/2008-2-I've_been_here_before.aspx

+1

这是有用的信息......但并不真正与我的问题有关。我正在寻找使用WF和WPF应用程序的例子。 – KrisTrip 2011-02-16 18:26:34

0

的问题是相当模糊的,但这里是this博客文章我写了一个可能的awnser。基本上,我重新托管了工作流设计器,让最终用户根据需要更改工作流,并让他们在那里运行它们。当然你的问题可能意味着什么,比如如何从WPF表单调用工作流服务。

0

这是我做的一个示例项目,它结合了WF和WPF来模拟ATM机。该代码适用于处理书签,如何保持工作流程存活以及如何操作工作流程中的UI等问题。

https://wpfwf.codeplex.com/