2011-02-15 98 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/