2011-10-31 49 views
0

我已經創建了一個簡單的工作流服務應用程序(WF1),然後我添加了一個Windows窗體客戶端到我的解決方案與另一個工作流活動(WF2)。然後,我已經爲WF1添加了適當的服務參考。 當我嘗試使用我的服務引用來添加從WF2(Windows窗體)到WF1(工作流服務應用程序)的消息調用...那裏沒有代表我的服務參考WF1的工具箱中的任何項目!它缺失。試圖添加它沒有運氣...我迷路了。有任何想法嗎?Windows工作流4.0服務參考不在工具箱中顯示

+0

必須通過右鍵單擊工具箱並瀏覽找到WF1才能嘗試使用「Chosse Items ...」。 –

+0

是的,當我選擇裝配時,它告訴我它是無效的。 – sdgian

+0

你能解釋一下更好一點你想做什麼?我知道您想構建WorkflowServices,但我不明白爲什麼要將WorkflowService用作其他Workflow中的活動。你想測試你的WorkflowService嗎?如果您將服務引用添加到您的winForm客戶端並將WorkflowService作爲WCF服務使用,不是更好嗎?我只是假設你需要這樣做。 –

回答

0

在觀看視頻並基於上面的第二條評論之後,我認爲沒有必要嘗試將WorkflowService用作其他工作流程內的活動,與視頻顯示的方式相同。意識到,在視頻中,他只是打電話給其中一個服務操作。 Workflow控制檯模板項目允許以簡單的方式調用服務操作,方法是將操作包裝到Activity中,從而免除您必須實例化代理客戶端的麻煩。還有其他方法可以實現相同的結果。

我該怎麼做:將您的WinForms客戶端中的服務引用添加到WorkflowServiceApp,WF1(您已經這樣做了)。在第二個工作流程(WF2)內部,實例化一個WF1類型的代理並調用該服務直接暴露的操作,就像調用任何正常的服務操作(如果您不在工作流中)。它基本上正在使用WCF服務。一種選擇是創建一個服務類型的變量,在例如Assign活動中實例化一個新的引用,創建一個服務結果類型的變量,最後調用服務,或者在其他Assign或InvokeMethod活動中。

首先分配活動:

proxy = New WF1Client() //That has to be the name of you client as created by the Service Reference 

二Assign活動:

Result = proxy.MyMethod(...) //The call to the operation. You would have to create the variables to hold the result and any input parameters you wish to pass to the operation. 

這將是直線前進。您不需要將服務本身用作活動。

如果仍然需要在設計器中使用一個單獨的活動或在其他工作流之間共享,請創建一個Code Activity,調用其中的服務操作(實例化代理,設置輸入等),編譯並且您的代碼活動將顯示在工具箱中,以便您可以在WF2中使用它。此外,如果您創建ClassLibrary並實施您的活動(無論是WF還是custom activities),都可以通過引用ClassLibrary在不同的工作流項目中重複使用它們。如果您可以控制WF1的開發,則可以使用此方法重新使用您的活動。

希望這會有所幫助。

+0

非常感謝您的回覆!我也可以使用VS2010附帶的消息傳遞活動並將該服務作爲任何其他Web服務調用? – sdgian

+0

是的。消息傳遞活動允許將工作流作爲WCF服務公開。接收活動就像一個WCF服務合同與服務操作([1](http://social.msdn.microsoft.com/Forums/en-AU/wfprerelease/thread/a077a156-bd06-438b-9b90-ec1024b12165 )),因此可以將WCF服務中的WorkflowService作爲任何其他常規WCF服務使用。 –