簡體   English   中英

工作流程/工作流程服務組合? 如何在“正常”工作流程中使用接收活動?

[英]Workflow / Workflow Service combination? How to use Receive activity on 'normal' workflow?

我們目前正在嘗試在我們的產品(.NET 4.5)中實現工作流功能。 為此,我們考慮使用Microsoft Workflow Foundation 4.5。 然而,在這個早期階段,我們遇到了一個似乎非常可行的技術問題。

簡單地說,這就是我們想要在客戶端/服務器設置中實現的目標:

  • 根據特定事件,服務器啟動工作流程
  • 工作流執行一些操作,直到涉及需要人工交互的活動。 然后它應該等待來自客戶端的消息。
  • 一個客戶端(有多個客戶端)成為所有者,因此應將其唯一ID或地址發送到工作流程
  • 工作流向該客戶端發送消息,指示它需要繼續信息(例如,電子郵件參數,如收件人,主題和正文)
  • 幾分鍾后(可能是幾分鍾到幾個小時),客戶端將信息發送到工作流程,以便它可以繼續(例如發送電子郵件)
  • 如果需要另一個人工交互,服務器再次向客戶端發送請求消息,以便它知道它應該詢問用戶信息,然后客戶端再次向工作流發送消息(如上所述)

根據我的理解,“正常”工作流程沒有端點來接收消息。 另一方面,工作流服務可以,但是使用WF服務,工作流實例將根據傳入的請求創建,而不是讓服務器控制工作流的創建(對嗎?)。

在這一刻,在我看來,我們需要工作流和工作流服務的組合。

我一直在努力解決這個問題並且搜索高低,但找不到有用的信息。

我想我們有兩個選擇:

  1. 工作流程服務; 如果我們使用工作流服務,我們可以在啟動工作流的工作流的開頭有一個Receive活動。 但是,那么客戶如何與特定的工作流程進行溝通? 工作流服務具有一個特定URL。

  2. 工作流程; 由服務器應用程序托管的正常工作流似乎是最自然的選擇路徑。 但是,我們需要一種向其發送數據的方法。 那么,是否可以升級正常的工作流程以便可以使用Receive活動? 如果是這樣,怎么樣? 消息如何在正確的工作流實例中結束?

我的問題是:有沒有人對如何解決上述問題有一些有用的指導或信息? 是否有有趣的替代品(不使用WF?)來實現這一目標? 有沒有人有關於如何將WCF消息路由到WF中正確的工作流實例的文檔?

PS:我們在客戶端上提供WCF服務。 工作流程可以與之通信。 對於沒有問題的短期運行請求,但事實是請求可能需要很長時間才能讓客戶“回答”它們。 此外,如果用戶點擊了一個繼續按鈕,客戶端只能請求該信息(由於服務器需要信息,用戶不應該只是在某個中間彈出一個彈出窗口)

是的,使用AppFabric的工作流服務是理想的,如果我正確理解您的問題,應該開箱即用。

對於您的問題“然而,那么客戶如何與特定的工作流程進行溝通?” 答案是相關性,你可以在第一個接收中輕松設置。 您只需添加一個CorrelationHandle變量,並將傳入參數(ownerid?)和CorrelatesWith的Receive's CorrelatesOn設置為該句柄。 對所有其他接收執行相同操作,並始終將傳入消息路由到正確的實例。

AppFabric將幫助您的WF服務從內存中卸載並在空閑時間過長時保持不變,在新接收到時等等時喚醒。它還可以幫助您在IIS應用程序池中設置自動啟動。 WAS將根據傳入請求激活您的工作流服務。

如果您需要進一步的具體細節,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM