我們正在嘗試在我們的產品(.NET 4.5)中實現工作流功能。爲此,我們考慮使用Microsoft Workflow Foundation 4.5。然而,在這個早期階段,我們碰到了一個看似非常可行的技術問題。工作流程/工作流程服務組合?如何在'正常'工作流上使用接收活動?
簡單地說這就是我們希望在我們的客戶機/服務器設置來實現:
- 基於特定事件的服務器將啓動工作流程
- 工作流執行一些動作,直到它涉及到一項活動這需要人類的互動。然後它應該等待來自客戶端的消息。
- 一個客戶端(有多個客戶端)成爲所有者,因此應將其唯一的ID或地址發送到工作流程
- 工作流向該客戶端發送一條消息,指出它需要信息才能繼續(例如,電子郵件參數主題和身體)
- 幾分鐘後(可能是幾分鐘到幾個小時),客戶端將信息發送到工作流程以便它可以繼續(例如發送電子郵件)
- 如果需要另一個人工交互,服務器再次向客戶端發送請求消息,以便它知道應該向用戶詢問信息,然後客戶端再次向該工作流程發送消息(如ab Ove)
對於我所瞭解的'正常'工作流沒有端點來接收消息。另一方面,工作流服務的確如此,但對於WF服務,工作流實例將根據傳入的請求創建,而不是讓服務器控制工作流的創建(對吧?)。
現在看來我們需要將工作流和工作流服務結合起來。
我一直在努力與此一段時間,現在搜索高和低,但找不到有用的信息。
我認爲,我們有兩個選擇:
工作流服務; 如果我們要使用工作流服務,我們可以在啓動工作流的工作流的開始處有一個Receive活動。但是,客戶如何才能與特定的工作流程進行溝通?工作流服務具有一個特定的URL。
工作流程; 由服務器應用程序託管的正常工作流似乎是最自然的選擇路徑。但是,那麼我們需要一種向其發送數據的方式。那麼,是否有可能升級正常的工作流程以便使用接收活動?如果是這樣,怎麼樣?消息如何在正確的工作流實例中結束?
我的問題是: 是否有人對如何解決上述問題的一些有益的指導和信息? 有沒有有趣的替代品(不使用WF?)來實現這一目標? 有沒有人有關於如何將WCF消息路由到WF中的正確工作流實例的文檔?
PS:我們在客戶端有一個WCF服務。工作流程可以與之進行溝通。對於短時間運行的請求來說,這不是問題,但問題是請求在客戶「回答」它們之前可能需要很長時間。另外,如果用戶點擊繼續按鈕,用戶只能請求信息(用戶不應該因爲服務器需要信息而在彈出窗口中彈出一個彈出窗口)
只是偶然發現了莫里斯的評論:http://msmvps.com/blogs/theproblemsolver/archive/2010/04/28/workflow-receive-activity-and-message-correlation.aspx 看來,這似乎有趣。 –