2016-11-25 68 views
0

使用WSO2 BPS 3.6.0 - 我們有一個服務通知有關事件的正在運行的BPEL流程。當沒有找到相關性時WSO2 BPS BPEL超時

利用該過程正在運行,它工作得很好(使用相關性)。但是當流程已經完成時,請求沒有得到任何迴應。如果可以提出異常,我很好,但沒有任何反應會令人討厭。如果沒有(活動)實例具有特定的相關性,是否有快速失敗的方法?

編輯:有效接收,挑選和的onEvent活動的行爲方式相同

預先感謝您

+0

它看起來像我們必須創建一個外部關聯數據庫表和調用服務將不得不查找,如果該實例仍然活躍 – gusto2

回答

0

Apache ODE上的設計是入隊提前到達傳入的消息。

實施例:處理

Receive1 - > Receive2 - > Receive3 - > Reply3

Receive1:創建一個實例,併發起的相關性。

Receive2:實例正在等待消息到達。

但是,Receive3上的消息在Receive2之前到達並因此入隊。由於以下活動是Reply3,它是一個同步呼叫,通道將超時等待響應。

一旦Receive2到達,引擎就會看到Receive3的消息已經到達並完成實例。

現在,如果另一個消息以相同的相關值到達接收3,它將再次入隊以供將來消耗在將使用相同相關值創建的新實例上。因此沒有錯誤會被報告。

注意:這是Apache ODE的行爲,除非WSO2已更改此行爲。

+0

謝謝你的答覆。我明白了這一點。事實上,服務器的行爲就像你所描述的那樣。因此,即使沒有找到相關性,呼叫也會一直等到創建一個。看起來調用服務必須在調用BPEL端點之前檢查相關性(業務對象)是否存在。 – gusto2

+0

只是好奇,你爲什麼要檢查? – Sathwik

+0

在請求處理期間(可能需要幾天或幾周),客戶端可能會提供與請求相關的更新或事件(由onEvent處理或進行關聯)。一旦過程完成,任何後續更新都必須被拒絕。因此獲取超時實際上不是一種選擇。幸運的是,我們在BPEL服務器前有一個ESB,因此可以檢查請求(業務對象)狀態。 – gusto2