WF和WPF交互的真实世界示例

时间:2011-02-15 19:27:17

标签: c# wpf workflow-foundation

我正在寻找Windows Presentation Foundation和Workflow Foundation之间交互的一些很好的真实示例。我看到的大多数WF教程都在控制台应用程序中使用。我对使用丰富的WPF接口和WF的应用程序更感兴趣。特别是如果它们允许用户定义的工作流程(允许用户动态设计和运行他们自己的工作流程)。

5 个答案:

答案 0 :(得分:4)

我不确定您究竟在寻找什么,但这里有一些指向使用桌面(WPF)应用程序中的Workflow的实际真实应用程序信息的链接:

答案 1 :(得分:2)

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

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

    *编写Windows应用程序(用于主机), *线程, * WCF, * OOP概念, *序列化的所有概念, * WF本身的大量连接和非直观细节, *忍者调试技巧。

    来源:HTTP://blah.winsmarts.com/2008-2-I've_been_here_before.aspx

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这是一种自我推销,因为链接是我的,but have a look

答案 4 :(得分:0)

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

https://wpfwf.codeplex.com/