簡體   English   中英

將數據獲取到Windows Workflow實例中

[英]Getting data into a Windows Workflow instance

目前,我們正在構建一個系統,該系統將從其他一些系統中提取有關Web服務的各種技術細節。 它有點像企業總線,但它還有更多功能。

我們決定使用Windows Workflow來處理請求。 一旦弄清需要采取哪種操作,我們將啟動專門設計用於處理該操作的工作流。 現在,我們將要調用的某些Web服務是異步的,因此工作流應等待答案。 基本思想是,我們將在最后實現回調Web服務,並且當回調“以某種方式”到達時,將其數據提供給正在等待答案的正在運行的工作流。

到目前為止,我已經看到了兩種可能性:

  1. ExternalDataExchangeService
  2. WorkflowQueuingService

第一項服務相對易於使用,但是基於事件,因此,如果錯過事件,則會錯過數據。 我們需要一個基於隊列的解決方案,因為從技術上講,即使在我們獲得同步響應之前,也可以從Web服務接收回調,該響應告訴我們不久將獲得回調。

第二項服務似乎很完美,但是在使用方式上卻有很大的局限性。 將項目放入隊列非常簡單,但是在執行此操作之前,我們需要確保隊列存在。 而且似乎只能在活動的執行覆蓋中創建隊列。 由於我們有許多不同的工作流程,因此我們有一個基本的工作流程類,它在Initialize覆蓋中做了一些工作,並且非常想在其中創建隊列,因此我們不必創建特殊的“ Initialize”活動每個工作流程都應從此開始。 我們還希望收到有關何時收到新商品歸類的通知。 因此,特定的工作流程僅需等待WaitHandle即可知道隊列中有數據。 最后,我們希望能夠從特定工作流程的代碼活動中讀取隊列中的數據(在發出WaitHandle信號后)。

是否有人有想法,不必一定要提到我提供的兩個服務,但是我們真的想使事情盡可能簡單。

在WF中,運行時或服務與實際工作流之間的所有通信均基於隊列。 ExternalDataExchangeService似乎使用事件,但這些只是圍繞WorkflowQueuingService和WorkflowQueue機制的薄薄一層。

通常,我更喜歡使用WorkflowQueuingService,因為它可以完全控制。 一旦了解了基礎知識,在大多數情況下,使用ExternalDataExchangeService甚至會更加容易。

原來我的假設是錯誤的。 我百分百確定自己已經測試了該方案並遇到了問題,但是在與同事討論之后,我重新測試了該方案,ExternalDataExchangeService正常運行。 因此,無需尋找更復雜的解決方案,現在我們只需使用ExternalDataExchangeService即可。

暫無
暫無

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

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